안녕하세요! 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 oracle
및 id 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.
이 오류가 발생하는 경우, 패치 과정 중에 문제가 발생했음을 의미합니다. 이때는 다음과 같이 진행합니다:
- 디렉토리 이동:
cd /grid/app/grid
- 문제가 있는 디렉토리 삭제:
rm -rf 19c
- 19c 디렉토리를 완전히 삭제한 후, OP 패치를 다시 적용해야 합니다.
이번 포스트에서는 설치 및 설정 과정에서 발생할 수 있는 오류와 그 해결 방법에 대해 알아보았습니다. 읽어주셔서 감사합니다 . 🙂