Oracle Grid 설치 및 패치 경험 공유

안녕하세요! surmin 입니다.
오늘은 Oracle의 RAC에서 클러스터 기능을 제공하는 Grid 설치 및 패치 경험을 공유하려고 합니다. 많은 분들에게 도움이 되길 바랍니다. 🙂

(추후에 DB 설치 관련 내용도 올릴 예정입니다)

환경
– Oracle Linux 9
– vmware17
– memory: 8G

준비물
– Oracle 패치 파일(+패치 업데이트를 위한 유틸리티)

– Grid 설치 파일
– 가용 용량 약 100GB

설치 전 환경 셋팅

#hosts 설정 
[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

# 추가, 이름은 자유롭게 설정!
192.168.153.128 ora19c
# Oracle 데이터베이스 설치를 위한 사전 설정 패키지 설치
yum install -y oracle-database-preinstall-19c

# oracle 사용자 정보 확인
id oracle
# uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)

# Oracle 데이터베이스 설치를 위한 파라미터 설정 확인
[root@localhost limits.d]# cat oracle-database-preinstall-19c.conf

# 필요한 패키지 설치
dnf install -y bc                    # 기본 계산기
dnf install -y binutils               # 바이너리 유틸리티
dnf install -y compat-openssl11      # 호환성 OpenSSL
dnf install -y elfutils-libelf        # ELF 파일 유틸리티
dnf install -y fontconfig             # 글꼴 설정
dnf install -y glibc                  # GNU C 라이브러리
dnf install -y glibc-devel            # GNU C 라이브러리 개발 패키지
dnf install -y ksh                    # Korn 셸
dnf install -y libaio                 # 비동기 I/O 라이브러리
dnf install -y libasan                # 주소 샌드박스
dnf install -y liblsan                # 라이브러리 샌드박스
dnf install -y libX11                 # X11 클라이언트 라이브러리
dnf install -y libXau                 # X11 인증 라이브러리
dnf install -y libXi                  # X11 입력 확장
dnf install -y libXrender             # X11 렌더링 라이브러리
dnf install -y libXtst                # X11 테스트 라이브러리
dnf install -y libxcrypt-compat       # 호환성 암호 라이브러리
dnf install -y libgcc                 # GCC 라이브러리
dnf install -y libibverbs             # InfiniBand 라이브러리
dnf install -y libnsl                 # NIS/NIS+ 라이브러리
dnf install -y librdmacm              # RDMA 라이브러리
dnf install -y libstdc++              # C++ 표준 라이브러리
dnf install -y libxcb                 # X11 클라이언트 라이브러리
dnf install -y libvirt-libs           # 가상화 라이브러리
dnf install -y make                   # 빌드 도구
dnf install -y policycoreutils        # 정책 관리 유틸리티
dnf install -y policycoreutils-python-utils  # 정책 관리 유틸리티 (Python)
dnf install -y smartmontools          # SMART 모니터링 도구
dnf install -y sysstat                # 시스템 성능 모니터링 도구

# 추가로 설치한 패키지
dnf install -y glibc-headers          # GNU C 라이브러리 헤더
dnf install -y ipmiutil               # IPMI 유틸리티
dnf install -y libnsl2                # NIS/NIS+ 라이브러리 (버전 2)
dnf install -y libnsl2-devel          # NIS/NIS+ 라이브러리 개발 패키지 (버전 2)
dnf install -y net-tools              # 네트워크 도구
dnf install -y nfs-utils              # NFS 유틸리티

# 추가 패키지 설치
dnf install -y gcc                    # GNU C 컴파일러
dnf install -y unixODBC               # ODBC 드라이버
# ASM을 위해 grid 계정을 생성
[root@localhost etc]# useradd -u 54322 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba grid

# oracle 계정 비밀번호 변경
[root@localhost etc]# passwd oracle

# grid 계정 비밀번호 변경
[root@localhost etc]# passwd grid

# 새 그룹 추가
[root@ora19c dev]# groupadd -g 54327 asmdba
[root@ora19c dev]# groupadd -g 54328 asmoper
[root@ora19c dev]# groupadd -g 54329 asmadmin

# oracle 및 grid 계정을 각 그룹에 추가
[root@ora19c dev]# usermod -a -G asmadmin oracle
[root@ora19c dev]# usermod -aG asmadmin grid
[root@ora19c dev]# usermod -aG asmoper grid
[root@ora19c dev]# usermod -aG asmdba grid
[root@ora19c dev]# usermod -aG asmoper oracle
[root@ora19c dev]# usermod -aG asmdba oracle

# oracle 및 grid 계정 정보 확인
[root@ora19c dev]# id oracle
[root@ora19c dev]# id grid  

# grid 계정에서 .bash_profile 설정
[grid@ora19c ~]$ ls -al
[grid@ora19c ~]$ cat .bash_profile

# SELinux 설정 및 방화벽 비활성화
[root@localhost etc]# vi /etc/sysconfig/selinux
[root@localhost etc]# systemctl stop firewalld
[root@localhost etc]# systemctl disable firewalld

# 디렉토리 생성
[root@ora19c /]# mkdir oracle grid oralog

# LVM 설정을 위한 패키지 설치
yum install lvm2

# 물리 볼륨 생성
[root@ora19c ~]# pvcreate /dev/sda1

# 볼륨 그룹 생성
[root@ora19c ~]# vgcreate oracle_vg /dev/sda1

# 논리 볼륨 생성
[root@ora19c ~]# lvcreate -n grid -L 40G oracle_vg
lvcreate -n oracle -L 40G oracle_vg
lvcreate -n oralog -l 100%FREE oracle_vg

# 파일 시스템 생성
mkfs.xfs /dev/oracle_vg/grid
mkfs.xfs /dev/oracle_vg/oracle
mkfs.xfs /dev/oracle_vg/oralog

# /etc/fstab에 마운트 정보 추가
vi /etc/fstab
--
UUID=746d9d37-eb62-4908-bbfd-8d7b37c0717c /grid xfs defaults,nofail 0 0
UUID=d16a8815-f2ca-4ddf-a69d-cf18d35111c8 /oralog xfs defaults,nofail 0 0
UUID=e1554d42-dd44-4bc0-84f6-05acea8f39b5 /remaining xfs defaults,nofail 0 0
--
mount -a -v

# Oracle 및 Grid 디렉토리 생성 및 권한 설정
[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 oracle:oinstall -R oralog oracle grid

# LVM 추가 구성 (rules 사용)
[root@ora19c ~]# pvcreate /dev/nvme0n3
[root@ora19c ~]# vgcreate sh_vg /dev/nvme0n3
[root@ora19c ~]# lvcreate -n vm-Data01 -L 40G sh_vg
[root@ora19c ~]# lvcreate -n vm-Fra01 -L 40G sh_vg
[root@ora19c ~]# lvcreate -n vm-rman -l 100%FREE sh_vg

# udev 규칙 파일 생성
[oracle@ora19c rules.d]$ pwd
/etc/udev/rules.d
[oracle@ora19c rules.d]$ vi 96-asm.rules
--
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="sh_vg-vm--Data01", SYMLINK+="Data01", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="sh_vg-vm--Fra01", SYMLINK+="Fra01", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add|change", KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="sh_vg-vm--rman", SYMLINK+="rman", 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/
# 설치 시 GUI 화면을 나오게 하기 위한 패키지 설치
yum install epel-release  # EPEL(Extra Packages for Enterprise Linux) 저장소 설치
yum search xorg           # xorg 관련 패키지 검색
yum install xorg-x11-server-Xorg xorg-x11-xinit  # X 서버 및 초기화 패키지 설치

# grid 엔진 = 클러스터 기능
[root@ora19c /]# cd /  # 루트 디렉토리로 이동
[root@ora19c /]# chown -R grid:oinstall grid  # grid 사용자와 oinstall 그룹에 grid 디렉토리 소유권 부여
# chown 명령어로 zip 파일들의 소유자를 oracle:oinstall로 변경
chown oracle:oinstall -R 

# Grid 홈 디렉토리에 zip 파일 압축 해제
unzip LINUX.X64_193000_grid_home.zip -d $GRID_HOME
# 임시 디렉토리에 zip 파일 압축 해제
unzip p36522439_190000_Linux-x86-64.zip -d /tmp/

cd $GRID_HOME/ 
# OPatch 디렉토리 삭제
rm -rf OPatch

cd /home/grid/
# 새로운 OPatch 압축 해제
unzip p6880880_190000_Linux-x86-64.zip -d /grid/app/grid/19c

# Oracle Linux 8 기준으로 작동하도록 설정
export CV_ASSUME_DISTID=OL8

[grid@ora19c /]$ cd $GRID_HOME/
# 패치를 적용하기 위해 GUI 셋업 창이 나오면 캔슬
./gridSetup.sh -applyRU /tmp/36522439/36414915/
./gridSetup.sh -applyRU /tmp/36522439/36582629/

GUI 화면 출력 시 아래와 같이 진행합니다.

-싱글이라서 단독으로 갑니다.

– Change 버튼 클릭 후 /dev/ 경로를 입력합니다. (예: /dev/mapper)
– Date에 해당하는 디스크만 선택합니다.
– ASM 필터는 체크 해제합니다. (체크 시 중간에 에러가 발생합니다.)
– Redundancy는 External을 선택합니다. (1대 기준으로 설정 이라)

계정 비밀번호를 단일로 통일합니다.

– 여기서 아래 이미지와 다르게 나타날 경우, id oracleid grid 명령어를 통해 그룹을 재확인합니다.

– 원래는 사용자가 root로 접속한 후 스크립트를 수행해야 하지만, 번거로움을 줄이기 위해 root 비밀번호를 입력합니다.

이후에는 다음 버튼을 클릭하여 설치를 마무리합니다.
설치 완료 후, 아래와 같이 클러스터 확인 명령어가 수행되는지 확인합니다.

#클러스터 구성하는 리소스 상태확인 
[grid@ora19c ~]$ crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       ora19c                   STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       ora19c                   STABLE
ora.asm
               ONLINE  ONLINE       ora19c                   Started,STABLE
ora.ons
               OFFLINE OFFLINE      ora19c                   STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       ora19c                   STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.evmd
      1        ONLINE  ONLINE       ora19c                   STABLE
--------------------------------------------------------------------------------

오류

오류 메시지:

ERROR: The home is not clean. This home cannot be used since there was a failed OPatch execution in this home. Use a different home to proceed.

이 오류가 발생하는 경우, 패치 과정 중에 문제가 발생했음을 의미합니다. 이때는 다음과 같이 진행합니다:

  1. 디렉토리 이동:
   cd /grid/app/grid
  1. 문제가 있는 디렉토리 삭제:
   rm -rf 19c
  1. 19c 디렉토리를 완전히 삭제한 후, OP 패치를 다시 적용해야 합니다.

이번 포스트에서는 설치 및 설정 과정에서 발생할 수 있는 오류와 그 해결 방법에 대해 알아보았습니다. 읽어주셔서 감사합니다 . 🙂

위로 스크롤