Oracle 19c RAC 설치를 위한 Oracle Linux 9.4 환경 구성

안녕하세요, surmin입니다! 오늘은 Oracle Linux 9.4에서 Oracle RAC(Real Application Clusters)를 설치한 경험을 나누고자 합니다. 이 글이 여러분의 설치 과정에 유용한 정보가 되길 바랍니다.😊
(VMware를 어느 정도 다룰 수 있다는 전제하에 진행하겠습니다.)

필요한 패치 버전 및 환경은 다음과 같습니다:

  • 패치 파일: p36582629_190000 (Grid, DB)
  • OPatch: p6880880_190000
  • Grid Home: LINUX.X64_193000_grid_home
  • DB Home: LINUX.X64_193000_db_home
  • 메모리: 4G 이상 (노드당)

먼저 원하는 디스크 Size 를 추가를 해줍니다.

디스크 저장 방식은 Store virtual disk as a single file 선택합니다 (여러개의 파일이 아닌 하나의 파일로 저장됩니다.)

정적할당

SCSI 1:0 으로 선택 후 OK (공유로 하기위해)

  • 네트워크 어뎁터를 추가해 줍니다.
    • 설정은 Host_only 선택 합니다. (게이트웨이 설정은 불필요하며, 대역대는 vmware에서 설정 가능 합니다.)

아래에서 대역대 및 DHCP 설정을 할 수 있습니다.

VMware 프로그램을 종료한 후, OS가 설치된 폴더에 들어가서 .vmx 파일을 메모장으로 열고, 맨 아래에 다음 내용을 추가한 후 저장합니다. (디스크 추가 시 종류를 SCSI로 설정한 경우, 그에 맞게 수정하세요.)

#nvme로 할경우 
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
scsi1.sharedBus = "virtual"
nvme1:1.fileName = "D:\vm2\sheor\Oracle Linux 9-1-0.vmdk"
nvme1:1.mode = "independent-persistent"
nvme1:1.present = "TRUE"
nvme1:1.deviceType = "disk"
===
#디스크 타입이 scsi일경우
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
scsi1.sharedBus = "virtual"
scsi1:0.deviceType = "disk"

노드 1에서 수행

yum update -y
# 시간 동기화 설정
yum install chrony -y
systemctl enable chronyd
systemctl start chronyd
timedatectl set-timezone Asia/Seoul
rm -rf /etc/localtime 
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
timedatectl set-ntp yes

[root@ora19c ~]# timedatectl
               Local time: Sun 2024-09-08 01:30:42 KST
           Universal time: Sat 2024-09-07 16:30:42 UTC
                 RTC time: Sat 2024-09-07 16:30:42
                Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

#rc-local 환경 설정 및 서비스 실행
/usr/lib/systemd/system/rc-local.service
    ---------------------------------------------------------------
  # 아래 내용 추가
    [Install]
    WantedBy=multi-user.target
    ---------------------------------------------------------------
$ sudo systemctl start rc-local
$ sudo systemctl enable rc-local

호스트설정 (각 노드들에 대한 IP설정)

#hosts 설정 
[root@localhost ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.153.129 oracle19cadg01
192.168.153.139 oracle19cadg02

10.10.10.19 adginter01
10.10.10.29 adginter02

192.168.153.179 oracle19cadg01-vip
192.168.153.189 oracle19cadg02-vip

192.168.153.199 adg-scan
  • 오라클 관련 패키지 설치 및 설정
#오라클 관련 패키지 설치 및 설정
yum  install -y oracle-database-preinstall-19c
id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)

#파라미터 설정 확인 
[root@localhost limits.d]# cat /etc/security/limits.d/oracle-database-preinstall-19c.conf

dnf install -y bc
dnf install -y binutils
dnf install -y compat-openssl11
dnf install -y elfutils-libelf
dnf install -y fontconfig
dnf install -y glibc
dnf install -y glibc-devel
dnf install -y ksh
dnf install -y libaio
dnf install -y libasan
dnf install -y liblsan
dnf install -y libX11
dnf install -y libXau
dnf install -y libXi
dnf install -y libXrender
dnf install -y libXtst
dnf install -y libxcrypt-compat
dnf install -y libgcc
dnf install -y libibverbs
dnf install -y libnsl
dnf install -y librdmacm
dnf install -y libstdc++
dnf install -y libxcb
dnf install -y libvirt-libs
dnf install -y make
dnf install -y policycoreutils
dnf install -y policycoreutils-python-utils
dnf install -y smartmontools
dnf install -y sysstat

dnf install -y glibc-headers
dnf install -y ipmiutil
dnf install -y libnsl2
dnf install -y libnsl2-devel
dnf install -y net-tools
dnf install -y nfs-utils 

dnf install -y gcc
dnf install -y unixODBC

yum install epel-release -y
yum search xorg
yum install xorg-x11-server-Xorg xorg-x11-xinit -y

/sbin/sysctl -p
#ASM을 위하여 grid 계정을 만듬 
[root@localhost etc]# useradd -u 54322 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba grid


[root@localhost etc]# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost etc]# passwd grid
Changing password for user grid.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

#그룹 추가 
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
usermod -a -G asmadmin oracle
usermod -aG asmadmin grid
usermod -aG asmoper grid
usermod -aG asmdba grid
usermod -aG asmoper oracle
usermod -aG asmdba oracle

#oracle하고 그룹이 같아야함 
[root@ora19c dev]# id oracle
[root@ora19c dev]# id grid  

[root@localhost etc]# vi /etc/sysconfig/selinux
--
disabled설정
--

systemctl stop bluetooth
systemctl disable bluetooth

systemctl stop avahi-daemon.socket
systemctl disable avahi-daemon.socket
 
systemctl stop avahi-daemon
systemctl disable avahi-daemon
 
systemctl stop libvirtd
systemctl disable libvirtd

sudo systemctl stop firewalld
sudo systemctl disable firewalld

vi /etc/sudoers
--
grid ALL=(ALL) ALL
oracle ALL=(ALL) ALL
--

[root@ora19c /]# cd /
[root@ora19c /]# mkdir /oralog
[root@ora19c /]# mkdir -p /oracle/app/oracle/product/19c/dbhome_1
[root@ora19c /]# mkdir -p /grid/app/grid/19c
[root@ora19c /]# chmod -R 775 oralog oracle grid
[root@ora19c /]# chown -R oracle:oinstall oralog oracle

# Grid 엔진 = 클러스터 기능
[root@ora19c /]# chown -R grid:oinstall grid
vi /etc/security/limits.d/oracle-database-preinstall-19c.conf
==
oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock    134217728
oracle   soft   memlock    134217728
grid   soft   nofile    1024
grid   hard   nofile    65536
grid   soft   nproc    16384
grid   hard   nproc    16384
grid   soft   stack    10240
grid   hard   stack    32768
grid   hard   memlock    134217728
grid   soft   memlock    134217728
==
#여기서는 메모리 9G 할당함
vi /etc/fstab
tmpfs   /dev/shm    tmpfs   defaults,size=8g    0   0

systemctl daemon-reload
mount -o remount /dev/shm
 df -h /dev/shm
  • oracle, grid .bash_profile수정 / (노드1 설정 입니다.)
ORACLE
===
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_OWNER=oracle
export ORACLE_HOSTNAME=oracle19cadg01
export ORACLE_UNIQNAME=PROD
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/19c/dbhome_1
export ORACLE_SID=PROD1
export ORACLE_TERM=xterm
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export SRVM_DISABLE_MTTRANS=true
umask 022
--------------------
grid
=====
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=oracle19cadg01
export ORACLE_UNIQNAME=+ASM
export GRID_HOME=/grid/app/grid/19c
export ORACLE_HOME=$GRID_HOME
export ORACLE_SID=+ASM1
export ORACLE_TERM=xterm
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$GRID_HOME/bin:$GRID_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
[root@ora19c /]# vi /etc/pam.d/login
==
session    required     pam_limits.so
# ^            ^              ^
# |            |              |
# |            |              +--- PAM 모듈 이름: 시스템 자원 제한을 설정함
# |            |
# |            +--- 이 모듈의 중요도: 반드시 성공해야 함
# |
# +--- PAM 관리 유형: 사용자 세션 관리를 위한 설정

# 전체 의미: 사용자가 로그인할 때마다 시스템 자원 사용 제한을 적용함
==
#lvm 설정을 위하여 패키지 설치 
yum install lvm2

[root@ora19c ~]# parted /dev/sda
GNU Parted 3.5
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)  mklabel gpt
(parted) mkpart primary 1M 100%
(parted)  set 1 lvm on
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name     Flags
 1      1049kB  215GB  215GB               primary  lvm

(parted) q
#fdisk 이용하여 LVM잡아 줍니다.
디스크 확인:
fdisk -l
이 명령어로 사용 가능한 디스크를 확인합니다. (예: /dev/sdb)
fdisk 실행:
fdisk /dev/sdb
여기서 /dev/sdb는 LVM으로 설정하려는 디스크입니다.
새 파티션 생성:

'n'을 입력하여 새 파티션을 생성합니다.
'p'를 선택하여 주 파티션으로 설정합니다.
파티션 번호는 기본값(1)을 사용합니다.
시작 섹터와 끝 섹터는 기본값을 사용하여 전체 디스크를 사용합니다.


파티션 타입 변경:

't'를 입력하여 파티션 타입을 변경합니다.
파티션 번호를 입력합니다 (보통 1).
'8e'를 입력하여 Linux LVM 타입으로 변경합니다.


변경사항 확인 및 저장:

'p'를 입력하여 파티션 테이블을 확인합니다.
'w'를 입력하여 변경사항을 저장하고 fdisk를 종료합니다.
[root@ora19c ~]# pvcreate /dev/sda1
[root@ora19c ~]# vgcreate oravg /dev/sda1

lvcreate -L 3G -n ocr01 oravg
lvcreate -L 3G -n ocr02 oravg
lvcreate -L 3G -n ocr03 oravg
lvcreate -L 40G -n data01 oravg
lvcreate -L 40G -n data02 oravg
lvcreate -L 40G -n data03 oravg
lvcreate -L 40G -n fra01 oravg
lvcreate -L 40G -n fra02 oravg
lvcreate -L 40G -n fra03 oravg  (아니면 lvcreate -n fra -l 100%FREE oravg)


# udev 규칙 파일 생성
[oracle@ora19c rules.d]$ cd /etc/udev/rules.d
[oracle@ora19c rules.d]$ vi 96-asm.rules
==
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="oravg-ocr01", SYMLINK+="ocr01", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="oravg-ocr02", SYMLINK+="ocr02", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="oravg-ocr03", SYMLINK+="ocr03", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="oravg-data01", SYMLINK+="data01", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="oravg-data02", SYMLINK+="data02", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="oravg-data03", SYMLINK+="data03", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="oravg-fra01", SYMLINK+="fra01", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="oravg-fra02", SYMLINK+="fra02", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="oravg-fra03", SYMLINK+="fra03", OWNER="grid", GROUP="asmadmin", MODE="0660"
==
# udev 규칙 재로드
[oracle@ora19c rules.d]$ udevadm control --reload-rules
[oracle@ora19c rules.d]$ udevadm trigger

# udev 로그 확인
(#확인가능#
  journalctl -xe | grep udev
  udevadm monitor           )

# /dev/mapper에서 소유권 확인
[root@ora19c dev]# ll /dev/mapper/
# /dev에서 소유권 확인
# ll /dev/
#설정 후 호스트네임 필요 시 변경(os설치 맞춰저 있다면 불필요)
[root@ora19c grid]# yum install rlwrap
# hostnamectl set-hostname [변경할호스트이름]
# reboot

1번 노드 종료 후 노드 1 폴더 자체를 복사 → 복사 후 이름변경 → 1번노드 다시올림

폴더로 들어간 뒤 vmx 파일 실행

아래와 같이 수정들어가서 nic mac 수정 하기 (nat, host-only 둘다)

nic 둘다 mac 변경

이름변경

부팅후 I copied it 선택

노드 2에서 수행

hostnamectl set-hostname [변경할호스트이름]
여기서는 hostnamectl set-hostname oracle19cadg02
---

ORACLE
===
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_OWNER=oracle
export ORACLE_HOSTNAME=oracle19cadg02
export ORACLE_UNIQNAME=PROD
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/19c/dbhome_1
export ORACLE_SID=PROD2
export ORACLE_TERM=xterm
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export SRVM_DISABLE_MTTRANS=true
umask 022
--------------------
grid
=====
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=oracle19cadg02
export ORACLE_UNIQNAME=+ASM
export GRID_HOME=/grid/app/grid/19c
export ORACLE_HOME=$GRID_HOME
export ORACLE_SID=+ASM2
export ORACLE_TERM=xterm
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$GRID_HOME/bin:$GRID_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

노드 1에서 진행

#노드1,노드2에서 lvs 통하여 확인해보기
#zip파일 권한 775 주기
# chown oracle:oinstall -R 명령어 통하여 해당 zip 파일들 소유자 변경 후 진행
unzip LINUX.X64_193000_grid_home.zip -d $GRID_HOME
unzip p36582629_190000_Linux-x86-64.zip -d /tmp/
cd $GRID_HOME/ 
rm -rf OPatch
cd /home/grid/
#새로운 OPatch 
unzip p6880880_190000_Linux-x86-64.zip -d $GRID_HOME/

#노드1 에서는 yum으로 2에서는 sftp 를 이용해서 설치
#공유 디스크 검색 패키지
yum install /grid/app/grid/19c/cv/rpm/cvuqdisk-1.0.10-1.rpm
(확인:yum list installed | grep cvuqdisk,  rpm -q cvuqdisk)

[grid@ora19c /]$ cd $GRID_HOME/
#패치 뒤집어씌우자 첫번째에서 셋업창(gui)나오면 캔슬 
./gridSetup.sh -applyRU /tmp/36582629/36582781
./gridSetup.sh -applyRU /tmp/36582629/36587798
./gridSetup.sh -applyRU /tmp/36582629/36590554
./gridSetup.sh -applyRU /tmp/36582629/36648174
./gridSetup.sh -applyRU /tmp/36582629/36758186

#작업전 미리점검
$GRID_HOME/runcluvfy.sh stage -pre crsinst -n [노드1],[노드2] -verbose
#설치
./gridSetup.sh
--설치잘안되면 수동으로 설치 root로 말고 그래야 로그가 더 선명히 나옴

scan name에는 hosts에 적은 스캔이름 적습니다

ADD선택 후 두번째 노드에 대한 퍼블릭 명과 VIP명 적습니다.

  • SSH connectivity 선택, GRID 유저 패스워드 입력
    • Setup→test하기

IP확인

Use Oracle Flex ASM for storage 선택ㅇ

NO선택

OCR_VOTE 입력 후 Normal 선택

디스크가 안나올 경우 Change Discovery Path 선택(여기선 /dev/mapper)

ASM 인스턴스 관리 계정 Password 설정

IPMI는 보통 하드웨어에서 지원함으로 NO 선택

EM체크 하지않음

경로지정은 쭉 넘어간 다음(디폴트), 자동으로 스크립트 실행 설정

SCAN 관련메세지는 SCAN IP가 DNS에 등록되어 있지 않아서 발생한 문제 모두 Ignore

설치 막바지에 SCAN IP가 DNS에 등록되어 있지 않아서 발생한 문제 무시 해도됨 OK

GRID 설치 후 점검

#1번 노드
/grid/app/grid/19c># crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.chad
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.net1.network
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.ons
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.proxy_advm
               OFFLINE OFFLINE      oracle19cadg01           STABLE
               OFFLINE OFFLINE      oracle19cadg02           STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.OCR_VOTE.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           Started,STABLE
      2        ONLINE  ONLINE       oracle19cadg02           Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.cvu
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.oracle19cadg01.vip
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.oracle19cadg02.vip
      1        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.qosmserver
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
--------------------------------------------------------------------------------

#2번 노드
/home/grid># crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.chad
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.net1.network
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.ons
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.proxy_advm
               OFFLINE OFFLINE      oracle19cadg01           STABLE
               OFFLINE OFFLINE      oracle19cadg02           STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.OCR_VOTE.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           Started,STABLE
      2        ONLINE  ONLINE       oracle19cadg02           Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.cvu
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.oracle19cadg01.vip
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.oracle19cadg02.vip
      1        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.qosmserver
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
--------------------------------------------------------------------------------

/grid/app/grid/19c># ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          4
         Total space (kbytes)     :     901284
         Used space (kbytes)      :      84320
         Available space (kbytes) :     816964
         ID                       :  386907180
         Device/File Name         :  +OCR
                                    Device/File integrity check succeeded

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

         Cluster registry integrity check succeeded

         Logical corruption check bypassed due to non-privileged user

[grid@oracle19cadg01 ~]$ $GRID_HOME/OPatch/opatch lspatches -oh $GRID_HOME
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186)
36648174;TOMCAT RELEASE UPDATE 19.0.0.0.0 (36648174)
36590554;ACFS RELEASE UPDATE 19.24.0.0.0 (36590554)
36582781;Database Release Update : 19.24.0.0.240716 (36582781)
36414915;OJVM RELEASE UPDATE: 19.24.0.0.240716 (36414915)

OPatch succeeded.

ASM Diskgroup생성

asmca

create선택

  • Disk Group Name 에 DATA 입력 후 Normal 선택 후 DATA 디스크 선택
    • External(단일화)은 쓰기 오류가 발생하면 디스크 그룹이 강제로 분리된다.
    • show Eligible를 누른 후 디스크 를 찾습니다 (이미지는 show all 부분이니 그대로 하면 안됩니다.)
    • FRA도 마찬가지로 해줍니다.

DB 소프트웨어(엔진) 설치

#권한 oracle oinstall맞는지 확인
#패치파일 압축 풀기 
unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME/
cd $ORACLE_HOME
rm -rf OPatch
cd /home/oracle/
#패치 업데이트를 위한 유틸리티 풀기 
unzip p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME/
cd $ORACLE_HOME/
./runInstaller -applyRU /tmp/36582629/36582781
./runInstaller -applyRU /tmp/36582629/36587798

#설치전 확인
$GRID_HOME/runcluvfy.sh stage -pre crsinst -n [노드1],[노드2]
./runInstaller 

ssh 누른 후 oracle 패스워드 입력 및 set up 누른 후 넘어간다.

자동으로 나온 경로로 설치

root 접속정보 입력

DB설치

#db패치정보 확인
$ORACLE_HOME/OPatch/opatch lspatches -oh $ORACLE_HOME
#oracle 계정 접속
dbca

체크해제 및 이름입력

경로 보고 틀리면 선택한다.

아카이브는 체크해제

기본선택 그대로간다.

샘플스키마 체크한다.

통신방식은 Dedicated 방식으로 선택한다.

체크해제 한다.

접속정보 입력

DB생성 체크

sqlplus / as sysdba
#db생성 확인
SQL> select instance_name, version, status from gv$instance;
INSTANCE_NAME    VERSION           STATUS
---------------- ----------------- ------------
PROD1            19.0.0.0.0        OPEN
PROD2            19.0.0.0.0        OPEN

#db패치적용
cd $ORACLE_HOME/OPatch
./datapatch -verbose

그리드 확인

#노드1
[grid@oracle19cadg01 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.chad
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.net1.network
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.ons
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.proxy_advm
               OFFLINE OFFLINE      oracle19cadg01           STABLE
               OFFLINE OFFLINE      oracle19cadg02           STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.FRA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           Started,STABLE
      2        ONLINE  ONLINE       oracle19cadg02           Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.cvu
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.oracle19cadg01.vip
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.oracle19cadg02.vip
      1        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.prod.db
      1        ONLINE  ONLINE       oracle19cadg01           Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             /dbhome_1,STABLE
      2        ONLINE  ONLINE       oracle19cadg02           Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             /dbhome_1,STABLE
ora.qosmserver
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
--------------------------------------------------------------------------------

#노드2
[grid@oracle19cadg02 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.chad
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.net1.network
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.ons
               ONLINE  ONLINE       oracle19cadg01           STABLE
               ONLINE  ONLINE       oracle19cadg02           STABLE
ora.proxy_advm
               OFFLINE OFFLINE      oracle19cadg01           STABLE
               OFFLINE OFFLINE      oracle19cadg02           STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.FRA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           Started,STABLE
      2        ONLINE  ONLINE       oracle19cadg02           Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
      2        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.cvu
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.oracle19cadg01.vip
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.oracle19cadg02.vip
      1        ONLINE  ONLINE       oracle19cadg02           STABLE
ora.prod.db
      1        ONLINE  ONLINE       oracle19cadg01           Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             /dbhome_1,STABLE
      2        ONLINE  ONLINE       oracle19cadg02           Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             /dbhome_1,STABLE
ora.qosmserver
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       oracle19cadg01           STABLE
--------------------------------------------------------------------------------
  • 각 노드에 있는 export CV_ASSUME_DISTID=OL7 설정 삭제 진행 후 적용 하면된다.

각 노드에 작성을 한다 root 프로파일

#노드1
[root@oracle19cadg01 ~]# vi .bash_profile
==
export ORACLE_HOME=$ORACLE_BASE/product/19c
export GRID_HOME=/grid/app/grid/19c
export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$GRID_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
==
[root@oracle19cadg01 ~]# . .bash_profile

#노드2
[root@oracle19cadg02 ~]# vi .bash_profile
==
export ORACLE_HOME=$ORACLE_BASE/product/19c
export GRID_HOME=/grid/app/grid/19c
export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$GRID_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
==
[root@oracle19cadg01 ~]# . .bash_profile

#sudo 권한제거 (oracle,grid) 각 노드  
vi /etc/sudoers

root에서 기동 및 종료 테스트

[root@oracle19cadg01 ~]# crsctl stop crs
[root@oracle19cadg01 ~]# crsctl start crs -wait

#자동 시작확인 노드1 , 노드2
[root@oracle19cadg01 ~]# crsctl config crs
CRS-4622: Oracle High Availability Services autostart is enabled.
[root@oracle19cadg02 ~]# crsctl config crs
CRS-4622: Oracle High Availability Services autostart is enabled.

참고
https://positivemh.tistory.com/763
https://lemonandgrapefruit.tistory.com/275
위로 스크롤