ORACLE - DAY 56

BUMSOO·2024년 10월 30일

RAC 설치

  • 19C랑 설치 개념은 같으나 사양이슈로 11g로 설치한다.
  • 리눅스 OS버전을 원래 7로 했었는데 5버전으로 낮춰서 진행
  • 기존에 하던건 DB하나에 인스턴스 하나였는데 그러면 부하가 심하니 RAC는 DB는 공유하고 인스턴스가 여러개인 형태이다.
  • DB스토리지를 ASM으로 구축함

호스트키 미리 확인하기

  • DHCP서버에서 IP가 최소 3개는 필요하다.
    192.168.56.101 ~ 192.168.56.254 사이에서 마음대로 사용가능하다.

RAC1 서버 만들기

  1. OS는 linux, 버전은 Oracle Linux(64-bit)

  2. 램 2G이상이면 설치가능(기본), 프로세서 2개

  3. 하드디스크 50G -> 완료까지

  4. 광학드라이브를 다운받은 이미지로 설정

  5. 네트워크 설정(중요)

  • 어댑터1 - NAT
  • 어댑터2 - 호스트 전용 어댑터(바깥쪽에서 붙도록)
  • 어댑터3 - 어댑터에 브릿지(캐시퓨전 해야 해서-안에서 정보 오갈 수 있게, 프라이빗 한 망)
  1. linux 서버에서도 사용할 수 있는 window 공유폴더 설정
  • rac_file 폴더로 설정
  • 자동마운트
  1. 상단 시작 누르고 마우스 잠기면 엔터, 이 화면 나오면 스킵

  2. 이 화면 다음 언어는 모두 영어로 하고 yes 누르기

  3. 이거 설정. 디스크 파티션임

  4. NEW 들어가서 Mount Point에 /boot입력

  • 다른건 일단 냅두기 부트 디렉토리 만드는 작업
  1. 다시 NEW들어가서 Mount Point는 놔두고 파일시스템 타입을 swap 공간으로 설정하고 size는 4096로 변경(4GB로 한건 보편적으로 메모리의 2배수, 메모리 부족할때 스왑공간을 메모리처럼 사용한다)

  2. 다시 NEW들어가서 Mount Point /로 나머지 공간은 루트 디렉토리가 사용할 수 있도록 fill to~ 클릭

  1. 나머지는 next한다.
  1. 여기서는 설정해도 나중에 다시해야해서 지금은 보류하고 다음으로 이동한다.

  2. 지역은 서울로 설정

  3. root 비밀번호 설정

  4. Customize now로 체크 하고 next

  5. Development에 4가지 체크(체크하지 않으면 나중에 설치하라고 나와서 체크한다.)

  6. Base System 설정이 중요하다.

  • System Tools 체크하고 Optional packages 체크

  • ocfs~ 맨처음 나오는거 체크

  • oracle validated~ 체크하고 바로 밑에 oracleasm 체크

  • oracleasm support 체크

  • sysstat 체크

  • 다 잘 체크했으면 19/67개 체크된다.

  1. 이 부분은 next

  2. 다 설정되면 reboot 한다.

  3. reboot된후 forard로 넘어가고 라이센스는 ok

  4. kdump는 넘어가고 방화벽은 disabled

  5. SELinux도 disabled

  6. 시간은 현재 시간으로 설정

  7. 유저는 각자 알아서 만들면 된다.

  • itwill/itwll 유저로 만듬
  1. 사운드카드도 기본설정으로 넘어간다.

  2. finish

  3. 기다리면 해당화면이 나오는데 root/oracle로 접속해준다.

  4. 윈도우파일을 리눅스에서 써야하니깐 설정

  • 이렇게하면 ctrl + alt 안눌러도 윈도우로 왔다갔다 이동 가능하다.

  • 이거 더블클릭

  • run in termial 클릭

  • 마우스 좌표가 안맞는다. 상단 클릭해서 방향키로 이동해야한다.
    shutdown - restart 하면 마우스 좌표가 고정된다.

  1. ip 설정
  • 아래 3개의 device만 있어야 한다.

  • active 되어있는 device는 deactive로 변경

  • 이더넷0으로 들어가면 인터넷망이 자동활성화 되어있다.

  • 이더넷1로 들어가서 ip주소를 설정해줘야한다.

    • 여기서는 Activate device when computer starts가 꺼져있는데 켜줘야한다.
    • 학원 공유 ip때문에 다른사람들과 같은 ip를 사용하면 에러가 발생하였다.
    • 나는 126~130번을 부여받았다.
  • 이더넷2로 들어가서 private한 주소로 설정
    *여기서도 Activate device when computer starts가 꺼져있는데 켜줘야한다.

    • 내부망이라서 3번째를 55로 변경한다.
    • 내가 부여받은 126~130 안에서 사용해야한다.
  • DNS탭에서 호스트 이름을 설정해야한다.

    • rac1로 설정
  • 3개 이더넷을 모두 active상태로 변경후 나가기

  1. 바탕화면에서 마우스 우클릭 -> open terminal
    hostname이 rac1로 설정되어있는지 확인

  2. 설정한 ip주소 확인
    ip a ls

  3. putty로 public ip주소로 접속되는지 확인

RAC1 환경설정

  1. putty를 통해 rac1 서버로 접속 후 ip주소, hostname 확인
    ip a ls
    hostname

  2. host이름과 ip주소 매핑하기
    vi /etc/hosts 안에 내용 입력

## Public
192.168.56.126 rac1
192.168.56.127 rac2

## Private
192.168.55.126 rac1-priv
192.168.55.127 rac2-priv

## Virtual
192.168.56.128 rac1-vip
192.168.56.129 rac2-vip

## grid scan
192.168.56.130 rac-scan
  1. 리소스 낭비를 줄이기 위해 불필요한 서비스 종료
chkconfig --level 123456 xinetd off
chkconfig --level 123456 sendmail off
chkconfig --level 123456 cups off
chkconfig --level 123456 cups-config-daemon off
chkconfig --level 123456 smartd off
chkconfig --level 123456 iptables off
chkconfig --level 123456 ip6tables off
chkconfig --level 123456 bluetooth off

  1. vi /etc/fstab 디렉터리로 들어가서 수정작업
    이거를
tmpfs                   /dev/shm                tmpfs   defaults        0 0

defaults를 size=1500m 으로 변경한다.

tmpfs                   /dev/shm                tmpfs   size=1500m      0 0
  1. /sbin/systcl -p 명령어를 입력하면 커널 환경값이 보인다.
[root@rac1 ~]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
fs.file-max = 6815744
kernel.msgmni = 2878
kernel.msgmax = 8192
kernel.msgmnb = 65536
kernel.sem = 250 32000 100 142
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.sysrq = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 3145728
net.ipv4.ip_local_port_range = 9000 65500
vm.min_free_kbytes = 51200
  1. 리눅스 시스템에서 사용자별 시스템 자원 사용 한도(파일 개수, 메모리, CPU 등)를 설정하는 구성 파일 확인해보기
    cat /etc/security/limits.conf
  1. session required pam_limits.so를 /etc/pam.d/login 파일에 추가하는 것은 사용자가 로그인할 때 limits.conf 파일에 설정된 자원 제한 (예: 최대 파일 개수, 프로세스 수, 메모리 사용량 등)이 적용되도록 하는 설정입니다. 이를 통해 로그인 세션 동안 사용자의 시스템 자원 사용을 제한하여 시스템의 안정성과 보안을 강화할 수 있습니다.
  • vi /etc/pam.d/login : 리눅스 시스템에서 사용자별 시스템 자원 사용 한도(파일 개수, 메모리, CPU 등)를 설정하는 구성 파일
  1. vi /etc/modprobe.conf 안에 내용 입력
  • 커널 기반 타이머를 사용하여 시스템 테스크 스케줄러에 발생하는 딜레이를 정기적으로 점검하는 방식
    options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
  1. modprobe -v hangcheck-timer
  • hangcheck-timer 커널 모듈을 로드하여 시스템이 일정 시간 동안 멈춘 상태를 감지하고, 필요 시 재부팅하도록 설정하는 명령어
  1. 시간 동기화 방식, rac1와 rac2의 노드간의 시간은 반드시 동일해야 한다.
vi /etc/rc.local

/sbin/modprobe hangcheck-timer
rdate -s 203.248.240.140

  1. 이름 변경작업
 mv /etc/sysconfig/ntpd /etc/sysconfig/ntpd.original
 mv /etc/ntp /etc/ntp.origina
 mv /etc/ntp.conf /etc/ntp.conf.original

  1. 공유폴더로 설정한 파일로 이동
    cd /media/sf_rac1/
  • ls로 확인해보면 oracleasmlib-2.0.4-1.el5.x86_64.rpm 파일이 보임
  1. 패키지 설치
    rpm -Uvh oracleasmlib-2.0.4-1.el5.x86_64.rpm
  • oracle관련 패키지 확인
    rpm -qa | grep oracle

  • 조금전 설치한 파일

  1. 그룹 확인
  • oracle linux os에서만 있는 그룹들이다
    cat /etc/group

  • 오라클 설치하면서 자동으로 생긴 그룹
    oinstall:x:54321:
    dba:x:54322:oracle

  • 버츄얼박스 그룹
    vboxsf:x:157:

  1. 그룹 추가
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 505 asmdba
groupadd -g 506 asmoper
  • 추가한거 확인
    cat /etc/group
  1. 계정정보 확인
    cat /etc/passwd
  • oracle 계정 정보 확인
    id oracle
  1. 유저 그룹 변경
    usermod -g oinstall -G dba,oper,asmadmin,asmdba,asmoper,vboxsf oracle
  • 변경값 확인
    id oracle
  1. oracle 계정 패스워드 변경
    passwd oracle

  2. 설치 디렉토리 생성

mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/oracle
mkdir /u01/app/oracle/cfgtoollogs
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1   
chown -R oracle:oinstall /u01			 
chmod -R 755 /u01
  1. 권한 변경 확인
    ls -Rl /u01

  2. oracle 계정으로 변경
    su - oracle

  3. 환경변수 선언

vi .bash_profile

export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac1							
export ORACLE_UNQNAME=racdb								
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1					
export GRID_HOME=/u01/app/11.2.0/grid
export ORACLE_SID=racdb1								
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
  1. .grid_env라는 파일은 없기때문에 입력모드에서 내용을 넣은뒤 생성해주면 된다.
vi /home/oracle/.grid_env		

export ORACLE_SID=+ASM1 # +ASM2						
export ORACLE_HOME=$GRID_HOME
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  1. .db_env 해당 파일도 없기때문에 입력모드에서 내용 입력
vi /home/oracle/.db_env

export ORACLE_SID=racdb1 # racdb2
export ORACLE_HOME=$DB_HOME
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  1. .bashrc 파일에 내용 추가
  • 별칭으로 빠르게 수행하기 위해서이다.
vi /home/oracle/.bashrc			

alias grid_env='. ~/.grid_env'
alias db_env='. ~/.db_env'
  1. root 계정으로 이동 후 os 종료
    shutdown -h now

ASM DISK 생성

ASM(Automatic Storage Management)은 Oracle Database에서 제공하는 스토리지 관리 솔루션으로, 데이터베이스의 스토리지를 효율적이고 자동으로 관리하도록 설계되었습니다. ASM은 디스크를 디스크 그룹으로 묶어 데이터를 자동으로 분산하여 성능과 안정성을 높입니다. 주요 기능으로는 데이터의 스트라이핑(Striping)미러링(Mirroring)이 있습니다. 스트라이핑을 통해 I/O 성능을 최적화하고, 미러링을 통해 데이터 복제 및 장애 복구 기능을 제공합니다.

  1. ASM DISK 생성(virtual dist를 만드는거다. 현장에서는 실제 디스크가 들어간다.)
    이 공간에 만들어지는거다.

  2. cmd를 관리자권한으로 실행

  3. 디렉터리로 이동
    cd C:\Program Files\Oracle\VirtualBox

  4. 버츄얼 디스크 5gb짜리 하나 생성
    VBoxManage.exe createhd --filename d:\rac\asm_disk1.vdi --size 5120 --format VDI --variant fixed

  5. 순차적으로 한개씩 다음 디스크들도 만들면 된다.
    VBoxManage.exe createhd --filename d:\rac\asm_disk2.vdi --size 5120 --format VDI --variant fixed
    VBoxManage.exe createhd --filename d:\rac\asm_disk3.vdi --size 5120 --format VDI --variant fixed
    VBoxManage.exe createhd --filename d:\rac\asm_disk4.vdi --size 5120 --format VDI --variant fixed
    VBoxManage.exe createhd --filename d:\rac\asm_disk5.vdi --size 5120 --format VDI --variant fixed
    VBoxManage.exe createhd --filename d:\rac\asm_disk6.vdi --size 5120 --format VDI --variant fixed

  6. 공유디스크로 변경하는 작업이다.
    VBoxManage.exe modifyhd d:\rac\asm_disk1.vdi --type shareable
    VBoxManage.exe modifyhd d:\rac\asm_disk2.vdi --type shareable
    VBoxManage.exe modifyhd d:\rac\asm_disk3.vdi --type shareable
    VBoxManage.exe modifyhd d:\rac\asm_disk4.vdi --type shareable
    VBoxManage.exe modifyhd d:\rac\asm_disk5.vdi --type shareable
    VBoxManage.exe modifyhd d:\rac\asm_disk6.vdi --type shareable

  7. RAC 서버에 디스크를 끼어넣어주는 작업이 필요하다

  • 해당 버튼으로 추가해주면 된다.

  • NOT ATTACHED로 되어있는것들을 추가해주면 된다.

  • 하나씩 더블 클릭 하면 된다.

  • 확인하면 된다.

  • 요약 : 저장소 -> 컨트롤:SATA -> 하드디스크 추가하기 -> 기존디스크 선택-> asm_disk1.vdi
    다시 서버 시작 하면 된다.
    하지만 실제로 사용은 못하고 포맷작업을 해야한다.

  1. os 시작 시킨후 putty로 접속하지만 접속이 안된다.
    terminal에서 ip a ls로 검색해보면 ip 주소가 다른걸로 되어있다.
  • virtual box에서 접속 후 inactive 상태인걸 active로 변경해야 하는데 설정이 제대로 안되어있었다.
  1. 다시 putty에서 root 유저로 로그인

  2. 공유폴더로 이동
    cd /media//sf_rac1/linux_11gR2_grid/linux_11gR2_grid/grid/rpm/

  3. 패키지 설치
    rpm -Uvh cvuqdisk-1.0.7-1.rpm

  4. 홈디렉터리로 이동
    cd

  5. Oracle ASM 라이브러리를 위한 초기 설정을 구성하는 명령어로, 대화식으로 ASM 설정 옵션을 지정
    oracleasm configure -i

  • asm 오너는 oracle이라는 유저로 사용

  • 이 오너의 그룹은 oinstall로 설정

  • 이후 부팅할때 자동으로 실행되게 설정

  1. Oracle ASM(Automatic Storage Management) 서비스를 초기화하고 시작하는 명령어로, ASM 관련 장치를 사용할 준비를 합니다.
    oracleasm init

  2. 새롭게 추가한 디스크를 적용하기 위해 포맷작업
    fdisk -l : 시스템에 연결된 모든 디스크와 파티션 정보를 리스트 형태로 표시

  • sdb~sdg까지 추가된걸 확인할 수 있다.
  1. 추가한 디스크들을 파티션 작업을 해줘야 한다.
    fdisk /dev/sdb
    fdisk /dev/sdc
    fdisk /dev/sdd
    fdisk /dev/sde
    fdisk /dev/sdf
    fdisk /dev/sdg

    n 입력
    primary key인 p 입력
    파티션 번호인 1 입력
    cylinder 전체 이용 엔터
    사이즈 전체 이용 엔터
    저장하겠다 w

  2. 다시 fdisk로 확인해보기, 포맷팅 되었다.
    fdisk -l

  3. fdisk 만들어진거 확인
    fdisk -l |perl -ne 'print if/^\/dev\/sd[b-g]\d/'

  4. 공유디스크 생성
    oracleasm createdisk ASMDISK01 /dev/sdb1;
    oracleasm createdisk ASMDISK02 /dev/sdc1;
    oracleasm createdisk ASMDISK03 /dev/sdd1;
    oracleasm createdisk ASMDISK04 /dev/sde1;
    oracleasm createdisk ASMDISK05 /dev/sdf1;
    oracleasm createdisk ASMDISK06 /dev/sdg1;

  5. Oracle ASM에서 새로 추가되거나 제거된 디스크를 검색하고 디스크 목록을 업데이트하는 역할을 합니다.
    /etc/init.d/oracleasm scandisks

  1. 생성된 ASM 디스크 확인
    oracleasm listdisks

  2. 서버 복제하기 위해 일단 서버 닫음
    shutdown -h now

RAC2 서버 만들기

  1. 서버 복제
  1. 복제 완료
  • 하지만 asm디스크의 명칭이 다르기 때문에 수정 작업이 필요하다.
  1. 저장소에 있는 디스크들을 삭제해준다.

  2. 그리고 추가해줘야한다.

  3. rac2 서버 시작

  1. bak는 삭제해준다

  2. rac2서버의 이더넷 ip주소 설정

  3. inactive 되어있는 상태를 active로 상태로 변경해준다.

  4. 현재 설정되어 있는 ip주소들 확인

  • 터미널창에서 ip a ls
  1. vm의 gui환경에서 설정하던걸 cli환경에서도 설정할 수 있다.
  • /etc/sysconfig/network-scripts/ 디렉터리는 리눅스 시스템에서 네트워크 인터페이스 설정 파일을 저장하는 위치로, ifcfg-로 시작하는 파일들이 각 인터페이스의 IP, 게이트웨이, DNS 등 네트워크 구성을 정의합니다.
    cd /etc/sysconfig/network-scripts/
  • ip주소를 수정작업할때 네트워크를 중지시켜야 한다.(모든 네트워크 인터페이스 deactive)

    • network service 중지
      service network stop

    • network service 시작
      service network start

    • network service 재시작
      service network restart

  • hostname이름을 수정하고 싶으면 해당 파일을 수정하면 된다.
    cat /etc/sysconfig/network

    • /etc/hosts 에서도 수정해줘야한다.

RAC2 서버 마우스로 복제가 안되는 경우

  1. cmd에서 rac1서버 이미지를 rac2 이름으로 변경해서 복제
cd C:\Program Files\Oracle\VirtualBox
VBoxManage.exe clonehd D:\rac\rac1\rac1.vdi D:\rac\rac2\ra2.vdi
  1. Oracle VM에서 새로만들기
  1. 하드웨어 설정

  2. 복제해놓은 rac2.vdi를 사용해야 하기 때문에 기존 가상 하드디스크 파일사용

RAC2 환경설정

  1. 오라클 계정으로 접속
    su - oracle

  2. .bash_profile 수정

vi .bash_profile

export PATH
export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac2 <- 수정
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export GRID_HOME=/u01/app/11.2.0/grid
export ORACLE_SID=racdb2 <- 수정
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
  1. .grid_env 내용도 수정해야한다
vi .grid_env

export ORACLE_SID=+ASM2 <- 수정
export ORACLE_HOME=$GRID_HOME
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  1. .db_env 내용도 수정해야한다.
vi .db_env

export ORACLE_SID=racdb2 <- 수정
export ORACLE_HOME=$ORACLE_HOME <- 수정 
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  1. root계정으로 이동 후 reboot하기

  2. rac1 서버도 시작

  3. 네트워크가 잘 설정되어 서로 서버가 연결이 되어있는지 핑 던져서 확인
    RAC1
    su - oracle
    ping -c 3 rac2

    RAC2
    su - oracle
    ping -c 3 rac1

  4. private 한 네트워크 망으로도 핑 던져보기
    RAC1
    ping -c 3 rac2-priv

    RAC2
    ping -c 3 rac1-priv

Grid s/w 설치

  1. mobaxterm 실행
  • ssh 접속
    rac1과 rac2가 네트워크 연결이 되어있기 때문에 rac1에서만 설치해도 rac2에도 설치가 된다.
  1. rac1 ip주소 입력, oracle 유저로 접속

  2. gird환경으로 변경

  • grid_env 실행
    grid_env

  • grid 환경변수로 설정되었는지 확인
    echo $ORACLE_SID

  1. 공유폴더로 이동
    cd /media/sf_rac1/linux_11gR2_grid/linux_11gR2_grid/grid/

  2. runinstall 수행
    ./runInstaller

  3. 설치 window 마법사가 나온다.

  • 우리는 첫번째 옵션을 선택
  • 두번째 선택지는 rac는 설치하지 않고 asm환경만 설치하고 싶을때 하는 옵션
  1. advanced installation 선택

  2. 언어는 영어 기본으로 next

  3. /etc/hosts 밑에 정의해놓은 이름인 rac-scan으로 설정해놓았다.

  4. add로 rac2를 등록해야한다.

  5. /etc/hosts에 등록한 virtual ip name을 사용하는거다.

  6. rac1과 rac2가 서로 상호이동되게 설정

  • 네트워크가 설정 안되어있으면 해당 작업이 오류난다.
  • 성공 - next
  1. 각 이더넷에 대해 설정

  2. asm사용을 설정

  3. data라는 디스크 그룹에 rac의 저장소를 만든다.

  • normal은 이중화

  • high는 삼중화

  • 원래는 공유디스크가 보여야 하는데 보이지 않는다.

  • 입력해주면 공유디스크가 보인다
    /dev/oracleasm/disks/*

  1. 4개만 체크한다.
  • normal일 경우 디스크 최소 2개는 필요하다.(이중화때문에)
  1. 각 계정의 비밀번호는 통합한다.

  2. 인텔리전트는 사용하지 않는다.

  3. asm 그룹이 자동으로 설정되어있다

  4. 오라클 소프트웨어, 그리드 소프트웨어가 설치되어야할 위치

  5. 인벤토리 경로 설정

  6. 경고는 무시

  7. summary

  8. 설치가 되면 스크립트가 나온다.

  9. 스크립트 수행

  • root 유저에서 수행해야 한다.

  • rac1에서 1번 스크립트를 돌리고 나서 rac2에서 1번 스크립트를 돌린다.

  • rac1에서 2번 스크립트를 돌리고 나서 rac2에서 2번 스크립트를 돌린다.
    • local bin 디렉토리는 그대로 사용하면 된다.
  1. 팝업창 나오면 yes
  1. close 후 오라클 계정으로 이동 후 crs_stat -t 명령어 입력
    su - oracle
    crs_stat -t : oracle Clusterware에서 클러스터 자원들의 상태를 표 형식으로 출력하는 명령어
    하지만 설치시 오류로 데몬이 조회되지 않는다.

Grid s/w 삭제 후 재설치

RAC1 node에서 수행

  1. Oracle Grid와 관련된 파일 제거
cd /u01/app/11.2.0/grid
rm -rf *
  1. Oracle 관련 초기화 파일 제거
cd /u01/app/oraInventory
rm -rf *

rm -rf /etc/ora*

rm -f /etc/init.d/init.cssd
rm -f /etc/init.d/init.crs
rm -f /etc/init.d/init.crsd
rm -f /etc/init.d/init.evmd
rm -f /etc/rc2.d/K96init.crs
rm -f /etc/rc2.d/S96init.crs
rm -f /etc/rc3.d/K96init.crs
rm -f /etc/rc3.d/S96init.crs
rm -f /etc/rc5.d/K96init.crs
rm -f /etc/rc5.d/S96init.crs
rm -Rf /etc/oracle/scls_scr
rm -f /etc/inittab.crs
  1. ASM 디스크 검색 및 조회
  • scandisks는 시스템의 ASM 디스크를 다시 스캔하고, listdisks는 현재 사용 가능한 ASM 디스크 목록을 보여줍니다.
[root@rac1 ~]# oracleasm scandisks

[root@rac1 ~]# oracleasm listdisks
ASMDISK01
ASMDISK02
ASMDISK03
ASMDISK04
ASMDISK05
ASMDISK06
  1. oracleasm querydisk -p ASMDISK01 명령어는 ASM 디스크 "ASMDISK01"의 상태와 경로 정보를 확인하는 명령어입니다
[root@rac1 ~]# oracleasm querydisk -p ASMDISK01
Disk "ASMDISK01" is a valid ASM disk
/dev/sdb1: LABEL="ASMDISK01" TYPE="oracleasm"
  1. ASM 디스크 삭제
[root@rac1 ~]# oracleasm deletedisk ASMDISK01
Clearing disk header: done
Dropping disk: done
[root@rac1 ~]# oracleasm deletedisk ASMDISK02
Clearing disk header: done
Dropping disk: done
[root@rac1 ~]# oracleasm deletedisk ASMDISK03
Clearing disk header: done
Dropping disk: done
[root@rac1 ~]# oracleasm deletedisk ASMDISK04
Clearing disk header: done
Dropping disk: done
  1. 디스크 파티션 확인 및 새로 생성
  • 지정된 디스크 장치 목록을 표시하고, 각 디스크를 파티셔닝합니다.
[root@rac1 ~]# fdisk -l |perl -ne 'print if/^\/dev\/sd[b-g]\d/'
  1. ASM 디스크 새로 생성
oracleasm createdisk ASMDISK01 /dev/sdb1;
oracleasm createdisk ASMDISK02 /dev/sdc1;
oracleasm createdisk ASMDISK03 /dev/sdd1;
oracleasm createdisk ASMDISK04 /dev/sde1;
  1. 소유권 변경
chown -R oracle.oinstall  /u01/app/11.2.0/grid

RAC2 node에서 수행

  1. Oracle Grid와 관련된 파일 제거
[root@rac2 ~]# cd /u01/app/11.2.0/grid
[root@rac2 grid]# rm -rf *
  1. Oracle 관련 초기화 파일 제거
[root@rac2 ~]# cd /u01/app/oraInventory
[root@rac2 oraInventory]# rm -rf *

[root@rac2 ~]# rm -rf /etc/ora*

rm -f /etc/init.d/init.cssd
rm -f /etc/init.d/init.crs
rm -f /etc/init.d/init.crsd
rm -f /etc/init.d/init.evmd
rm -f /etc/rc2.d/K96init.crs
rm -f /etc/rc2.d/S96init.crs
rm -f /etc/rc3.d/K96init.crs
rm -f /etc/rc3.d/S96init.crs
rm -f /etc/rc5.d/K96init.crs
rm -f /etc/rc5.d/S96init.crs
rm -Rf /etc/oracle/scls_scr
rm -f /etc/inittab.crs
  1. ASM 디스크 검색 및 조회
  • RAC1에서 다시 재설치한 asm디스크가 조회된다.
[root@rac2 ~]# oracleasm scandisks

[root@rac2 ~]# oracleasm listdisks
ASMDISK01
ASMDISK02
ASMDISK03
ASMDISK04
ASMDISK05
ASMDISK06
  1. 소유권 변경
chown -R oracle.oinstall  /u01/app/11.2.0/grid

grid s/w 재설치

  1. 재설치 완료되어서 script창

  2. 스크립트 수행

  • root 유저에서 수행해야 한다.

  • rac1에서 1번 스크립트를 돌리고 나서 rac2에서 1번 스크립트를 돌린다.

  • rac1에서 2번 스크립트를 돌리고 나서 rac2에서 2번 스크립트를 돌린다.

    • local bin 디렉토리는 그대로 사용하면 된다.
    • 이미 존재하는 파일은 overwrite 하면 된다.
  1. 스크립트 수행이 끝나면 oracle유저로 접속 후 Oracle Clusterware에서 클러스터 자원들의 상태를 표 형식으로 출력해보기
    crs_stat -t

RAC1

RAC2

  1. 설치 완료

oracle s/w 설치

  1. db환경변수로 변경
    db_env
    echo $ORACLE_SID
  1. 공유폴더 안에 database디렉터리로 이동
    cd /media/sf_rac1/database/database

  2. runinstaller 시작
    ./runInstaller

  3. 지원받은 계정이 없기때문에 해제하고 넘어간다.

  4. 소프트웨어만 설치

  5. rac1 과 rac2를 왔다갔다 하기위해 ssh connectivity 설정

  6. 언어는 영어로 설정

  7. 엔터프라이즈로 선택해야 옵션창이 활성화 된다.

  • standard - cpu가 4개이하

  • enterprise - cpu가 4개이상

  • 체크는 되어있지만 전부 유료이다.

  1. 소프트웨어 설치위치가 버그성으로 dbhome_2로 나오는데 dbhome_1로 수정해야한다.

  2. 설정값 그대로 설정

  3. 버그성으로 failed가 뜨는데 저 패키지는 없는 패키지이다.

  • ignore all 체크하고 넘어가면 된다.
  1. summary

  2. 설치하다보면 오류가 발생한다.

  • /u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk 이 파일을 수정해야한다.
  1. putty로 rac1서버에 oracle 유저로 접속
    vi /u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
  • 문자열 찾기
    :/emdctl
    n N을 이용해서 이동

  • 원래

  • 수정 - lnnz11 추가

  1. continue로 넘어간다.

  2. 또 오류가 나와도 계속 continue 해준다.

  3. rac1 node에 설치한걸 rac2 node에도 copy 해준다.

  4. rac1,rac2 root 계정에서 해당 스크립트 실행

  1. finish

ASM disk group 생성

  1. mobaxterm 에서 grid 환경으로 변경
    grid_env
    $ echo $ORACLE_SID

  2. 현재 sid 확인
    . oraenv

  1. asmca 명령어 입력

  2. node를 알 수 있다.

  3. disk 그룹 확인

  4. 새로운 disk 그룹 생성

  • 안쓰고 있던 디스크 2개를 디스크 그룹으로 묶어준다.
  • external로 다중화는 하지 않는다.
  1. 디스크 그룹이 2개가 되었다.

DB생성

  1. mobaexterm에서 db_env 환경으로 변경
db_env
echo $ORACLE_SID
racdb1
  1. 다른세션에서 .bash_profile에 정의되어있는 $ORACLE_HOME 값 조회
echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/dbhome_1
  1. db_env환경에서는 $ORACLE_HOME(오라클 소프트웨어가 설치되어있는곳)의 위치가 다르기때문에 설정해줘야한다.
    . oraenv

  2. dbca 명령어로 db설치 툴 실행

  3. 처음 생성하니깐 create database

  4. oltp성 환경이기때문에 첫번째 옵션 선택

  5. global database name은 oracle_unqname 환경변수에 설정해놓은 값이다.

  • node들은 select all로 전부 선택
  1. 오라클이 자동으로 수행하는 옵션(통계수집, 쿼리튜닝, 저장공간 최적화)

  2. 패스워드는 모든 관리자 동일하게 설정

  3. 필수 데이터파일(sys, sysaux, undo, temp, user) 와 redo 파일이 DATA디스크 그룹에 만들어진다.

  • OMF 방식을 사용한다.
  1. 계정 비밀번호는 oracle로 설정했었다.

  2. flash recovery area로 아까 생성한 FRA 디스크 그룹을 사용한다.

  • 아카이브로그 모드도 설정해준다
  1. hr 유저 샘플 스키마 생성

  2. typical로 설정하면 amm방식으로 메모리를 관리한다.

  3. block 사이즈는 기본 8k로 설정되어있다.

  • 인스턴스당 생성할 수 있는 프로세스의 수도 설정할수 있다.
  1. character 타입을 unicode로 사용하겠다.
  • 자국 문자만 사용하고자하면 choose로 고르면 된다.
  1. dedicate 서버 or shared 서버 환경을 선택할 수 있다.

  2. 컨트롤 파일 정보 확인

  • 추후 정보를 변경할라면 컨트롤파일을 재생성 해야한다.
  1. 데이터파일 생성 확인
  • undo 파일은 2개인데 node(rac1,rac2)가 2개이기 때문이다.
  1. 지금까지 설정한 값들로 데이터베이스를 생성
  • 설정값들을 스크립트로 만들수도 있다.
  1. finish 하면 데이터베이스를 설치한다.

  2. 오류가 나오지만 그냥 ok하면 된다.

  3. sqlplus로 접속 후 DB가 생성되었는지 확인
    sqlplus / as sysdba
    select name from v$database;

마무리 설정

/etc/oratab : 시스템이 Oracle 인스턴스 및 Oracle Home 디렉터리를 관리할 수 있도록 정보를 저장

RAC1 node

  1. root 계정으로 접속
    vi /etc/oratab 수정

  2. N -> Y 로 수정해야한다.

  • 맨밑에 racdb1 구문도 추가해준다.
    racdb1:/u01/app/oracle/product/11.2.0/dbhome_1:Y
  1. 이제 다시 oracle 유저로 접속후 . oraenv
  • $ORACLE_HOME이 제대로 설정되어있다.

RAC2 node

  1. root 계정으로 접속
    vi /etc/oratab 수정

  2. N -> Y 로 수정해야한다.

  • 맨밑에 racdb2 구문도 추가해준다.
    racdb2:/u01/app/oracle/product/11.2.0/dbhome_1:Y
  1. 이제 다시 oracle 유저로 접속후 . oraenv
  • $ORACLE_HOME이 제대로 설정되어있다.
  1. 각 node에서 sqlplus로 DB 접속
  • 인스턴스 이름 확인
    select instance_name from v$instance;
  • 데이터베이스 이름 확인
    select name from v$database;
  1. 각 인스턴스 이름이 보이지 않아 헷갈리기 때문에 설정해줘야 한다.
  • rac1, rac2 각각 설정해야 한다.
    vi $ORACLE_HOME/sqlplus/admin/glogin.sql
    set sqlprompt "_user'@'_connect_identifier>"

0개의 댓글