행위

오라클 RAC 설치 19c

DB CAFE

thumb_up 추천메뉴 바로가기


1 오라클 RAC 설치[편집]

assignment 준비사항
  1. ram 최소 16G 이상 (8 + 8)
  2. hdd 최소 120G (60G + 60G) 이상
  3. Virtual Box 다운로드 (https://www.virtualbox.org/wiki/Downloads)
  4. Oracle Linux 설치 파일 다운로드 (https://yum.oracle.com/oracle-linux-isos.html)
  5. Oracle Grid 환경 설치 파일 다운로드


assignment RAC 구성 환경
  1. 서버 구성
    1. VM 구성 (RAC1,RAC2 각각)
      1. OS (ORACLE LINUX (OracleLinux-R7-U9-Server-x86_64) 각각)
      2. HOSTNAME (rac1,rac2 각각)
    2. 메모리 16기가(8G + 8G)
    3. 네트워크 어뎁터1 (NAT네트워크 각각)
    4. 네트워크 어뎁터2 (호스트전용네티워크 각각)
  2. 스토리지 구성
    1. 스토리지 영역 60GB (RAC1.vdi,RAC2.vdi 각각 생성) , 스토리지 역역
    2. CRS 저장영역 3GB (CRS1.vdi,CRS2.vdi,CRS3.vdi 공유파일) , CRS 저장 영역
    3. DATA 영역 20G (DATA.vdi 공유파일) , 데이터 영역
    4. FRA 영역 10G (FRA.vdi 공유파일) , FAST RECOVERY AREA
  3. 네트워크 구성
    1. Public IP (10.0.2.15 , 10.0.2.16 )
    2. Priviate IP (192.168.56.101 , 192.168.56.102)
    3. Virtual IP (10.0.2.150 , 10.0.2.160 )
    4. Netmask 255.255.255.0
    5. GateWay 10.0.2.2
    6. DNS server 127.0.0.1
    7. SCAN IP (10.0.2.20 , 10.0.2.21 , 10.0.2.22)


1.1 RAC1 VM 설치[편집]

1.1.1 VM 생성[편집]

  • VM 이름 및 운영체제 선택

1.1.2 메모리 크기 설정[편집]

  • 8GB로 설정. (Grid 최소 메모리 사양 )

1.1.3 하드 디스크 설정[편집]

하드 디스크 설정 하드디스크 파일 종류 설정 동적 할당으로 하드디스크 생성 하드디스크 위치 및 크기 설정

1.1.4 RAC 하드웨어 설정[편집]

  • RAC1의 VM 설정

리눅스 설치 파일 삽입 오디오 설정 해제

네트워크 설정

  1. 어댑터 1 - NAT 네트워크 설정
    1. NAT 네트워크로 설정하면 VM 내부 네트워크에서 Host PC 외부 네트워크까지 단방향 통신(외부 통신)이 가능
    2. Host PC 내 VM 간의 통신 가능(NAT와 다른 점은 Host PC 내 통신이 가능)
  2. 어댑터 2 - 호스트 전용 어댑터 설정

1.1.5 VM 시작[편집]

1.1.6 Install Oracle Linux 7.6 설치 선택[편집]

1.1.7 언어 선택[편집]

1.1.8 소프트웨어 선택[편집]

1.1.9 소프트웨어 세부 설정[편집]

기본환경 - 서버 GUI 사용

선택 환경 기능 - 하드웨어 모니터링 유틸리티, KDE, 성능도구, 호환성 라이브러리, 시스템 관리 도구

1.1.10 시스템 설치 대상 선택[편집]

로컬 표준 디스크로 설정

KDUMP > 비활성화

SECURITY POLICY > 끔

네트워크 설정 > rac1으로 설정

설치 시작

root 암호 설정

사용자 생성

설치 진행중...

재부팅

재부팅 후 라이센스 동의

Oracle Linux 설치 완료 / 로그인

네트워크 설정 이더넷(enp0s3)

IPv4의 네트워크는 수동으로 설정 후 고정 IP 입력 > 10.0.2.15 255.255.255.0 10.0.2.2

IPv6는 무시로 설정

이더넷(enp0s8)

IPv4의 네트워크는 수동으로 설정 후 고정 IP 입력 > 192.168.56.101 255.255.255.0

IPv6는 무시로 설정


1.1.11 Linux 설치 정보 확인[편집]


1.2 RAC1 리눅스 환경 설정[편집]

1.2.1 불필요한 서비스 정리[편집]

1.2.2 보안 설정[편집]

1.2.3 hosts 파일 수정[편집]

1.2.4 dnsmasq 활성화[편집]

vi /etc/dnsmasq.conf
cat /etc/resolv.conf
systemctl start dnsmasq
systemctl enable dnsmasq
nslookup rac-scan.localdomain   # 재기동 필요

1.2.5 필수 패키지 설치[편집]

패키지를 설치하기 위해 리눅스 설치 ISO 파일을 삽입하고 CD를 실행

해당 경로로 이동

[root@rac1 ~]# cd /run/media/root/OL-7.6\ Server.x86_64/Packages/

필요 패키지 설치

rpm -Uvh ksh-*.x86_64.rpm
rpm -Uvh libaio-devel-*.x86_64.rpm
rpm -Uvh oracleasm-support-*.x86_64.rpm
rpm -Uvh kmod-oracleasm-*.x86_64.rpm

리눅스 필수 패키지 확인

  • 의존성 문제로 미설치시 --nodeps 옵션으로 설치 예) rpm -Uvh --nodeps bc.x86_64.xxx.rpm
rpm -q bc
rpm -q binutils
rpm -q compat-libcap1
rpm -q compat-libstdc++-33
rpm -q elfutils-libelf
rpm -q elfutils-libelf-devel
rpm -q fontconfig-devel
rpm -q glibc
rpm -q glibc-devel
rpm -q kmod-20
rpm -q kmod-libs-20
rpm -q ksh
rpm -q libaio
rpm -q libaio-devel
rpm -q libgcc
rpm -q libstdc++
rpm -q libstdc++-devel
rpm -q libX11
rpm -q libXau
rpm -q libxcb
rpm -q libXi
rpm -q libXtst
rpm -q libXrender
rpm -q libXrender-devel
rpm -q make
rpm -q net-tools
rpm -q nfs-utils
rpm -q policycoreutils
rpm -q policycoreutils-python
rpm -q smartmontools
rpm -q sysstat


Temp 파일시스템 할당

vi /etc/fstab ; tmpfs 추가 

tmpfs                   /dev/shm                tmpfs   size=4g         0 0
[root@rac1 ~]# mount -o remount /dev/shm
[root@rac1 ~]# df -h | grep shm
tmpfs                4.0G     0  4.0G   0% /dev/shm

오라클 추가 패키지 설치

preinstall 패키지 설치

yum repository 설정

yum repository 경로 생성

mkdir -p /localrepo

CD 파일을 /localrepo 로 복사

기존 Online Repository 설정 파일 이름 변경

cd /etc/yum.repos.d/

새로운 로컬 repository 설정

Local Repository 업데이트

/localrepo 디렉토리 밑에 repodata 디렉토리 생성확인

repomd.xml 파일


기존 yum data 삭제

repolist 불러오기

yum search oracle |grep preinstall
yum install -y yum install -y oracle-database-preinstall-19c-1.0-2.el7.x86_64
(or) rpm -Uvh oracle-database-preinstall-19c-1.0-2.el7.x86_64.rpm

Oracle ASMLib 다운로드 (https://www.oracle.com/linux/downloads/linux-asmlib-rhel7-downloads.html)

[root@rac1 ~]# rpm -Uvh oracleasmlib-2.0.12-1.el7.x86_64.rpm


1.2.6 사용자 그룹 설정 변경[편집]

[root@rac1 ~]# usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle

1.2.7 oracle 계정 암호 변경[편집]

[root@rac1 ~]# passwd oracle

1.2.8 oracle db 설치 경로 생성[편집]

[root@rac1 ~]# mkdir -p /u01/app/oracle
[root@rac1 ~]# chown -R oracle:oinstall /u01
[root@rac1 ~]# chmod -R 775 /u01

1.2.9 oracle 유저 환경설정[편집]

[root@rac1 ~]# vi ~oracle/.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 GRID_HOME=/u01/app/19c/grid
export DB_HOME=$ORACLE_BASE/product/19c/db_1
export ORACLE_HOME=$DB_HOME
export ORACLE_SID=racdb1                # node2  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
export NLS_LANG=AMERICAN_KOREA.AL32UTF8
PS1='[$ORACLE_SID:$PWD]> '


.bashrc로 alias 설정

[root@rac1 ~]# vi ~oracle/.bashrc
alias grid_env='export ORACLE_HOME=$GRID_HOME;export ORACLE_SID=+ASM1;export ORACLE_HOME=$GRID_HOME;export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH'
alias db_env='export ORACLE_HOME=$DB_HOME;export ORACLE_SID=racdb1;export ORACLE_HOME=$DB_HOME;export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH'

1.2.10 root 계정 .bash_profile 수정[편집]

[root@rac1 ~]# vi ~/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/19c/grid
export DB_HOME=$ORACLE_BASE/product/19c/db_1
export PATH=$PATH:$GRID_HOME/bin


1.3 공유 환경 구성 및 ASM 환경 구성[편집]

1.3.1 공유 스토리지 구성[편집]

스토리지 구성

가상 스토리지 파일 생성

만들기 선택

가상 하드디스크 VDI 만들기 선택

고정 크기 선택

위치 설정 및 크기 설정

스토리지 파일 공유 설정

공유 스토리지 생성 완료

VM에 스토리지 연결

CRS1, CRS2, CRS3, DATA, FRA 영역 추가

스토리지 추가 완료


1.3.2 ASM 환경 구성[편집]

ASM 환경 설정

Oracle ASM 설정 및 시작 (oracle, oinstall, y, y 입력)

[root@rac1 ~]# oracleasm configure -i

Default user to own the driver interface []: oracle
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

/dev/oracleasm 디렉토리 생성 oracleasm/disks에 라벨링된 디스크가 저장

[root@rac1 ~]# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm


ASM 상태 확인

[root@rac1 ~]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
[root@rac1 ~]# oracleasm configure
ORACLEASM_ENABLED=true
ORACLEASM_UID=oracle
ORACLEASM_GID=oinstall
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_SCAN_DIRECTORIES=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"


디스크 파티셔닝

현재 디스크 확인

[root@rac1 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde  /dev/sdf

스토리지 파티션 생성

ls /dev/sd*
fdisk /dev/sdb  # "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk /dev/sdc  # "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk /dev/sdd  # "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk /dev/sde  # "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk /dev/sdf  # "n", "p", "1", "엔터", "엔터", "w" 입력
ls /dev/sd*

디스크 파티셔닝 확인

[root@rac1 ~]# ls /dev/sd*
/dev/sda   /dev/sda2  /dev/sdb1  /dev/sdc1  /dev/sdd1  /dev/sde1  /dev/sdf1
/dev/sda1  /dev/sdb   /dev/sdc   /dev/sdd   /dev/sde   /dev/sdf

ASM 디스크 생성

VM에 마운트된 디스크를 각각 ASM Disk로 할당

[root@rac1 ~]# oracleasm createdisk CRS1 /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk CRS2 /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk CRS3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk DATA /dev/sde1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk FRA /dev/sdf1
Writing disk header: done
Instantiating disk: done

[root@rac1 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...

[root@rac1 ~]# oracleasm listdisks
CRS1
CRS2
CRS3
DATA
FRA

1.4 RAC2 구성[편집]

1.4.1 RAC2 2번 노드 구성[편집]

RAC1 공유 스토리지 제거

CRS1, CRS2, CRS3, DATA, FRA 스토리지 제거

제거된 상태에서 복제 진행

RAC1 복제

가상머신 이름 및 경로, MAC 주소 정책 설정

복제 방식 선택

RAC1 공유 스토리지 다시 추가

RAC node1의 공유 스토리지는 다시 추가한다.


RAC2 공유 스토리지 추가

RAC2의 공유 스토리지도 추가한다.

네트워크 MAC 주소 변경

네트워크는 NAT가 아닌 NAT 네트워크로 설정되어 있어야 한다.


호스트 전용 네트워크의 MAC 주소 변경


RAC2 VM 시작

네트워크 고정 IP 변경

호스트명 변경

2번 노드 hostname 변경

hostnamectl status
hostnamectl set-hostname rac2

사용자 환경 변수 변경

[root@rac2 ~]# vi ~oracle/.bash_profile
export ORACLE_HOSTNAME=rac2
export ORACLE_SID=racdb2
#위 두줄 수정

vi ~oracle/.bashrc 2번 노드의 alias 설정 변경

[root@rac2 ~]# vi ~oracle/.bashrc
alias grid_env='export ORACLE_HOME=$GRID_HOME;export ORACLE_SID=+ASM2;export ORACLE_HOME=$GRID_HOME;export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH'
alias db_env='export ORACLE_HOME=$DB_HOME;export ORACLE_SID=racdb2;export ORACLE_HOME=$DB_HOME;export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH'


1.5 GRID Infrastructure 설치[편집]

1.5.1 GRID Infrastructure 설치 사전 작업[편집]

GRID_HOME 경로 생성

GRID 설치파일 업로드

Grid 설치파일 압축 해제

cvuqdisk 패키지 설치(root 계정에서 설치)

[+ASM1:/u01/app/19c/grid]> cd $GRID_HOME/cv/rpm/
[+ASM1:/u01/app/19c/grid/cv/rpm]> rpm -Uvh cvuqdisk-1.0.10-1.rpm
  • 오류: can't create transaction lock on /var/lib/rpm/.rpm.lock (허가 거부)는 root 계정에서 실행을 하지 않아 생긴 오류

2번 노드로 rpm 파일 전송

[root@rac1 rpm]# scp cvuqdisk-1.0.10-1.rpm rac2:/tmp


2번 노드 ssh 접속 및 cvuqdisk 패키지 설치

[root@rac1 rpm]# ssh root@rac2
[root@rac2 ~]# cd /tmp
[root@rac2 tmp]# rpm -Uvh cvuqdisk-1.0.10-1.rpm
[root@rac2 tmp]# exit

oracle 유저 패스워드 없는 SSH 접속 환경 설정

oracle 계정에서 실행 (yes, oracle pw 입력)

grid_env
cd $GRID_HOME/oui/prov/resources/scripts
./sshUserSetup.sh -user oracle -hosts "rac1 rac2" -noPromptPassphrase -advanced


클러스터 구성 환경 사전 검증 사전 환경 검증 스크립트 실행 (kernel / package 등)

cd $GRID_HOME
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -osdba dba -orainv oinstall -fixup -method root -networks enp0s3/enp0s8 -verbose

1.5.2 Grid Infrastructure 설치[편집]

1.5.2.1 GRID 설치 시작[편집]
grid_env
cd $GRID_HOME
./gridSetup.sh

1.5.3 = oracle 유저로 접속 후 grid 설치 진행[편집]

1.5.3.1 소프트웨어 구성 옵션 선택[편집]

클러스터 구성 선택

클러스터 구성 정보 입력


클러스터 노드 정보 설정

rac2 노드 정보 입력

SSH 접속 설정

oracle 유저 비밀번호 입력 및 테스트 진행

SSH 접속 설정 완료

네트워크 인터페이스 용도 지정

저장 영역 옵션 정보 선택

Grid 관리 저장소 옵션 생성 설정

ASM 디스크 그룹 생성

/dev/oracleasm/disks/* 경로 변경

디스크 그룹 이름 변경 및 디스크 선택

ASM PASSWORD 입력 (oracle)

권장 비밀번호는 넘어간다.

실패 분리 지원 설정


관리 옵션 지정 설정

권한 부여된 운영체제 그룹 설정


예 선택 후 계속 진행


설치 위치 지정

인벤토리 생성

루트 스크립트 실행 구성

필요조건 검사 수행


swap이 설정되지 않아서 생기는 문제와 SCAN IP가 DNS에 설정되지 않아 생기는 문제이므로 모두 무시하고 설치를 진행한다.


Grid 설치

응답파일 저장


root 사용자의 비밀번호를 이용하여 자동으로 스크립트가 실행하는 것을 묻는 것이므로 예를 누른다.


SCAN IP가 DNS에 등록되어 있지 않아서 발생한 문제이므로 예를 누르고 진행한다.

다음 선택


설치 완료


Grid 설치 후 확인

crsctl stat res -t

CRS 시작 및 종료

crsctl start crs	#crs 시작
crsctl stop crs	#crs 종료
crsctl stop crs -f	#crs 강제 종료