RAC1
├─ PublicIP : 관리자와 사용자 접속
├─ PrivateIP : RAC1 ↔ RAC2 내부 통신
└─ VIP : 장애 발생 시 접속 지연 방지
RAC2
├─ PublicIP
├─ PrivateIP
└─ VIPRAC 전체
└─ SCAN : 클러스터 대표 접속 주소
→ VIP와 SCAN IP는 Grid Infrastructure 설치 전에는 어떤 장비에서도 사용하지 않는 미사용 IP
→ Grid 설치 과정에서 Oracle Clusterware가 VIP와 SCAN IP를 생성하여 관리
ens192 : 관리자가 MobaXterm으로 서버에 접속
→ 프로파일 존재
→ 현재 활성화됨
→ 실제 ens192 장치에 연결됨
ens224 : OracleRACPublic, VIP, SCAN이 사용하는 네트워크
→ 프로파일 존재
→ 아직 활성화되지 않음
→ DEVICE가 --
ens256 : RAC1과 RAC2가 내부적으로 통신하는 네트워크
→ 프로파일 존재
→ 아직 활성화되지 않음
→ DEVICE가 --
ping-c210.10.10.21ping-c210.10.10.22ping-c210.10.10.31ping-c210.10.10.32ping-c210.10.10.33
명령어 실행 후 아래 응답이면 사용하지 않는 것
DestinationHostUnreachable
아래 응답이면 이미 다른 장비가 사용하는 ip이므로 다른 주소 선택 필요
100% packetloss
●
동일한 공유 디스크 사용하는지 확인
SHELL
[admin@rac1 ~]$ lsblk-oNAME,SIZE,TYPE,FSTYPE,SERIAL,WWNNAMESIZETYPEFSTYPESERIALWWNsda 20G disk 6000c2 0x6000c2953b9e74e067960935e533983b
sdb 10G disk 6000c2 0x6000c29fadec108919cb6404c724caa8
sdc 15G disk 6000c2 0x6000c2910c4a8d470de853bc6d51939f
sdd 100G disk
├─sdd1
│ 500M partxfs
└─sdd299.5G partLVM2_m
├─ol-root
│ 91.5G lvmxfs
└─ol-swap
8G lvmswapsr09.3G romiso966000000
SHELL
[admin@rac2 ~]$ lsblk-oNAME,SIZE,TYPE,FSTYPE,SERIAL,WWNNAMESIZETYPEFSTYPESERIALWWNsda 10G disk 6000c2 0x6000c29fadec108919cb6404c724caa8
sdb 20G disk 6000c2 0x6000c2953b9e74e067960935e533983b
sdc 15G disk 6000c2 0x6000c2910c4a8d470de853bc6d51939f
sdd 100G disk
├─sdd1
│ 500M partxfs
└─sdd299.5G partLVM2_m
├─ol-root
│ 91.5G lvmxfs
└─ol-swap
8G lvmswapsr0 1024M rom000000
# vi /etc/security/limits.d/oracle-database-preinstall-19c.conforaclesoftnofile1024oraclehardnofile65536oraclesoftnproc16384oraclehardnproc16384oraclesoftstack10240oraclehardstack32768oraclehardmemlock134217728oraclesoftmemlock134217728
SHELL
# vi /etc/security/limits.d/oracle-grid-19c.confgridsoftnofile1024gridhardnofile65536gridsoftnproc16384gridhardnproc16384gridsoftstack10240gridhardstack32768
#============================================================# Oracle Grid Infrastructure 19c Environment# Installation owner: grid#============================================================umask022exportTMP=/tmpexportTMPDIR=/tmp# Grid Infrastructure BaseexportORACLE_BASE=/u01/app/grid# Grid Infrastructure HomeexportORACLE_HOME=/u01/app/19.0.0/grid# 공통 OS PATHexportBASE_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$HOME/bin# Grid 실행 파일 및 OPatch 경로exportPATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$BASE_PATH# Grid Home 라이브러리 경로exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib# Grid 설치 완료 후 ASM 인스턴스가 생성되면 사용case"$(hostname -s)"inrac1)
exportORACLE_SID=+ASM1
;;
rac2)
exportORACLE_SID=+ASM2
;;
*)
echo"WARNING: 알 수 없는 호스트명: $(hostname -s)"unsetORACLE_SID
;;
esac# 프롬프트에 현재 SID 표시exportPS1="(${ORACLE_SID:-GRID})[\u@\h \w]\$ "# ASM 접속 단축 명령aliassa='sqlplus / as sysasm'
#============================================================# Oracle Database 19c Environment# Installation owner: oracle#============================================================umask022exportTMP=/tmpexportTMPDIR=/tmp# Oracle Database BaseexportORACLE_BASE=/u01/app/oracle# Oracle Database HomeexportORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1# 공통 OS PATHexportBASE_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$HOME/bin# Database 실행 파일 및 OPatch 경로exportPATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$BASE_PATH# Database Home 라이브러리 경로exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib# Database 생성 완료 후 실제 인스턴스명에 맞게 사용case"$(hostname -s)"inrac1)
exportORACLE_SID=SSORAC1
;;
rac2)
exportORACLE_SID=SSORAC2
;;
*)
echo"WARNING: 알 수 없는 호스트명: $(hostname -s)"unsetORACLE_SID
;;
esac# 프롬프트에 현재 SID 표시exportPS1="(${ORACLE_SID:-DB})[\u@\h \w]\$ "# Database 접속 단축 명령aliasss='sqlplus / as sysdba'
vi /root/grid_precheck.shchmod750 /root/grid_precheck.shchownroot:root /root/grid_precheck.shbash-n /root/grid_precheck.sh
/root/grid_precheck.sh
SHELL
#!/bin/bash## Oracle Grid Infrastructure 19c Preinstallation Check# 실행 사용자: root# 실행 위치: RAC1, RAC2 각각#set-uHOST="$(hostname -s)"NOW="$(date '+%Y%m%d_%H%M%S')"LOG="/tmp/grid_precheck_${HOST}_${NOW}.log"exec > >(tee-a"$LOG") 2>&1PASS=0FAIL=0title()
{
echoecho"================================================================"echo"$1"echo"================================================================"
}
run()
{
localdescription="$1"shiftechoecho"[CHECK] ${description}"echo"[COMMAND] $*""$@"localrc=$?
if [ "$rc"-eq0 ]; thenecho"[RESULT] OK"PASS=$((PASS + 1))
elseecho"[RESULT] WARNING 또는 확인 필요 (rc=${rc})"FAIL=$((FAIL + 1))
fireturn0
}
title"Oracle Grid Infrastructure 19c 설치 전 검사"echo"검사 노드 : ${HOST}"echo"검사 시간 : $(date)"echo"로그 파일 : ${LOG}"if [ "$(id -u)"-ne0 ]; thenecho"[ERROR] root 사용자로 실행해야 합니다."exit1fititle"1. OS, 호스트명 및 시간"run"Short hostname"hostname-srun"FQDN 확인"hostname-frun"시스템 아키텍처 확인"uname-mrun"커널 버전 확인"uname-rrun"Oracle Linux 버전 확인"cat /etc/oracle-releaserun"시간 및 NTP 상태"timedatectlrun"chronyd 자동 시작 여부"systemctlis-enabledchronydrun"chronyd 실행 여부"systemctlis-activechronydrun"chrony 동기화 소스"chronycsources-vrun"chrony 동기화 상세"chronyctrackingtitle"2. 메모리, swap 및 파일시스템"run"물리 메모리 확인"grepMemTotal /proc/meminforun"swap 크기 확인"grepSwapTotal /proc/meminforun"메모리 사용량 확인"free-hrun"/tmp, /dev/shm, /u01 공간 확인"df-h /tmp /dev/shm /u01run"/dev/shm 마운트 확인"findmnt /dev/shmtitle"3. Oracle 설치 사용자 및 그룹"run"grid 사용자 확인"idgridrun"oracle 사용자 확인"idoracleforgroup_nameindbadorun"${group_name} 그룹 확인"getentgroup"$group_name"donerun"grid UID/GID 확인"getentpasswdgridrun"oracle UID/GID 확인"getentpasswdoracletitle"4. 사용자 자원 제한"run"grid 사용자 ulimit"su - grid-c'ulimit -a'run"oracle 사용자 ulimit"su - oracle-c'ulimit -a'echoecho"[INFO] limits 설정 파일"grep-R-E'^[[:space:]]*(grid|oracle)[[:space:]]' \
/etc/security/limits.conf \
/etc/security/limits.d2>/dev/null || \
echo"[WARNING] grid/oracle limits 설정을 찾지 못했습니다."title"5. 패키지 및 보안 상태"run"19c preinstall RPM 확인"rpm-qoracle-database-preinstall-19crun"oracleasm-support 확인"rpm-qoracleasm-supportrun"kmod-oracleasm 확인"rpm-qkmod-oracleasmrun"SELinux 상태 확인"getenforcerun"firewalld 상태 확인"systemctlis-activefirewalldtitle"6. 네트워크 인터페이스 및 이름 해석"run"NetworkManager 장치 상태"nmclidevicestatusrun"NetworkManager 연결 프로파일"nmcliconnectionshowrun"NIC 및 IP 확인"ip-braddrrun"라우팅 테이블 확인"iprouterun"Public hostname 이름 해석"getenthostsrac1rac2run"VIP hostname 이름 해석"getenthostsrac1-viprac2-viprun"SCAN IPv4 이름 해석"getentahostsv4rac-scantitle"7. 노드 통신 검사"run"rac1 Public 통신"ping-c3-W2rac1run"rac2 Public 통신"ping-c3-W2rac2run"rac1 Private 통신"ping-c3-W2192.168.200.11run"rac2 Private 통신"ping-c3-W2192.168.200.12title"8. grid 사용자 무암호 SSH"run"grid -> rac1 SSH" \
su - grid-c'ssh -o BatchMode=yes -o ConnectTimeout=5 rac1 hostname'run"grid -> rac2 SSH" \
su - grid-c'ssh -o BatchMode=yes -o ConnectTimeout=5 rac2 hostname'run"grid -> rac1 시간 확인" \
su - grid-c'ssh -o BatchMode=yes -o ConnectTimeout=5 rac1 date'run"grid -> rac2 시간 확인" \
su - grid-c'ssh -o BatchMode=yes -o ConnectTimeout=5 rac2 date'title"9. 공유 ASM 디스크"run"블록 장치 및 WWID 확인" \
lsblk-oNAME,SIZE,TYPE,FSTYPE,UUID,WWN,SERIALrun"SCSI 장치 및 WWID 확인"lsscsi-irun"ASMLib 디스크 목록"oracleasmlistdisksrun"OCR 디스크 확인"oracleasmquerydisk-pOCRrun"DATA 디스크 확인"oracleasmquerydisk-pDATArun"RECO 디스크 확인"oracleasmquerydisk-pRECOtitle"10. Grid 및 Inventory 디렉터리"run"/u01/app 권한 확인"ls-ld /u01/apprun"Grid Base 권한 확인"ls-ld /u01/app/gridrun"Grid Home 권한 확인"ls-ld /u01/app/19.0.0/gridrun"oraInventory 권한 확인"ls-ld /u01/app/oraInven
Grid 설치 프로그램은 RAC1에서 RAC2로 설치 파일과 설정을 전달하므로, grid 사용자가 양쪽 노드에 비밀번호 없이 접속할 수 있어야 함
RAC1에서 grid 사용자로
SHELL
su - gridmkdir-p ~/.sshchmod700 ~/.ssh# 기존 키가 없다면 생성test-f ~/.ssh/id_rsa || ssh-keygen-trsa-b4096-N''-f ~/.ssh/id_rsassh-copy-idgrid@rac1ssh-copy-idgrid@rac2sshrac1hostnamesshrac2hostname
RAC2에서 grid 사용자로
SHELL
su - gridmkdir-p ~/.sshchmod700 ~/.sshtest-f ~/.ssh/id_rsa || ssh-keygen-trsa-b4096-N''-f ~/.ssh/id_rsassh-copy-idgrid@rac1ssh-copy-idgrid@rac2sshrac1hostnamesshrac2hostname
[admin@rac1 ~]$ su - gridPassword:
(+ASM1)[grid@rac1 ~]$ su -
# oracle linux 8 os 호환성 문제 때문에 아래 변수 설정
(+ASM1)[grid@rac1 /u01/app/19.0.0/grid]$ exportCV_ASSUME_DISTID=RHEL7.6
(+ASM1)[grid@rac1 /u01/app/19.0.0/grid]$ ./gridSetup.sh
DB 설치 프로그램도 rac1에서 rac2로 sw 복사하므로 oracle 사용자도 노드 간 무암호 SSH가 필요
SHELL
(SSORAC1)[oracle@rac1 ~]$ mkdir-p ~/.ssh
(SSORAC1)[oracle@rac1 ~]$ chmod700 ~/.ssh
(SSORAC1)[oracle@rac1 ~]$ test-f ~/.ssh/id_rsa || \
> ssh-keygen-trsa-b4096-N''-f ~/.ssh/id_rsaGeneratingpublic/privatersakeypair.
Youridentificationhasbeensavedin /home/oracle/.ssh/id_rsa.
Yourpublickeyhasbeensavedin /home/oracle/.ssh/id_rsa.pub.
Thekeyfingerprintis:
SHA256:kxQ7MVHvpAowkouir39IH+9JfkbCjM2CoXFFDB6p9Ug oracle@rac1Thekey's randomart image is:
+---[RSA 4096]----+
| o=. =o. |
| .Eoo = . |
| +++o + o |
|o.+o.o . o + |
|o+.o *. S . . |
|+ o + *..o |
|.. o +.o. |
| .. oo..o |
|.oo. .+o |
+----[SHA256]-----+
(SSORAC1)[oracle@rac1 ~]$ ssh-copy-id oracle@rac1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/oracle/.ssh/id_rsa.pub"
The authenticity of host 'rac1 (10.10.10.11)' can'tbeestablished.
ECDSAkeyfingerprintisSHA256:i+XM2KVwSzdqBcdY4ol3ExhJoYqf5Ep2++n/emC0DJE.
Areyousureyouwanttocontinueconnecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attemptingtologinwiththenewkey(s), tofilteroutanythatarealreadyinstalled
/usr/bin/ssh-copy-id: INFO: 1key(s) remaintobeinstalled -- ifyouarepromptednowitistoinstallthenewkeysoracle@rac1's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'oracle@rac1'"
andchecktomakesurethatonlythekey(s) youwantedwereadded.
SHELL
(SSORAC1)[oracle@rac1 ~]$ ssh-copy-idoracle@rac2
/usr/bin/ssh-copy-id: INFO: Sourceofkey(s) tobeinstalled: "/home/oracle/.ssh/id_rsa.pub"Theauthenticityofhost'rac2 (10.10.10.12)'can't be established.
ECDSA key fingerprint is SHA256:i+XM2KVwSzdqBcdY4ol3ExhJoYqf5Ep2++n/emC0DJE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
oracle@rac2'spassword:
Numberofkey(s) added: 1Nowtryloggingintothemachine, with: "ssh 'oracle@rac2'"andchecktomakesurethatonlythekey(s) youwantedwereadded.
(SSORAC1)[oracle@rac1 ~]$ ssh-oBatchMode=yesrac2hostnamerac2
SHELL
[admin@rac2 ~]$ su - oraclePassword:
(SSORAC2)[oracle@rac2 ~]$ mkdir-p ~/.ssh
(SSORAC2)[oracle@rac2 ~]$ chmod700 ~/.ssh
(SSORAC2)[oracle@rac2 ~]$ test-f ~/.ssh/id_rsa || \
> ssh-keygen-trsa-b4096-N''-f ~/.ssh/id_rsaGeneratingpublic/privatersakeypair.
Youridentificationhasbeensavedin /home/oracle/.ssh/id_rsa.
Yourpublickeyhasbeensavedin /home/oracle/.ssh/id_rsa.pub.
Thekeyfingerprintis:
SHA256:Q8SjTdUE0a34OZCoF6nsDgwIPGO07QtyNTnhKaDoMFIoracle@rac2Thekey's randomart image is:
+---[RSA 4096]----+
|..E . ...+*.. |
|=oo. + .+ o . |
|B*..B +.+ o . |
|*o+o o..= + . |
|ooo. . oS. o . |
|...o. + .. + |
| .o. . . |
| .. |
| .. |
+----[SHA256]-----+
(SSORAC2)[oracle@rac2 ~]$ ssh-copy-id oracle@rac1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/oracle/.ssh/id_rsa.pub"
The authenticity of host 'rac1 (10.10.10.11)' can'tbeestablished.
ECDSAkeyfingerprintisSHA256:i+XM2KVwSzdqBcdY4ol3ExhJoYqf5Ep2++n/emC0DJE.
Areyousureyouwanttocontinueconnecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attemptingtologinwiththenewkey(s), tofilteroutanythatarealreadyinstalled
/usr/bin/ssh-copy-id: INFO: 1key(s) remaintobeinstalled -- ifyouarepromptednowitistoinstallthenewkeysoracle@rac1's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'oracle@rac1'"
andchecktomakesurethatonlythekey(s) youwantedwereadded.
SHELL
(SSORAC2)[oracle@rac2 ~]$ ssh-oBatchMode=yesrac2hostnameoracle@rac2: Permissiondenied (publickey,gssapi-keyex,gssapi-with-mic,password).
(SSORAC2)[oracle@rac2 ~]$ ssh-copy-idoracle@rac2
/usr/bin/ssh-copy-id: INFO: Sourceofkey(s) tobeinstalled: "/home/oracle/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attemptingtologinwiththenewkey(s), tofilteroutanythatarealreadyinstalled
/usr/bin/ssh-copy-id: INFO: 1key(s) remaintobeinstalled -- ifyouarepromptednowitistoinstallthenewkeysoracle@rac2's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'oracle@rac2'"
andchecktomakesurethatonlythekey(s) youwantedwereadded.
(SSORAC2)[oracle@rac2 ~]$ ssh-oBatchMode=yesrac2hostnamerac2
아직 댓글이 없습니다. 이 글에서 얻은 생각이나 질문을 남겨보세요.