"오라클 RAC 설치 19c"의 두 판 사이의 차이
DB CAFE
186번째 줄: | 186번째 줄: | ||
</source> | </source> | ||
− | |||
Temp 파일시스템 할당 | Temp 파일시스템 할당 | ||
<source lang=bash> | <source lang=bash> | ||
− | /dev/shm | + | vi /etc/fstab ; tmpfs 추가 |
+ | |||
+ | tmpfs /dev/shm tmpfs size=4g 0 0 | ||
+ | </source> | ||
+ | <source lang=bash> | ||
+ | [root@rac1 ~]# mount -o remount /dev/shm | ||
+ | [root@rac1 ~]# df -h | grep shm | ||
+ | tmpfs 4.0G 0 4.0G 0% /dev/shm | ||
</source> | </source> | ||
2023년 10월 30일 (월) 21:20 판
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 오라클 RAC 설치[편집]
- ram 최소 16G 이상 (8 + 8)
- hdd 최소 120G (60G + 60G) 이상
- Virtual Box 다운로드 (https://www.virtualbox.org/wiki/Downloads)
- Oracle Linux 설치 파일 다운로드 (https://yum.oracle.com/oracle-linux-isos.html)
- Oracle Grid 환경 설치 파일 다운로드
- Oracle Grid , Oracle Database 다운로드 링크 (https://www.oracle.com/kr/database/technologies/oracle19c-linux-downloads.html)
- LINUX.X64_193000_grid_home.zip
- LINUX.X64_193000_db_home.zip
- 서버 구성
- VM 구성 (RAC1,RAC2 각각)
- OS (ORACLE LINUX (OracleLinux-R7-U9-Server-x86_64) 각각)
- HOSTNAME (rac1,rac2 각각)
- 메모리 16기가(8G + 8G)
- 네트워크 어뎁터1 (NAT네트워크 각각)
- 네트워크 어뎁터2 (호스트전용네티워크 각각)
- VM 구성 (RAC1,RAC2 각각)
- 스토리지 구성
- 스토리지 영역 60GB (RAC1.vdi,RAC2.vdi 각각 생성) , 스토리지 역역
- CRS 저장영역 3GB (CRS1.vdi,CRS2.vdi,CRS3.vdi 공유파일) , CRS 저장 영역
- DATA 영역 20G (DATA.vdi 공유파일) , 데이터 영역
- FRA 영역 10G (FRA.vdi 공유파일) , FAST RECOVERY AREA
- 네트워크 구성
- Public IP (10.0.2.15 , 10.0.2.16 )
- Priviate IP (192.168.56.101 , 192.168.56.102)
- Virtual IP (10.0.2.150 , 10.0.2.160 )
- Netmask 255.255.255.0
- GateWay 10.0.2.2
- DNS server 127.0.0.1
- 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 - NAT 네트워크 설정
- NAT 네트워크로 설정하면 VM 내부 네트워크에서 Host PC 외부 네트워크까지 단방향 통신(외부 통신)이 가능
- Host PC 내 VM 간의 통신 가능(NAT와 다른 점은 Host PC 내 통신이 가능)
- 어댑터 2 - 호스트 전용 어댑터 설정
1.1.5 VM 시작[편집]
1.1.6 Install Oracle Linux 7.6 설치 선택[편집]
1.1.7 언어 선택[편집]
1.1.8 소프트웨어 선택[편집]
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
/dev/oracleasm 디렉토리 생성 oracleasm/disks에 라벨링된 디스크가 저장
[root@rac1 ~]# oracleasm init
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*
디스크 파티셔닝 확인
ASM 디스크 생성
VM에 마운트된 디스크를 각각 ASM Disk로 할당
oracleasm createdisk CRS1 /dev/sdb1 oracleasm createdisk CRS2 /dev/sdc1 oracleasm createdisk CRS3 /dev/sdd1 oracleasm createdisk DATA /dev/sde1 oracleasm createdisk FRA /dev/sdf1 oracleasm scandisks oracleasm listdisks
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.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 강제 종료