본문 바로가기
ORACLE/설치

Oracle 19c RAC 설치

by 딘스톤 2023. 10. 17.

I. 개요

    1. 사용 Software

    2. 서버

    3. 스토리지

    4. 네트워크

II. VM 구성

    1. VM 생성

    2. VM 설정 변경

III. Oracle Linux 7 설치

    1. 호스트키 설정

    2. 부팅

    3. 설치 요약

    4. 사용자 설정

    5. 재부팅

IV. 리눅스 환경 설정

    1. GUI 접속 환경 설정

    2. 리눅스 환경 설정

V. 공유 환경 및 2번 노드 구성

    1. 공유 스토리지 구성

    2. ASM 환경 구성

    3. 2번 노드 구성

VI. Grid Infrastructure 설치

    1. 준비 작업

    2. Grid Infrastructure 설치

VII. ASM 디스크 그룹 추가

    1. ASMCA 실행

    2. ASM 작업

VIII. Database 소프트웨어 설치

    1. 준비 작업

    2. Database 소프트웨어 설치

IX. 데이터베이스 생성

    1. 데이터베이스 생성


I. 개요

1. 사용 software

2. 서버

Vitual Machin Host Name Memory Net Adapter 1 Net Adapter 2  구성 방법
19c_RAC1 rac1 8G NAT Network Host Only 리눅스 설치
19c_RAC2 rac2 8G NAT Network Host Only RAC1 복제

3. 스토리지

파일 이름 용량 타입  용도
19c_rac1.vid 100GB Dynamic / Normal RAC1 노드 스토리지
19c_rac2.vid 100GB Dynamic / Normal RAC2 노드 스토리지
CRS001.vid 2GB Fixed / Shareable OCR/Vote 저장 영역
CRS002.vid 2GB Fixed / Shareable
CRS003.vid 2GB Fixed / Shareable
DATA001.vid 20GB Fixed / Shareable DATA 영역
FRA001.vid 15GB Fixed / Shareable FRA 영역

4. 네트워크

Virtual Machin Public IP Private IP Virtual IP Netmask Gateway DNS Server  SCAN IP
19c_RAC1 10.0.20.101 192.168.20.101 10.0.20.151 255.255.255.0 10.0.20.1 127.0.0.1 10.0.20.201
10.0.20. 202
10.0.20. 203
19c_RAC2 10.0.20.102 192.168.20.102 10.0.20.152 255.255.255.0 10.0.20.1 127.0.0.1

 

II. VM 구성

1. VM 생성

• VirtualBox에서 Virtual Machine(이하 VM)을 만들기 위해 새로 만들기를 클릭합니다.

 

 • 생성할 VM의 이름을 입력합니다. 사용할 목적이나 설치될 프로그램에 맞게 정한 후 이름 항목에 입력합니다.

 • VM을 저장할 경로를 변경하기 위해 폴더에서 기타를 선택합니다.

 

 • 설치할 운영 체제의 종류와 버전을 선택합니다.

 • 일반적으로 테스트를 위해 Linux가 많이 사용되게 되며, 그 외에도 VirtualBox가 지원하는 운영 체제를 선택할 수 있습니다.

 • Linux에도 다양한 계열의 제품이 존재하며, 동일 제품 내에서도 32bit와 64bit를 지정할 수 있습니다.

 기본적인 VM의 이름과 저장경로, 운영 체제에 대한 선택이 완료되었으면 <다음>을 클릭합니다.

 

  VM에서 사용할 메모리 크와 프로세서의 수를  입력하고 다음을 클릭합니다.

 

  VM의 Disk를 새로 만들기 위해서 '지금 새 가상 하드 디스크 만들기'를  클릭합니다.

  기존에 설치된 VM파일(vdi, vhd, vmdk 등)이 있을 경우에는 '기존 가상 하드 디스크 파일 사용'을 선택하여 파일이

    저장된 경로에 찾아가 등록할 수 있습니다.

  가상 디스크 파일의 할당 방식은 '동적 할당'을 기본으로 해서 디스크 파일을 생성합니다.

  사전에 저장 영역을 미리 할당해야 경우 ' 미리 전체 크기 할당 ' 을 체크하여 생성하면 됩니다.

  Disk 설정이 완료되었으면 다음을 클릭합니다.

 

  VM 설정을 확인하고 문제가 없다면 Finish를 클릭하여 VM을 생합니다.

 

2. VM 설정 변경

   NAT 네트워크 와 Host Only 네트워크 사용을 위해 네트워크 어댑터를 생성하기 위해 Virtual Box의

     파일 --> 도구 --> 네트워크 관리자를 선택합니다.

 

  호스트 전용 네트워크 탭에서 만들기를 클릭하여 세로운 네트워크 어뎁터를 생성합니다.

 

  새로 만들어진 어뎁터를 클릭하고 하단에 있는 어댑터 탭에서 수동으로 어댑터 설정을 선택합니다

  포트포워딩을 진행할 Private IP의 gateway ip를 입력하고 넷마스크를 입력합니다.

 

  DHCP 탭을 선택하여 서버 활성화의 체크를 해제합니다.

 

  NAT 네트워크 탭으로 이동하여 만들기를 클릭합니다.

 

  새로 만들어진 어댑터를 선택합니다.

  아래에 있는 일반 옵션 탭에서 IP를 입력호가 DHCP 활성화의 체크를 해제합니다.

 

  포트포워딩 탭으로 이동하여 오른쪽에 엤는 초록색 플러스 버튼을 클릭합니다

  호스트 IP는 버추얼박스가 설치되어 있는 윈도우의 IP를 입력합니다.

  호스트포트는 임의로 지정하여 입력합니다.

  게스트 IP는 VM에 설치할 Public IP를입력합니다.

  게스트 포트는 22 를 입력합니다.

  설정이 완료되었다면 적용 버튼을 클릭합니다.

 

  위에서 생성한 VM을 선택하고 설정을 클릭합니다.

 

 왼쪽에 항목 중에서 일반으로 이동한 후,  고급 탭으로 이동합니다.

  클립보드 공유와 드래그 앤 드롭에서 <양뱡향>을 선택합니다.

 

  왼쪽에 있는 항목들 중 저장소를 클릭합니다.

  컨트롤러:IDE 밑에 있는 비어있음을 클릭합니다.

  오른쪽 광학드라이브의 CD 아이을 클릭하고 디스크 파일 선택을 클릭합니다.

 

  윈도우 탐색창이 뜨면 Oracle Linux를 다운로드한 폴더로 이동합니다.

  다운로드한 Oracle Linux iso 파일을 선택하고 열기를 클릭합니다.

 

  윈도우 탐색창이 뜨면 Oracle Linux를 다운로드한 폴더로 이동합니다.

  다운로드한 Oracle Linux iso 파일을 선택하고 열기를 클릭합니다.

  왼쪽에 있는 항목들 중 오디오를 클릭합니다.

  오디오 활성화의 체크를 해제합니다.

 

  왼쪽에 있는 항목들 중 네트워크를 클릭합니다.

  어뎁터 1번을 선택하고 다음에 연결됨을 NAT 네트워크로 선택합니다.

  이름은 위에서 생성한 NAT 네트워크 어댑터를 선택합니다.

 

  어뎁터 2번 탭을 클릭합니다,

  네트워크 어뎁터 활성화를 체크합니다.

  다음에 연결됨은 호스트 전용 어댑터로 변경합니다.

  이름은 위에서 생성한 Host only의 어댑터를 선택합니다.

  설정이 완료되었다면 확인 버튼을 누릅니다.

 

  왼쪽 VM들중 위에서 생성한 VM을 선택하고 시작을 클릭합니다.

 

III. Oracle Linux 7 설치

1. 호스트키 설정

  VM에서 윈도우로 마우스를 빠져나오게 할 수 있는 호스트키를 설정합니다.

  호스트키의 기본값은 Right Control입니다.

  호스트키의 변경을 원할경우 아래쪽에 있는 화살표가 그려진 네모 아이을 우클릭하고 키보드 설정을 클릭합니다.

 

  환경 설정 창이 뜨면 호스트 키 조합 옆에 있는 Right Control을 클릭하면 지우개 아이콘이 보입니다

  지우개 아이콘을 클릭하고 원하는 키를 설정한 후 확인을 클릭합니다. 

 

2. 부팅

  방향키로 이동하여 Install Oracle Linux 7.7을 선택하도 Enter 를 누릅니다.

 

 설치 시 사용하는 언어는 기본값인 English로 놔두고 Continue 를 클릭합니다.

 

3. 설치 요약

  Date &  Time을 클릭합니다.

 

 Regione에서 Asia를 선택하고  City에서 Seoul을 선택합니다.

  선택을 다 했다면 Done을 클릭합니다.

 

   Software Selection을 클릭합니다.

 

   Base Environment의 항목 중 Server with GUI를 선택합니다.

   Additional software for Selected Environment 항목에서 아래의 항목들을 선택합니다.

    - Hardware Monitoring Utilities

    - KDE

    - Performance Tools

    - Compaibility Libraries

    - System Administration Tools

   위 항목들을 모두 선택하였다면 <Done> 버튼을 클릭합니다.

 

  Installation Destination을 선택합니다.

 

  Other Storage Options 항목에서 I will configure partitioning 을 선택하고  Done을 클릭합니다.

 

   좌측 하단에 + 버튼을 클릭합니다. 

 

   ADD A NEW MOUNT POINT 설정 창이 뜨면 아래와 같은 크기로 설정합니다.

  Mount Point와 Desired Capacity를 입력하고  <Add mount point >를 클릭합니다.

  swap의 경우 물리 메모리와 동일한 크기로 최대 16GB 이내로 할당합니다.

  / 는 /boot와 swap의 공간을 제외한 나머지 모든 공간을 할당합니다.

Mount Point Desired Capacity
/boot 500M
swap 8G
/ 나머지 공간 할당

 

   /boot, swpa, / 세 개의 공간을 모두 할당하였으면 Done을 클릭합니다

 

   SUMMARY OF CHANGES 창이 뜨면 Accept Changes 버튼을 클릭합니다.

 

   KDUMP를 클릭합니다.

 

   Enable kdump의 체크를 해제하고 Done을 클릭합니다.

 

   SECURITY POLICY를 선택합니다.

 

   Apply security policy를 off 로 하고 Done을 클릭합니다.

 

   Network & Host Name을을 클릭합니다.

 

   왼쪽에 있는 어댑터 항목 중 enp0s3을 선택합니다

   우측 상단의 OFF를 눌러 ON으로 변경하고 Configure 버튼을 클릭합니다.

 

   General 탭으로 이동하여 Autimatically connect to this network when it is available를 체크합니다.

 

   IPv4 Settings 탭으로 이동하여  Method를 Manual로 변경합니다.

 

   Addresses 항목에서 add를 클릭하여 Address, Netmask, Gateway를 입력합니다.

   DNS servers는 기본 서버인 127.0.0.1을 입력합니다

   Search domains는 localdomain을 입력합니다

 

   IPv6 Settings 탭으로 이동하여  Method를 Ignore로 변경하고 Save 버튼을 클릭합니다.

 

   왼쪽에 있는 어댑터 항목 중 enp0s8을 선택합니다

   우측 상단의 OFF를 눌러 ON으로 변경하고 Configure 버튼을 클릭합니다.

 

   General 탭으로 이동하여 Autimatically connect to this network when it is available를 체크합니다.

 

   IPv4 Settings 탭으로 이동하여  Method를 Manual로 변경합니다.

 

   Addresses 항목에서 add를 클릭하여 Address, Netmask를 입력합니다.

 

   IPv6 Settings 탭으로 이동하여  Method를 Ignore로 변경하고 Save 버튼을 클릭합니다.

 

   Host Name을 변경하고  Apply 버튼을 클릭합니다.

   설정을 완료하였으면 Done 버튼을 클릭합니다.

 

   리눅스 설치를 위해 Begin Installation 버튼을 클릭합니다.

 

4. 사용자 설정

   Root Password를 클릭합니다.

 

   Root 계정의 Password를 입력하고 Done 버튼을 클릭합니다.

 

   User Creation을 클릭합니다.

 

   새로 생성할 User와 Password를 입력하고 Done 버튼을 클릭합니다.

 

5. 재부팅

   설치가 완료되면 오른쪽 하단에 있는 Reboot 버튼을 클릭합니다.

 

  VM이 재부팅 되고 나면 LICENSE INFORMATION을 클릭합니다.

 

  하단에 있는 I accept the license agreement를 체크하고 Done 버튼을 클릭합니다.

 

   FINISH CONFIGURATION 버튼을 클릭합니다.

 

IV. 리눅스 환경 설정

1. GUI 접속 환경 설정

   root 계정으로 접속하기 위해 Not listed 를 클릭합니다.

 

   Username에 root를 입력합니다.

 

   root 계정의 password 를 입력하고 Sign In 버튼을 클릭합니다.

 

   언어 설정창이 뜨면 English 를 선택하고 Next 버튼을 클릭합니다.

 

   Typing 설정창이 뜨면 아래의 표시를 클릭합니다.

 

   검색창이 나오면 hangul을 검색하여 선택하고 Next 버튼을 클릭합니다.

 

  Privacy 설정창이 나요면 Next 버튼을 클릭합니다.

 

   Online Accounts 설정창이 나요면 Skip 버튼을 클릭합니다.

 

   Ready to Go 창이 나오면 Start Using Oracle Linux Server 버튼을 클릭합니다.

 

2. 리눅스 환경 설정

   사용하지 않은 서비스 들을 정리합니다.

### 방화벽 중지
systemctl stop firewalld
systemctl disable firewalld

### 블루투스 중지
systemctl stop bluetooth
systemctl disable bluetooth

### 시간 동기화 중지
systemctl stop chronyd
systemctl disable chronyd
mv /etc/chrony.conf /etc/chrony.conf.bak

### NTP 중지
systemctl stop ntpdate
systemctl disable ntpdate

### AVAHI 중지
systemctl stop avahi-daemon.socket
systemctl disable avahi-daemon.socket
systemctl stop avahi-daemon
systemctl disable avahi-daemon

### 가상 시스템 관리 중지
systemctl stop libvirtd
systemctl disable libvirtd
더보기

### 방화벽 중지
[root@rac1 ~]# systemctl stop firewalld
[root@rac1 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

### 블루투스 중지
[root@rac1 ~]# systemctl stop bluetooth
[root@rac1 ~]# systemctl disable bluetooth
Removed symlink /etc/systemd/system/dbus-org.bluez.service.
Removed symlink /etc/systemd/system/bluetooth.target.wants/bluetooth.service.

### 시간 동기화 중지
[root@rac1 ~]# systemctl stop chronyd
[root@rac1 ~]# systemctl disable chronyd
[root@rac1 ~]# mv /etc/chrony.conf /etc/chrony.conf.bak

### NTP 중지
[root@rac1 ~]# systemctl stop ntpdate
[root@rac1 ~]# systemctl disable ntpdate


### AVAHI 중지

[root@rac1 ~]# systemctl stop avahi-daemon.socket
[root@rac1 ~]# systemctl disable avahi-daemon.socket
Removed symlink /etc/systemd/system/sockets.target.wants/avahi-daemon.socket.

[root@rac1 ~]# systemctl stop avahi-daemon
[root@rac1 ~]# systemctl disable avahi-daemon
Removed symlink /etc/systemd/system/multi-user.target.wants/avahi-daemon.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.Avahi.service.


### 가상 시스템 관리 중지
[root@rac1 ~]# systemctl stop libvirtd
[root@rac1 ~]# systemctl disable libvirtd
Removed symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service.
Removed symlink /etc/systemd/system/sockets.target.wants/virtlogd.socket.
Removed symlink /etc/systemd/system/sockets.target.wants/virtlockd.socket.

 

   Oracle Database 설치에 필요한 필수 패키지 들이 설치되어 있는지 확인합니다.

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
더보기

 [root@rac1 ~]# rpm -q bc
bc-1.06.95-13.el7.x86_64
[root@rac1 ~]# rpm -q binutils
binutils-2.27-41.base.0.1.el7.x86_64
[root@rac1 ~]# rpm -q compat-libcap1
compat-libcap1-1.10-7.el7.x86_64
[root@rac1 ~]# rpm -q compat-libstdc++-33
compat-libstdc++-33-3.2.3-72.el7.x86_64
[root@rac1 ~]# rpm -q elfutils-libelf
elfutils-libelf-0.176-2.el7.x86_64
[root@rac1 ~]# rpm -q elfutils-libelf-devel
package elfutils-libelf-devel is not installed
[root@rac1 ~]# rpm -q fontconfig-devel
package fontconfig-devel is not installed
[root@rac1 ~]# rpm -q glibc
glibc-2.17-292.0.1.el7.x86_64
[root@rac1 ~]# rpm -q glibc-devel
package glibc-devel is not installed
[root@rac1 ~]# rpm -q kmod-20
kmod-20-25.0.1.el7.x86_64
[root@rac1 ~]# rpm -q kmod-libs-20
kmod-libs-20-25.0.1.el7.x86_64
[root@rac1 ~]# rpm -q ksh
package ksh is not installed
[root@rac1 ~]# rpm -q libaio
libaio-0.3.109-13.el7.x86_64
[root@rac1 ~]# rpm -q libaio-devel
package libaio-devel is not installed
[root@rac1 ~]# rpm -q libgcc
libgcc-4.8.5-39.0.1.el7.x86_64
[root@rac1 ~]# rpm -q libstdc++
libstdc++-4.8.5-39.0.1.el7.x86_64
[root@rac1 ~]# rpm -q libstdc++-devel
package libstdc++-devel is not installed
[root@rac1 ~]# rpm -q libX11
libX11-1.6.7-2.el7.x86_64
[root@rac1 ~]# rpm -q libXau
libXau-1.0.8-2.1.el7.x86_64
[root@rac1 ~]# rpm -q libxcb
libxcb-1.13-1.el7.x86_64
[root@rac1 ~]# rpm -q libXi
libXi-1.7.9-1.el7.x86_64
[root@rac1 ~]# rpm -q libXtst
libXtst-1.2.3-1.el7.x86_64
[root@rac1 ~]# rpm -q libXrender
libXrender-0.9.10-1.el7.x86_64
[root@rac1 ~]# rpm -q libXrender-devel
package libXrender-devel is not installed
[root@rac1 ~]# rpm -q make
make-3.82-24.el7.x86_64
[root@rac1 ~]# rpm -q net-tools
net-tools-2.0-0.25.20131004git.el7.x86_64
[root@rac1 ~]# rpm -q nfs-utils
nfs-utils-1.3.0-0.65.0.1.el7.x86_64
[root@rac1 ~]# rpm -q policycoreutils
policycoreutils-2.5-33.0.1.el7.x86_64
[root@rac1 ~]# rpm -q policycoreutils-python
policycoreutils-python-2.5-33.0.1.el7.x86_64
[root@rac1 ~]# rpm -q smartmontools
smartmontools-7.0-1.el7.x86_64

[root@rac1 ~]# rpm -q sysstat
sysstat-10.1.5-18.el7.x86_64

 

   Oracle Database 설치에 필요한 필수 패키지들 중  설치되지 않은 패키지를 설치합니다.

   필수 패키지 설치를 위해 Linux ios 파일을 마운트 합니다.

   VM에서 장치 → 광학 드라이브 IDE Linux iso 파일을 선택합니다.

 

   iso 파일이 마운트 되면 Packages 폴더로 이동하여 필요한 패키지를 설치합니다.

  패키지 설치가 완료되면 마운트된 iso 파일 에서 다른 경로로 이동한 후 eject 명령어로 iso 파일의 마운트를 해제합니다.

[root@rac1 ~]# cd /run/media/root/OL-7.7\ Server.x86_64/Packages/
[root@rac1 Packages]# rpm -ivh elfutils-libelf-devel-0.176-2.el7.x86_64.rpm --nodeps
[root@rac1 Packages]# rpm -ivh fontconfig-devel-2.13.0-4.3.el7.x86_64.rpm --nodeps
[root@rac1 Packages]# rpm -ivh libXrender-devel-0.9.10-1.el7.x86_64.rpm
[root@rac1 Packages]# rpm -ivh libstdc++-devel-4.8.5-39.0.1.el7.x86_64.rpm
[root@rac1 Packages]# rpm -ivh glibc-headers-2.17-292.0.1.el7.x86_64.rpm
[root@rac1 Packages]# rpm -ivh glibc-devel-2.17-292.0.1.el7.x86_64.rpm
[root@rac1 Packages]# rpm -ivh ksh-20120801-139.0.1.el7.x86_64.rpm
[root@rac1 Packages]# rpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpm
[root@rac1 Packages]# rpm -ivh oracleasm-support-2.1.11-2.el7.x86_64.rpm
[root@rac1 Packages]# rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

[root@rac1 Packages]# cd
[root@rac1 ~]# eject
더보기

[root@rac1 Packages]# rpm -ivh elfutils-libelf-devel-0.176-2.el7.x86_64.rpm --nodeps
warning: elfutils-libelf-devel-0.176-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:elfutils-libelf-devel-0.176-2.el7################################# [100%]

[root@rac1 Packages]# rpm -ivh fontconfig-devel-2.13.0-4.3.el7.x86_64.rpm --nodeps
warning: fontconfig-devel-2.13.0-4.3.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:fontconfig-devel-2.13.0-4.3.el7  ################################# [100%]

[root@rac1 Packages]# rpm -ivh libXrender-devel-0.9.10-1.el7.x86_64.rpm
warning: libXrender-devel-0.9.10-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:libXrender-devel-0.9.10-1.el7    ################################# [100%]

[root@rac1 Packages]# rpm -ivh libstdc++-devel-4.8.5-39.0.1.el7.x86_64.rpm
warning: libstdc++-devel-4.8.5-39.0.1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:libstdc++-devel-4.8.5-39.0.1.el7 ################################# [100%]

[root@rac1 Packages]# rpm -ivh glibc-headers-2.17-292.0.1.el7.x86_64.rpm
warning: glibc-headers-2.17-292.0.1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:glibc-headers-2.17-292.0.1.el7   ################################# [100%]

[root@rac1 Packages]# rpm -ivh glibc-devel-2.17-292.0.1.el7.x86_64.rpm
warning: glibc-devel-2.17-292.0.1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:glibc-devel-2.17-292.0.1.el7     ################################# [100%]

[root@rac1 Packages]# rpm -ivh ksh-20120801-139.0.1.el7.x86_64.rpm
warning: ksh-20120801-139.0.1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:ksh-20120801-139.0.1.el7         ################################# [100%]

[root@rac1 Packages]# rpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpm
warning: libaio-devel-0.3.109-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:libaio-devel-0.3.109-13.el7      ################################# [100%]

 

[root@rac1 Packages]# rpm -ivh oracleasm-support-2.1.11-2.el7.x86_64.rpm
warning: oracleasm-support-2.1.11-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                       ############ [100%]
Updating / installing...
1: oracleasm-support-2.1.11-2.el7 #################### [100%]
Note: Forwarding request to 'systemctl enable oracleasm.service'. 
Created symlink from /etc/systemd/system/multi-user.target.wants/oracleasm.service to /usr/lib/systemd/system/oracleasm.service.

[root@rac1 Packages]# rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
warning: oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:oracle-database-preinstall-19c-1.################################# [100%]

 

  필수 패키지 중 ASMLib 패키지는 아래의 경로에서 다운로드 받아 설치합니다.

https://www.oracle.com/technetwork/server-storage/linux/asmlib/rhel7-2773795.html

 

  윈도우의 CMD 창에서 scp를 이용하여 다운로드 받은 파일을 리눅스 서버에 옮겨 설치를 합니다.

<윈도우에서 진행>
cd Downloads
scp oracleasmlib-2.0.12-1.el7.x86_64.rpm root@192.168.20.101:/media
                                           ↓        ↓           ↓                               
                                <리눅스 유저명>  <리눅스 IP> <리눅스에서 파일을 받을 경로>

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
root@192.168.20.101's password: <리눅스 root 유저의 password 입력>

<리눅스에서 진행>
rpm -ivh /media/oracleasmlib-2.0.12-1.el7.x86_64.rpm
더보기

<윈도에서 진행>

 

C:\Users\<사용자 계정 이름> >cd Downloads

C:\Users\<사용자 계정 이름>\Downloads>scp oracleasmlib-2.0.12-1.el7.x86_64.rpm root@192.168.20.101:/media
The authenticity of host '192.168.20.101 (192.168.20.101)' can't be established.
ED25519 key fingerprint is SHA256:/ICWC/S1HrNywff31jS1+J0OVwFwlWlEkmYpnh4dlEw.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?  yes
Warning: Permanently added '192.168.20.101' (ED25519) to the list of known hosts.
root@192.168.20.101's password: < Linux root 유저의 password >
oracleasmlib-2.0.12-1.el7.x86_64.rpm                                                  100%   19KB   6.3MB/s   00:00

 

<리눅스에서 진행>

[root@rac1 ~]# rpm -ivh /media/oracleasmlib-2.0.12-1.el7.x86_64.rpm
warning: /media/oracleasmlib-2.0.12-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:oracleasmlib-2.0.12-1.el7        ################################# [100%]

 

   hosts 파일을 수정합니다.

vi /etc/hosts

### Public
10.0.20.101  rac1        rac1.localdomain
10.0.20.102  rac2        rac2.localdomain
### Private
192.168.20.101  rac1-priv   rac1-priv.localdomain
192.168.20.102  rac2-priv   rac2-priv.localdomain
### Virtual
10.0.20.151  rac1-vip    rac1-vip.localdomain
10.0.20.152  rac2-vip    rac2-vip.localdomain
### SCAN
10.0.20.201  rac-scan    rac-scan.localdomain
10.0.20.202  rac-scan    rac-scan.localdomain
10.0.20.203  rac-scan    rac-scan.localdomain
더보기

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

### Public
10.0.20.101  rac1        rac1.localdomain
10.0.20.102  rac2        rac2.localdomain
### Private
192.168.20.101  rac1-priv   rac1-priv.localdomain
192.168.20.102  rac2-priv   rac2-priv.localdomain
### Virtual
10.0.20.151  rac1-vip    rac1-vip.localdomain
10.0.20.152  rac2-vip    rac2-vip.localdomain
### SCAN
10.0.20.201  rac-scan    rac-scan.localdomain
10.0.20.202  rac-scan    rac-scan.localdomain
10.0.20.203  rac-scan    rac-scan.localdomain

 

   보안 설정을 변경합니다.

   Selinux 모드를 permissive로 변경합니다.

vi /etc/selinux/config

SELINUX=permissive
더보기

[root@rac1 ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=permissive
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

 

   dnsmasq를 활성화 합니다.

   dnsmasq 서비스의 환경 설정 파일에 로컬 도메인에 대한 정보를 입력합니다.

vi /etc/dnsmasq.conf

local=/localdomain/

 

   DNS 설정 파일(resolv.conf)에는 "nameserver 127.0.0.1"가 입력되어 있어야 합니다.

   별도의 DNS 서비스 없이 SCAN을 사용하기 위해 dnsmasq 서비스를 활성화합니다.

cat /etc/resolv.conf

systemctl start dnsmasq
systemctl enable dnsmasq

reboot

nslookup rac-scan.localdomain
더보기

[root@rac1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 127.0.0.1

[root@rac1 ~]# systemctl start dnsmasq
[root@rac1 ~]# systemctl enable dnsmasq

 

[root@rac1 ~]# reboot

 

[root@rac1 ~]# nslookup rac-scan.localdomain
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   rac-scan.localdomain
Address: 10.0.20.203
Name:   rac-scan.localdomain
Address: 10.0.20.201
Name:   rac-scan.localdomain
Address: 10.0.20.202

 

   가상 메모리 파일 시스템값을  설정합니다.

vi /etc/fstab

tmpfs                   /dev/shm                tmpfs   size=8g         0 0
더보기

[root@rac1 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Oct 23 20:19:41 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/ol-root     /                       xfs     defaults        0 0
UUID=5ba71408-cd04-4981-b17b-1dba006c58f2 /boot                   xfs     defaults        0 0
/dev/mapper/ol-swap     swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   size=8g         0 0

 

    remount하여 상 메모리 파일 시스템값을 적용 시킵니다.

mount -o remount /dev/shm
df -h | grep shm
더보기

[root@rac1 ~]# mount -o remount /dev/shm
[root@rac1 ~]# df -h | grep shm
tmpfs                8.0G     0  8.0G   0% /dev/shm

 

   소프트웨어를 설치할 사용자 계정과 그룹을 생성 또는 추가합니다.

### 그룹 등록
groupadd asmadmin
groupadd asmdba
groupadd asmoper

### 유저 그룹 설정 변경 
usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba,asmoper oracle

### 계정 암호 변경
passwd oracle
더보기

 

[root@rac1 ~]# groupadd asmadmin
[root@rac1 ~]# groupadd asmdba
[root@rac1 ~]# groupadd asmoper

  
[root@rac1 ~]# usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba,asmoper oracle

[root@rac1 ~]# passwd oracle
Changing password for user oracle.
New password:  < 변경할 oracl 유저의 비밀번호 >
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: < 변경할 oracl 유저의 비밀번호 >
passwd: all authentication tokens updated successfully.

 

   오라클 소프트웨어 설치를 위한 경로를 생성하고 해당 경루에 대한 권한과 소유권을 수정합니다.

mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod -R 775 /u01
더보기

[root@rac1 ~]# mkdir -p /u01/app/oracle
[root@rac1 ~]# chown -R oracle:oinstall /u01
[root@rac1 ~]# chmod -R 775 /u01

 

   oracle 유저의 .bash_profile 을 수정합니다.

   root 계정에서 해당 파일을 직접 수정할 수 있습니다.

<oracle의 .bash_profile 수정> 

[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                # 2번 노드 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]> '

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'

[root@rac1 ~]# source ~oracle/.bash_profile
더보기

[racdb1:/root]> cat ~oracle/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

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                # 2번 노드 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]> '

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'

 

   root 계정의 .bash_profile에도 경로 정보를 입력합니다.

<root의 .bash_profile 수정>

[racdb1:/root]> 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

[racdb1:/root]> source ~/.bash_profile
더보기

[racdb1:/root]> cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

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

 

V. 공유 환경 및 2번 노드 구성

1. 공유 스토리지 구성

   아래 표에 보이는 5개의 공유 스토리지를 생성합니다.

   아래에 설명되어 있는 방식과 동일한 방식으로 5개의 공유 스토리지를 모두 생성합니다.

파일 이름 용량 타입  용도
CRS001.vid 2GB Fixed / Shareable OCR/Vote 저장 영역
CRS002.vid 2GB Fixed / Shareable
CRS003.vid 2GB Fixed / Shareable
DATA001.vid 20GB Fixed / Shareable DATA 영역
FRA001.vid 15GB Fixed / Shareable FRA 영역

 

   공유 스토리지 구성을 위해 VM을 종료합니다.

[racdb1:/root]> init 0

 

   공유 스토리지 생성을 위해 Virtual Box에서 파일 → 도구   가상미디어 관리자를 클릭합니다. 

 

   만들기를 클릭합니다.

 

   VDI ( VirtualBox 디스크 이미지) 를 선택하고 다음을 클릭합니다.

 

   미리 전체 크기 할당을 체크하고 다음을 클릭합니다.

 

   폴더 아이콘을 클릭하여 공유스토리지를 생성할 위치를 지정합니다.

 

  윈도우 탐색기 창이 뜨면 공유 스토리지를 생성할 위치로 이동합니다

   공유 스토리지를 생성할 폴더로 이동하였으면 파일 이름에 생성할 공유 스토리지의 이름을 작성하고 저장을 클릭합니다.

 

   공유 스토리지의 Size를 지정하고 완료를 클릭하면 공유 스토리지가 생성됩니다.

 

   생성된 공유 스토리지를 선택하고 속성을 클릭합니다.

 

   하단에 있는 속성 탭에서 종류를 공유가능으로 변경하고 적용 버튼을 클릭합니다.

더보기

 

 

 

 

 

   좌측에 있는 VM을 선택하고 설정을 클릭합니다.

 

  위에서 생성한 공유 스토리지를 아래의 설명과 동일한 방식으로 모두 추가합니다. 

   좌측에 있는 항목들 중 저장소로 이동하고 컨트롤러:SATA 에서 우측에 있는 아이콘을 클릭합니다.

 

   위에서 만들어 두었던 공유스토리지인 CRS001을 클릭하고 선택 버튼을 클릭합니다.

더보기

 

 

 

 

 

 

   위에서 생성한 5개의 공유 스토리지를 모두 추가하였으면 확인 버튼을 클릭합니다.

 

  좌측에서 VM을 선택하고 시작을 클릭합니다.

 

2. ASM 환경 구성

   ASM library에 대한 추가적인 환경 설정(사용자, 그룹, 부팅시 활성화, 부팅시 스캔 여부)을 수행하고 적용 여부를 검증합니다.

oracleasm configure -i   # "oracle" "asmadmin" "y" "y" 순서로 입력
oracleasm init
oracleasm status
oracleasm configure
더보기

[root@rac1 ~]# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

 

[root@rac1 ~]# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm

 

[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=asmadmin
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_SCAN_DIRECTORIES=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"

 

 

  VM에 연결된 디스크에 fdisk 명령어로 파티션 분할 작업을 수행 합니다.

  Enter는 값을 입력하지 않고 Enter를 눌러 넘어갑니다.

ls /dev/sd*
fdisk /dev/sdb  # "n", "p", "1", "Enter", "Enter", "w" 입력
fdisk /dev/sdc  # "n", "p", "1", "Enter", "Enter", "w" 입력
fdisk /dev/sdd  # "n", "p", "1", "Enter", "Enter", "w" 입력
fdisk /dev/sde  # "n", "p", "1", "Enter", "Enter", "w" 입력
fdisk /dev/sdf  # "n", "p", "1", "Enter", "Enter", "w" 입력
ls /dev/sd*
더보기

[root@rac1 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde  /dev/sdf

 

[root@rac1 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x93bfbed2.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-4194303, default 2048):  <Enter>
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): <Enter>
Using default value 4194303
Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 


[root@rac1 ~]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x3182e2da.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-4194303, default 2048): <Enter>
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): <Enter>
Using default value 4194303
Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 


[root@rac1 ~]# fdisk /dev/sdd
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x153e3f11.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-4194303, default 2048): <Enter>
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): <Enter>
Using default value 4194303
Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 


[root@rac1 ~]# fdisk /dev/sde
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x47f04501.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): <Enter>
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): <Enter>
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 


[root@rac1 ~]# fdisk /dev/sdf
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x52b924b4.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-31457279, default 2048): <Enter>
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279): <Enter>
Using default value 31457279
Partition 1 of type Linux and of size 15 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 

[root@rac1 ~]# ls /dev/sd*
/dev/sda   /dev/sda2  /dev/sdb1  /dev/sdc1  /dev/sdd1  /dev/sde1  /dev/sdf1
/dev/sda1  /dev/sdb   /dev/sdc   /dev/sdd   /dev/sde   /dev/sdf

 

  VM에 마운트된 공유 스토리를 각각 ASM Disk로 할당해줍니다.

  공유 스토리지가 순서대로 마운트가 되었다면, 디바이스 명의 알파벳 순으로 ASM Disk를 생성하면 됩니다.

oracleasm createdisk CRS001 /dev/sdb1
oracleasm createdisk CRS002 /dev/sdc1
oracleasm createdisk CRS003 /dev/sdd1
oracleasm createdisk DATA001 /dev/sde1
oracleasm createdisk FRA001 /dev/sdf1
oracleasm scandisks
oracleasm listdisks
더보기

[root@rac1 ~]# oracleasm createdisk CRS001 /dev/sdb1
Writing disk header: done
Instantiating disk: done


[root@rac1 ~]# oracleasm createdisk CRS002 /dev/sdc1
Writing disk header: done
Instantiating disk: done


[root@rac1 ~]# oracleasm createdisk CRS003 /dev/sdd1
Writing disk header: done
Instantiating disk: done


[root@rac1 ~]# oracleasm createdisk DATA001 /dev/sde1
Writing disk header: done
Instantiating disk: done


[root@rac1 ~]# oracleasm createdisk FRA001 /dev/sdf1
Writing disk header: done
Instantiating disk: done


[root@rac1 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...


[root@rac1 ~]# oracleasm listdisks
CRS001
CRS002
CRS003
DATA001
FRA001

 

3. 2번 노드 구성

  VM을 종료합니다.

init 0

 

  2번 노드 복제를 위해서 VM에 마운된 공유 스토리지를 해제합니다.

  VM을 선택하고 설정을 클릭합니다.

 

  설정창의 왼쪽 항목 중 저장소를 클릭하고 CRS001을 우클릭하여 연결 삭제를 클릭합니다.

  남아있는 CRS002, CRS003, DATA001, FRA001도 모두 연결해제 합니다.

더보기

  CRS002를 우클릭하여 연결 삭제를 클릭합니다.

  CRS003을 우클릭하여 연결 삭제를 클릭합니다.

  DATA001을 우클릭하여 연결 삭제를 클릭합니다.

  FRA001을 우클릭하여 연결 삭제를 클릭합니다.

 

  공유 스토리지를 모두 제거하였으면 확인 버튼을 클릭합니다.

 

  1번 노드로 사용할 VM을 우클릭하여 복제를 클릭합니다.

 

  2번노드로 사용할 VM의 이름을 설정합니다.

  경로에서 기타를 선택하여 2번 노드의 VM을 생성할 위치를 지정합니다.

 

윈도우 탐색기 창에서 2번 노드 VM을 생성할 위치로 이동하여 폴더 선택 버튼을 클릭합니다.

 

 2번 노드의 이름과 경로가 제대로 설정되었으면 다음 버튼을 클릭합니다.

 

  완전한 복제를 선택하고 다음 버튼을 클릭합니다.

 

  현재 머신 상태를 선택하고 완료 버튼을 클릭합니다.

 

  1번 노드로 사용할 VM을 선택하고 설정을 클릭합니다.

 

 저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

  디스크를 선택할 수 있는 창이 뜨면 위에서 생성한 공유 스토리지를 추가합니다.

  공유 스토리지를 추가할 떄 2번 노드를 복제하기 전과 동일한 순서로 공유 스토리지를 추가합니다.

  CRS001을 클릭하고 선택 버튼을 클릭합니다.

  CRS002,  CRS003, DATA001,  FRA001도 동일한 방식으로 모두 추가합니다.

더보기

  저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

 CRS002을 클릭하고 선택 버튼을 클릭합니다.

  저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

  CRS003을 클릭하고 선택 버튼을 클릭합니다.

  저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

  DATA001을 클릭하고 선택 버튼을 클릭합니다.

  저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

  FRA001을 클릭하고 선택 버튼을 클릭합니다.

 

  공유 스토리지를 모두 선택하였으면 확인 버튼을 클릭합니다.

 

  2번 노드로 사용할 VM을 선택하고 설정 버튼을 클릭합니다.

 

  저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

  디스크를 선택할 수 있는 창이 뜨면 위에서 생성한 공유 스토리지를 추가합니다.

  공유 스토리지를 추가할 떄 1번 노드와 동일한 순서로 공유 스토리지를 추가합니다.

  CRS001을 클릭하고 선택 버튼을 클릭합니다.

  CRS002,  CRS003, DATA001,  FRA001도 동일한 방식으로 모두 추가합니다.

더보기

  저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

  CRS002을 클릭하고 선택 버튼을 클릭합니다.

  저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

  CRS003을 클릭하고 선택 버튼을 클릭합니다.

  저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

  DATA001을 클릭하고 선택 버튼을 클릭합니다.

  저장소를 선택하고 컨트롤러:SATA에서 오른쪽에 있는 CD 아이콘을 클릭합니다.

  FRA001을 클릭하고 선택 버튼을 클릭합니다.

 

  공유 스토리지를 모두 추가하였으면 왼쪽에 있는 항목중 네트워크를 클릭합니다.

  어댑터 1번을 클릭하고 고급을 클릭하여 MAC주소의 새로고침 아이콘을 클릭하여 MAC 주소를 변경합니다.

 

  어댑터 2번을 클릭하고 고급을 클릭하여 MAC주소의 새로고침 아이콘을 클릭하여 MAC 주소를 변경합니다.

  MAC 주소를 변경하였으면 확인 버튼을 클릭합니다.

 

  2번 노드로 사용할 VM을 선택하고 시작 버튼을 클릭합니다.

 

  root 유저로 로그인 하기 위해 Not listed를  클릭합니다.

 

 • Username에  root 를 입력하고 Next 버튼을 클릭합니다.

 

 • root 유저의 password를 입력하고 Sign In을 클릭합니다.

 

• 오른쪽 상단에 있는 아이콘을 클릭합니다.

• 설정창이 뜨면 왼쪽 하단에 있는 설정 아이콘을 클릭합니다.

 

• Settings 항목 중 Network를 선택하고 enp0s3의 톱니바퀴 아이콘을 클릭합니다.

 

• IPv4 탭으로 이동하고 Address를 2번노드의 Public IP로 변경하고 Apply 버튼을 클릭합니다.

 

• enp0s8의 톱니바퀴 아이콘을 클릭합니다.

 

• IPv4 탭으로 이동하고 Address를 2번노드의 Private IP로 변경하고 Apply 버튼을 클릭합니다.

 

• 오른쪽 상단의 X 버튼을 클릭하여 설정창을 닫습니다.

 

• 변경한 IP를 적용하기 위해 network를 재시작합니다.

service network restart
더보기

[root@rac1 ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]

 

• 2번 노드의 hostname을 rac2로 변경합니다.

• hostname을 변경한 후에 새로운 세션으로 접속을 해야 변경된 hostname으로 보입니다.

hostname
hostnamectl set-hostname rac2
hostname
더보기

[root@rac1 ~]# hostname
rac1


[root@rac1 ~]# hostnamectl set-hostname rac2
[root@rac1 ~]# hostname
rac2

 

• oracle 유저의 .bash_profile을 변경하고 적용 시켜줍니다.

vi ~oracle/.bash_profile

export ORACLE_HOSTNAME=rac2
export ORACLE_SID=racdb2

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'


source ~oracle/.bash_profile
더보기


[root@rac1 ~]# vi ~oracle/.bash_profile

 

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac2            # 호스트명에 맞게 변경
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=racdb2                # 2번 노드 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]> '

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'

 

[root@rac1 ~]# source ~oracle/.bash_profile

 

VI. Grid Infrastructure 설치

1. 준비 작업

• 1번 노드로 사용할 VM을 선택하고 시작을 클릭합니다.

 

1번 노드에 oracle 유저로 접속한 후 $GRID_HOME 디렉토리를 생성합니다.

[root@rac1 ~]# su - oracle
[racdb1:/home/oracle]> grid_env
[+ASM1:/home/oracle]> mkdir -p $GRID_HOME
더보기

[root@rac1 ~]# su - oracle
Last login: Wed Oct 25 23:20:04 KST 2023 from 192.168.20.1 on pts/0

[racdb1:/home/oracle]> grid_env
[+ASM1:/home/oracle]> mkdir -p $GRID_HOME

 

•  윈도우에서 다운로드 받은 grid 파일을 리눅스 서버의 $GRID_HOME의 경로로 옮김니다.

<윈도우 CMD 창에서 진행>

cd Downloads
C:\Users\<사용자 계정 이름>\Downloads>scp LINUX.X64_193000_grid_home.zip oracle@192.168.20.101:/u01/app/19c/grid/
더보기

C:\Users\<사용자 계정 이름>>cd Downloads

 

C:\Users\<사용자 계정 이름>\Downloads>scp LINUX.X64_193000_grid_home.zip oracle@192.168.20.101:/u01/app/19c/grid/
oracle@192.168.20.101's password: < oracle 유저의 password 입력> 
LINUX.X64_193000_grid_home.zip                                                        100% 2755MB  74.8MB/s   00:36

 

 

•  grid 파일의 압축을 해제합니다.

•  root 계정으로 접속하여 cvuqdisk 패키지를 모든 노드에 설치합니다.

# grid zip 파일 압축 해제
unzip LINUX.X64_193000_grid_home.zip

# cvuqdisk 패키지 설치 (1번 노드 root 유저로 실행)
cd $GRID_HOME/cv/rpm
rpm -ivh cvuqdisk-*.rpm

# 2번 노드로 rpm 파일 전송 후 접속
scp cvuqdisk-*.rpm rac2:/tmp
ssh root@rac2

# cvuqdisk 패키지 설치 (2번 노드 root 유저로 실행)
cd /tmp
rpm -ivh cvuqdisk-*.rpm
exit
더보기

 

# grid zip 파일 압축 해제

[+ASM1:/u01/app/19c/grid]> unzip LINUX.X64_193000_grid_home.zip

### cvuqdisk 패키지 설치 (1번 노드 root 유저로 실행
)
[root@rac1 ~]# cd $GRID_HOME/cv/rpm
[root@rac1 rpm]# rpm -ivh cvuqdisk-1.0.10-1.rpm
Preparing...                          ################################# [100%]
Using default group oinstall to install package
Updating / installing...
   1:cvuqdisk-1.0.10-1                ################################# [100%]


### 2번 노드로 rpm 파일 전송 후 접속
[root@rac1 rpm]# scp cvuqdisk-1.0.10-1.rpm rac2:/tmp
The authenticity of host 'rac2 (10.0.20.102)' can't be established.
ECDSA key fingerprint is SHA256:/9wzYYRQ9IEQJ0I6QMtxg7cE5zFdGWKFgWi84vuS12I.
ECDSA key fingerprint is MD5:7a:a0:e8:71:73:96:b2:70:f6:d7:b7:44:0f:9f:88:55.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac2,10.0.20.102' (ECDSA) to the list of known hosts.
root@rac2's password: < rac2번 노드의 root 의 password 입력>
cvuqdisk-1.0.10-1.rpm                                                                                                                            100%   11KB   3.2MB/s   00:00

 

[root@rac1 rpm]# ssh root@rac2
root@rac2's password: < rac2번 노드의 root 의 password 입력>
Last login: Wed Oct 25 23:09:21 2023 from 192.168.20.1

### cvuqdisk 패키지 설치 (2번 노드 root 유저로 실행)
[root@rac2 ~]# cd /tmp

[root@rac2 tmp]# rpm -ivh cvuqdisk-1.0.10-1.rpm
Preparing...                          ################################# [100%]
Using default group oinstall to install package
Updating / installing...
   1:cvuqdisk-1.0.10-1                ################################# [100%]

 

[root@rac2 tmp]# exit

 

•  oracle 유저에 대한 비밀번호 없는 SSH 접속 설정을 위해  sshUserSetup.sh 스크립트를 수행합니다.

[root@rac1 rpm]# su - oracle
[racdb1:/home/oracle]> grid_env
[+ASM1:/home/oracle]> cd $GRID_HOME/oui/prov/resources/scripts
[+ASM1:/u01/app/19c/grid/oui/prov/resources/scripts]> ./sshUserSetup.sh -user oracle -hosts "rac1 rac2" -noPromptPassphrase -advanced
더보기

[root@rac1 rpm]# su - oracle
Last login: Wed Oct 25 23:42:59 KST 2023 on pts/1
[racdb1:/home/oracle]> grid_env
[+ASM1:/home/oracle]> cd $GRID_HOME/oui/prov/resources/scripts
[+ASM1:/u01/app/19c/grid/oui/prov/resources/scripts]> ./sshUserSetup.sh -user oracle -hosts "rac1 rac2" -noPromptPassphrase -advanced
The output of this script is also logged into /tmp/sshUserSetup_2023-10-26-00-06-41.log
Hosts are rac1 rac2
user is oracle
Platform:- Linux
Checking if the remote hosts are reachable
PING rac1 (10.0.20.101) 56(84) bytes of data.
64 bytes from rac1 (10.0.20.101): icmp_seq=1 ttl=64 time=0.017 ms
64 bytes from rac1 (10.0.20.101): icmp_seq=2 ttl=64 time=0.065 ms
64 bytes from rac1 (10.0.20.101): icmp_seq=3 ttl=64 time=0.066 ms
64 bytes from rac1 (10.0.20.101): icmp_seq=4 ttl=64 time=0.066 ms
64 bytes from rac1 (10.0.20.101): icmp_seq=5 ttl=64 time=0.068 ms

--- rac1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4179ms
rtt min/avg/max/mdev = 0.017/0.056/0.068/0.020 ms
PING rac2 (10.0.20.102) 56(84) bytes of data.
64 bytes from rac2 (10.0.20.102): icmp_seq=1 ttl=64 time=0.836 ms
64 bytes from rac2 (10.0.20.102): icmp_seq=2 ttl=64 time=0.253 ms
64 bytes from rac2 (10.0.20.102): icmp_seq=3 ttl=64 time=0.886 ms
64 bytes from rac2 (10.0.20.102): icmp_seq=4 ttl=64 time=0.333 ms
64 bytes from rac2 (10.0.20.102): icmp_seq=5 ttl=64 time=0.869 ms

--- rac2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4080ms
rtt min/avg/max/mdev = 0.253/0.635/0.886/0.282 ms
Remote host reachability check succeeded.
The following hosts are reachable: rac1 rac2.
The following hosts are not reachable: .
All hosts are reachable. Proceeding further...
firsthost rac1
numhosts 2
The script will setup SSH connectivity from the host rac1 to all
the remote hosts. After the script is executed, the user can use SSH to run
commands on the remote hosts or copy files between this host rac1
and the remote hosts without being prompted for passwords or confirmations.

NOTE 1:
As part of the setup procedure, this script will use ssh and scp to copy
files between the local host and the remote hosts. Since the script does not
store passwords, you may be prompted for the passwords during the execution of
the script whenever ssh or scp is invoked.

NOTE 2:
AS PER SSH REQUIREMENTS, THIS SCRIPT WILL SECURE THE USER HOME DIRECTORY
AND THE .ssh DIRECTORY BY REVOKING GROUP AND WORLD WRITE PRIVILEGES TO THESE
directories.

Do you want to continue and let the script make the above mentioned changes (yes/no)?
yes

The user chose yes
User chose to skip passphrase related questions.
Creating .ssh directory on local host, if not present already
Creating authorized_keys file on local host
Changing permissions on authorized_keys to 644 on local host
Creating known_hosts file on local host
Changing permissions on known_hosts to 644 on local host
Creating config file on local host
If a config file exists already at /home/oracle/.ssh/config, it would be backed up to /home/oracle/.ssh/config.backup.
Removing old private/public keys on local host
Running SSH keygen on local host with empty passphrase
Generating public/private rsa key pair.
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:FMIguwUjGDMZqi9NVjBGFDn4qOkEymhj2gnVOekZDIU oracle@rac1
The key's randomart image is:
+---[RSA 1024]----+
|BB@=oo. .        |
|==EB  .. .       |
|.o.=oo  .        |
|+ o+B  .         |
|Bo+. +  S        |
|*@  o            |
|Bo+.             |
|.oo              |
|                 |
+----[SHA256]-----+
Creating .ssh directory and setting permissions on remote host rac1
THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR oracle. THIS IS AN SSH REQUIREMENT.
The script would create ~oracle/.ssh/config file on remote host rac1. If a config file exists already at ~oracle/.ssh/config, it would be backed up to ~oracle/.ssh/config.backup.
The user may be prompted for a password here since the script would be running SSH on host rac1.
Warning: Permanently added 'rac1,10.0.20.101' (ECDSA) to the list of known hosts.
oracle@rac1's password: <1번 노드의 oracle 유저의 password 입력 >
Done with creating .ssh directory and setting permissions on remote host rac1.
Creating .ssh directory and setting permissions on remote host rac2
THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR oracle. THIS IS AN SSH REQUIREMENT.
The script would create ~oracle/.ssh/config file on remote host rac2. If a config file exists already at ~oracle/.ssh/config, it would be backed up to ~oracle/.ssh/config.backup.
The user may be prompted for a password here since the script would be running SSH on host rac2.
Warning: Permanently added 'rac2,10.0.20.102' (ECDSA) to the list of known hosts.
oracle@rac2's password: <2번 노드의 oracle 유저의 password 입력 >
Done with creating .ssh directory and setting permissions on remote host rac2.
Copying local host public key to the remote host rac1
The user may be prompted for a password or passphrase here since the script would be using SCP for host rac1.
oracle@rac1's password: <1번 노드의 oracle 유저의 password 입력 >
Done copying local host public key to the remote host rac1
Copying local host public key to the remote host rac2
The user may be prompted for a password or passphrase here since the script would be using SCP for host rac2.
oracle@rac2's password: <2번 노드의 oracle 유저의 password 입력 >
Done copying local host public key to the remote host rac2
Creating keys on remote host rac1 if they do not exist already. This is required to setup SSH on host rac1.

Creating keys on remote host rac2 if they do not exist already. This is required to setup SSH on host rac2.
Generating public/private rsa key pair.
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
SHA256:yG75VJcaHUYHaeQbwvKL9Z02VNxg/Bt1Ubfs+5zz1yA oracle@rac2
The key's randomart image is:
+---[RSA 1024]----+
|           .+++.=|
|         . ooooo*|
|        . o.=  +*|
|     . . o + =.o.|
|      o S = = ..o|
|     . . + *Eo.o.|
|      + o o ..=o.|
|     . o     . +=|
|        .      .B|
+----[SHA256]-----+
Updating authorized_keys file on remote host rac1
Updating known_hosts file on remote host rac1
Updating authorized_keys file on remote host rac2
Updating known_hosts file on remote host rac2
cat: /home/oracle/.ssh/known_hosts.tmp: No such file or directory
cat: /home/oracle/.ssh/authorized_keys.tmp: No such file or directory
SSH setup is complete.

------------------------------------------------------------------------
Verifying SSH setup
===================
The script will now run the date command on the remote nodes using ssh
to verify if ssh is setup correctly. IF THE SETUP IS CORRECTLY SETUP,
THERE SHOULD BE NO OUTPUT OTHER THAN THE DATE AND SSH SHOULD NOT ASK FOR
PASSWORDS. If you see any output other than date or are prompted for the
password, ssh is not setup correctly and you will need to resolve the
issue and set up ssh again.
The possible causes for failure could be:
1. The server settings in /etc/ssh/sshd_config file do not allow ssh
for user oracle.
2. The server may have disabled public key based authentication.
3. The client public key on the server may be outdated.
4. ~oracle or ~oracle/.ssh on the remote host may not be owned by oracle.
5. User may not have passed -shared option for shared remote users or
may be passing the -shared option for non-shared remote users.
6. If there is output in addition to the date, but no password is asked,
it may be a security alert shown as part of company policy. Append the
additional text to the /sysman/prov/resources/ignoreMessages.txt file.</oms home>
------------------------------------------------------------------------
--rac1:--
Running /usr/bin/ssh -x -l oracle rac1 date to verify SSH connectivity has been setup from local host to rac1.
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL. Please note that being prompted for a passphrase may be OK but being prompted for a password is ERROR.
Thu Oct 26 00:07:11 KST 2023
------------------------------------------------------------------------
--rac2:--
Running /usr/bin/ssh -x -l oracle rac2 date to verify SSH connectivity has been setup from local host to rac2.
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL. Please note that being prompted for a passphrase may be OK but being prompted for a password is ERROR.
Thu Oct 26 00:07:11 KST 2023
------------------------------------------------------------------------
------------------------------------------------------------------------
Verifying SSH connectivity has been setup from rac1 to rac1
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL.
Thu Oct 26 00:07:11 KST 2023
------------------------------------------------------------------------
------------------------------------------------------------------------
Verifying SSH connectivity has been setup from rac1 to rac2
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL.
Thu Oct 26 00:07:12 KST 2023
------------------------------------------------------------------------
-Verification from complete-
SSH verification complete.

 

•  설치를 진행하기에 앞서 모든 노드의 클러스터 구성 환경을 사전 검증하는 스크립트를 fixup 모드로 실행합니다.

•  수정이 가능한 항목이 있을 경우, 자동으로 환경 설정을 수정하는 runfixup.sh 스크립트가 생성되며, 해당 스크립트는 root 유저로 실행이 필요한 노드에서 실행하면 됩니다.

•  설치에 앞서 수정할 부분이나 문제가 될 부분이 있는지 사전에 확인하고, 반드시 이를 해결하고 진행하도록 합니다.

[+ASM1:/u01/app/19c/grid/oui/prov/resources/scripts]> cd $GRID_HOME
[+ASM1:/u01/app/19c/grid]> ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -osdba dba -orainv oinstall -fixup -method root -networks enp0s3/enp0s8 -verbose
더보기

[+ASM1:/u01/app/19c/grid/oui/prov/resources/scripts]> cd $GRID_HOME
[+ASM1:/u01/app/19c/grid]> ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -osdba dba -orainv oinstall -fixup -method root -networks enp0s3/enp0s8 -verbose
Enter "ROOT" password: < root 유저의 password 입력>

Verifying Physical Memory ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          7.7789GB (8156756.0KB)    8GB (8388608.0KB)         passed
  rac1          7.7789GB (8156768.0KB)    8GB (8388608.0KB)         passed
Verifying Physical Memory ...PASSED
Verifying Available Physical Memory ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          7.1414GB (7488304.0KB)    50MB (51200.0KB)          passed
  rac1          6.9639GB (7302140.0KB)    50MB (51200.0KB)          passed
Verifying Available Physical Memory ...PASSED
Verifying Swap Size ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          8GB (8388604.0KB)         7.7789GB (8156756.0KB)    passed
  rac1          8GB (8388604.0KB)         7.7789GB (8156768.0KB)    passed
Verifying Swap Size ...PASSED
Verifying Free Space: rac2:/usr,rac2:/var,rac2:/etc,rac2:/sbin,rac2:/tmp ...
  Path              Node Name     Mount point   Available     Required      Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  /usr              rac2          /             91.0156GB     25MB          passed
  /var              rac2          /             91.0156GB     5MB           passed
  /etc              rac2          /             91.0156GB     25MB          passed
  /sbin             rac2          /             91.0156GB     10MB          passed
  /tmp              rac2          /             91.0156GB     1GB           passed
Verifying Free Space: rac2:/usr,rac2:/var,rac2:/etc,rac2:/sbin,rac2:/tmp ...PASSED
Verifying Free Space: rac1:/usr,rac1:/var,rac1:/etc,rac1:/sbin,rac1:/tmp ...
  Path              Node Name     Mount point   Available     Required      Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  /usr              rac1          /             81.9625GB     25MB          passed
  /var              rac1          /             81.9625GB     5MB           passed
  /etc              rac1          /             81.9625GB     25MB          passed
  /sbin             rac1          /             81.9625GB     10MB          passed
  /tmp              rac1          /             81.9625GB     1GB           passed
Verifying Free Space: rac1:/usr,rac1:/var,rac1:/etc,rac1:/sbin,rac1:/tmp ...PASSED
Verifying User Existence: oracle ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  rac2          passed                    exists(1000)
  rac1          passed                    exists(1000)

  Verifying Users With Same UID: 1000 ...PASSED
Verifying User Existence: oracle ...PASSED
Verifying Group Existence: asmadmin ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  rac2          passed                    exists
  rac1          passed                    exists
Verifying Group Existence: asmadmin ...PASSED
Verifying Group Existence: dba ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  rac2          passed                    exists
  rac1          passed                    exists
Verifying Group Existence: dba ...PASSED
Verifying Group Existence: oinstall ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  rac2          passed                    exists
  rac1          passed                    exists
Verifying Group Existence: oinstall ...PASSED
Verifying Group Membership: asmadmin ...
  Node Name         User Exists   Group Exists  User in Group  Status
  ----------------  ------------  ------------  ------------  ----------------
  rac2              yes           yes           yes           passed
  rac1              yes           yes           yes           passed
Verifying Group Membership: asmadmin ...PASSED
Verifying Group Membership: oinstall(Primary) ...
  Node Name         User Exists   Group Exists  User in Group  Primary       Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac2              yes           yes           yes           yes           passed
  rac1              yes           yes           yes           yes           passed
Verifying Group Membership: oinstall(Primary) ...PASSED
Verifying Group Membership: dba ...
  Node Name         User Exists   Group Exists  User in Group  Status
  ----------------  ------------  ------------  ------------  ----------------
  rac2              yes           yes           yes           passed
  rac1              yes           yes           yes           passed
Verifying Group Membership: dba ...PASSED
Verifying Run Level ...
  Node Name     run level                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          5                         3,5                       passed
  rac1          5                         3,5                       passed
Verifying Run Level ...PASSED
Verifying Hard Limit: maximum open file descriptors ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  rac2              hard          65536         65536         passed
  rac1              hard          65536         65536         passed
Verifying Hard Limit: maximum open file descriptors ...PASSED
Verifying Soft Limit: maximum open file descriptors ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  rac2              soft          1024          1024          passed
  rac1              soft          1024          1024          passed
Verifying Soft Limit: maximum open file descriptors ...PASSED
Verifying Hard Limit: maximum user processes ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  rac2              hard          16384         16384         passed
  rac1              hard          16384         16384         passed
Verifying Hard Limit: maximum user processes ...PASSED
Verifying Soft Limit: maximum user processes ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  rac2              soft          16384         2047          passed
  rac1              soft          16384         2047          passed
Verifying Soft Limit: maximum user processes ...PASSED
Verifying Soft Limit: maximum stack size ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  rac2              soft          10240         10240         passed
  rac1              soft          10240         10240         passed
Verifying Soft Limit: maximum stack size ...PASSED
Verifying Architecture ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          x86_64                    x86_64                    passed
  rac1          x86_64                    x86_64                    passed
Verifying Architecture ...PASSED
Verifying OS Kernel Version ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          4.14.35-1902.3.2.el7uek.x86_64  4.1.12                    passed
  rac1          4.14.35-1902.3.2.el7uek.x86_64  4.1.12                    passed
Verifying OS Kernel Version ...PASSED
Verifying OS Kernel Parameter: semmsl ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              250           250           250           passed
  rac2              250           250           250           passed
Verifying OS Kernel Parameter: semmsl ...PASSED
Verifying OS Kernel Parameter: semmns ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              32000         32000         32000         passed
  rac2              32000         32000         32000         passed
Verifying OS Kernel Parameter: semmns ...PASSED
Verifying OS Kernel Parameter: semopm ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              100           100           100           passed
  rac2              100           100           100           passed
Verifying OS Kernel Parameter: semopm ...PASSED
Verifying OS Kernel Parameter: semmni ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              128           128           128           passed
  rac2              128           128           128           passed
Verifying OS Kernel Parameter: semmni ...PASSED
Verifying OS Kernel Parameter: shmmax ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              4398046511104  4398046511104  4176265216    passed
  rac2              4398046511104  4398046511104  4176259072    passed
Verifying OS Kernel Parameter: shmmax ...PASSED
Verifying OS Kernel Parameter: shmmni ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              4096          4096          4096          passed
  rac2              4096          4096          4096          passed
Verifying OS Kernel Parameter: shmmni ...PASSED
Verifying OS Kernel Parameter: shmall ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              1073741824    1073741824    1073741824    passed
  rac2              1073741824    1073741824    1073741824    passed
Verifying OS Kernel Parameter: shmall ...PASSED
Verifying OS Kernel Parameter: file-max ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              6815744       6815744       6815744       passed
  rac2              6815744       6815744       6815744       passed
Verifying OS Kernel Parameter: file-max ...PASSED
Verifying OS Kernel Parameter: ip_local_port_range ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              between 9000 & 65500  between 9000 & 65500  between 9000 & 65535  passed
  rac2              between 9000 & 65500  between 9000 & 65500  between 9000 & 65535  passed
Verifying OS Kernel Parameter: ip_local_port_range ...PASSED
Verifying OS Kernel Parameter: rmem_default ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              262144        262144        262144        passed
  rac2              262144        262144        262144        passed
Verifying OS Kernel Parameter: rmem_default ...PASSED
Verifying OS Kernel Parameter: rmem_max ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              4194304       4194304       4194304       passed
  rac2              4194304       4194304       4194304       passed
Verifying OS Kernel Parameter: rmem_max ...PASSED
Verifying OS Kernel Parameter: wmem_default ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              262144        262144        262144        passed
  rac2              262144        262144        262144        passed
Verifying OS Kernel Parameter: wmem_default ...PASSED
Verifying OS Kernel Parameter: wmem_max ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              1048576       1048576       1048576       passed
  rac2              1048576       1048576       1048576       passed
Verifying OS Kernel Parameter: wmem_max ...PASSED
Verifying OS Kernel Parameter: aio-max-nr ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              1048576       1048576       1048576       passed
  rac2              1048576       1048576       1048576       passed
Verifying OS Kernel Parameter: aio-max-nr ...PASSED
Verifying OS Kernel Parameter: panic_on_oops ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              1             1             1             passed
  rac2              1             1             1             passed
Verifying OS Kernel Parameter: panic_on_oops ...PASSED
Verifying Package: kmod-20-21 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          kmod(x86_64)-20-25.0.1.el7  kmod(x86_64)-20-21        passed
  rac1          kmod(x86_64)-20-25.0.1.el7  kmod(x86_64)-20-21        passed
Verifying Package: kmod-20-21 (x86_64) ...PASSED
Verifying Package: kmod-libs-20-21 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          kmod-libs(x86_64)-20-25.0.1.el7  kmod-libs(x86_64)-20-21   passed
  rac1          kmod-libs(x86_64)-20-25.0.1.el7  kmod-libs(x86_64)-20-21   passed
Verifying Package: kmod-libs-20-21 (x86_64) ...PASSED
Verifying Package: binutils-2.23.52.0.1 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          binutils-2.27-41.base.0.1.el7  binutils-2.23.52.0.1      passed
  rac1          binutils-2.27-41.base.0.1.el7  binutils-2.23.52.0.1      passed
Verifying Package: binutils-2.23.52.0.1 ...PASSED
Verifying Package: compat-libcap1-1.10 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          compat-libcap1-1.10-7.el7  compat-libcap1-1.10       passed
  rac1          compat-libcap1-1.10-7.el7  compat-libcap1-1.10       passed
Verifying Package: compat-libcap1-1.10 ...PASSED
Verifying Package: libgcc-4.8.2 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          libgcc(x86_64)-4.8.5-39.0.1.el7  libgcc(x86_64)-4.8.2      passed
  rac1          libgcc(x86_64)-4.8.5-39.0.1.el7  libgcc(x86_64)-4.8.2      passed
Verifying Package: libgcc-4.8.2 (x86_64) ...PASSED
Verifying Package: libstdc++-4.8.2 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          libstdc++(x86_64)-4.8.5-39.0.1.el7  libstdc++(x86_64)-4.8.2   passed
  rac1          libstdc++(x86_64)-4.8.5-39.0.1.el7  libstdc++(x86_64)-4.8.2   passed
Verifying Package: libstdc++-4.8.2 (x86_64) ...PASSED
Verifying Package: libstdc++-devel-4.8.2 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          libstdc++-devel(x86_64)-4.8.5-39.0.1.el7  libstdc++-devel(x86_64)-4.8.2  passed
  rac1          libstdc++-devel(x86_64)-4.8.5-39.0.1.el7  libstdc++-devel(x86_64)-4.8.2  passed
Verifying Package: libstdc++-devel-4.8.2 (x86_64) ...PASSED
Verifying Package: sysstat-10.1.5 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          sysstat-10.1.5-18.el7     sysstat-10.1.5            passed
  rac1          sysstat-10.1.5-18.el7     sysstat-10.1.5            passed
Verifying Package: sysstat-10.1.5 ...PASSED
Verifying Package: ksh ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          ksh                       ksh                       passed
  rac1          ksh                       ksh                       passed
Verifying Package: ksh ...PASSED
Verifying Package: make-3.82 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          make-3.82-24.el7          make-3.82                 passed
  rac1          make-3.82-24.el7          make-3.82                 passed
Verifying Package: make-3.82 ...PASSED
Verifying Package: glibc-2.17 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          glibc(x86_64)-2.17-292.0.1.el7  glibc(x86_64)-2.17        passed
  rac1          glibc(x86_64)-2.17-292.0.1.el7  glibc(x86_64)-2.17        passed
Verifying Package: glibc-2.17 (x86_64) ...PASSED
Verifying Package: glibc-devel-2.17 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          glibc-devel(x86_64)-2.17-292.0.1.el7  glibc-devel(x86_64)-2.17  passed
  rac1          glibc-devel(x86_64)-2.17-292.0.1.el7  glibc-devel(x86_64)-2.17  passed
Verifying Package: glibc-devel-2.17 (x86_64) ...PASSED
Verifying Package: libaio-0.3.109 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          libaio(x86_64)-0.3.109-13.el7  libaio(x86_64)-0.3.109    passed
  rac1          libaio(x86_64)-0.3.109-13.el7  libaio(x86_64)-0.3.109    passed
Verifying Package: libaio-0.3.109 (x86_64) ...PASSED
Verifying Package: libaio-devel-0.3.109 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          libaio-devel(x86_64)-0.3.109-13.el7  libaio-devel(x86_64)-0.3.109  passed
  rac1          libaio-devel(x86_64)-0.3.109-13.el7  libaio-devel(x86_64)-0.3.109  passed
Verifying Package: libaio-devel-0.3.109 (x86_64) ...PASSED
Verifying Package: nfs-utils-1.2.3-15 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          nfs-utils-1.3.0-0.65.0.1.el7  nfs-utils-1.2.3-15        passed
  rac1          nfs-utils-1.3.0-0.65.0.1.el7  nfs-utils-1.2.3-15        passed
Verifying Package: nfs-utils-1.2.3-15 ...PASSED
Verifying Package: smartmontools-6.2-4 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          smartmontools-7.0-1.el7   smartmontools-6.2-4       passed
  rac1          smartmontools-7.0-1.el7   smartmontools-6.2-4       passed
Verifying Package: smartmontools-6.2-4 ...PASSED
Verifying Package: net-tools-2.0-0.17 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          net-tools-2.0-0.25.20131004git.el7  net-tools-2.0-0.17        passed
  rac1          net-tools-2.0-0.25.20131004git.el7  net-tools-2.0-0.17        passed
Verifying Package: net-tools-2.0-0.17 ...PASSED
Verifying Port Availability for component "Oracle Notification Service (ONS)" ...
  Node Name         Port Number   Protocol      Available     Status
  ----------------  ------------  ------------  ------------  ----------------
  rac2              6200          TCP           yes           successful
  rac1              6200          TCP           yes           successful
  rac2              6100          TCP           yes           successful
  rac1              6100          TCP           yes           successful
Verifying Port Availability for component "Oracle Notification Service (ONS)" ...PASSED
Verifying Port Availability for component "Oracle Cluster Synchronization Services (CSSD)" ...
  Node Name         Port Number   Protocol      Available     Status
  ----------------  ------------  ------------  ------------  ----------------
  rac2              42424         TCP           yes           successful
  rac1              42424         TCP           yes           successful
Verifying Port Availability for component "Oracle Cluster Synchronization Services (CSSD)" ...PASSED
Verifying Users With Same UID: 0 ...PASSED
Verifying Current Group ID ...PASSED
Verifying Root user consistency ...
  Node Name                             Status
  ------------------------------------  ------------------------
  rac2                                  passed
  rac1                                  passed
Verifying Root user consistency ...PASSED
Verifying Package: cvuqdisk-1.0.10-1 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  rac2          cvuqdisk-1.0.10-1         cvuqdisk-1.0.10-1         passed
  rac1          cvuqdisk-1.0.10-1         cvuqdisk-1.0.10-1         passed
Verifying Package: cvuqdisk-1.0.10-1 ...PASSED
Verifying Host name ...PASSED
Verifying Node Connectivity ...
  Verifying Hosts File ...
  Node Name                             Status
  ------------------------------------  ------------------------
  rac1                                  passed
  rac2                                  passed
  Verifying Hosts File ...PASSED

Interface information for node "rac1"

 Name   IP Address      Subnet          Gateway         Def. Gateway    HW Address        MTU
 ------ --------------- --------------- --------------- --------------- ----------------- ------
 enp0s3 10.0.20.101     10.0.20.0       0.0.0.0         10.0.20.2       08:00:27:31:B0:41 1500
 enp0s8 192.168.20.101  192.168.20.0    0.0.0.0         10.0.20.2       08:00:27:56:A0:F8 1500

Interface information for node "rac2"

 Name   IP Address      Subnet          Gateway         Def. Gateway    HW Address        MTU
 ------ --------------- --------------- --------------- --------------- ----------------- ------
 enp0s3 10.0.20.102     10.0.20.0       0.0.0.0         10.0.20.2       08:00:27:D6:AC:05 1500
 enp0s8 192.168.20.102  192.168.20.0    0.0.0.0         10.0.20.2       08:00:27:63:66:E3 1500

Check: MTU consistency of the subnet "10.0.20.0".

  Node              Name          IP Address    Subnet        MTU
  ----------------  ------------  ------------  ------------  ----------------
  rac1              enp0s3        10.0.20.101   10.0.20.0     1500
  rac2              enp0s3        10.0.20.102   10.0.20.0     1500

Check: MTU consistency of the subnet "192.168.20.0".

  Node              Name          IP Address    Subnet        MTU
  ----------------  ------------  ------------  ------------  ----------------
  rac1              enp0s8        192.168.20.101  192.168.20.0  1500
  rac2              enp0s8        192.168.20.102  192.168.20.0  1500

  Source                          Destination                     Connected?
  ------------------------------  ------------------------------  ----------------
  rac1[enp0s3:10.0.20.101]        rac2[enp0s3:10.0.20.102]        yes

  Source                          Destination                     Connected?
  ------------------------------  ------------------------------  ----------------
  rac1[enp0s8:192.168.20.101]     rac2[enp0s8:192.168.20.102]     yes
  Verifying Check that maximum (MTU) size packet goes through subnet ...PASSED
  Verifying subnet mask consistency for subnet "10.0.20.0" ...PASSED
  Verifying subnet mask consistency for subnet "192.168.20.0" ...PASSED
Verifying Node Connectivity ...PASSED
Verifying Multicast or broadcast check ...
Checking subnet "10.0.20.0" for multicast communication with multicast group "224.0.0.251"
Verifying Multicast or broadcast check ...PASSED
Verifying ASMLib installation and configuration verification. ...
  Verifying '/etc/init.d/oracleasm' ...PASSED
  Verifying '/dev/oracleasm' ...PASSED
  Verifying '/etc/sysconfig/oracleasm' ...PASSED

  Node Name                             Status
  ------------------------------------  ------------------------
  rac1                                  passed
  rac2                                  passed
Verifying ASMLib installation and configuration verification. ...PASSED
Verifying Network Time Protocol (NTP) ...PASSED
Verifying Same core file name pattern ...PASSED
Verifying User Mask ...
  Node Name     Available                 Required                  Comment
  ------------  ------------------------  ------------------------  ----------
  rac2          0022                      0022                      passed
  rac1          0022                      0022                      passed
Verifying User Mask ...PASSED
Verifying User Not In Group "root": oracle ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  rac2          passed                    does not exist
  rac1          passed                    does not exist
Verifying User Not In Group "root": oracle ...PASSED
Verifying Time zone consistency ...PASSED
Verifying Time offset between nodes ...PASSED
Verifying resolv.conf Integrity ...
  Node Name                             Status
  ------------------------------------  ------------------------
  rac1                                  passed
  rac2                                  passed

checking response for name "rac1" from each of the name servers specified in
"/etc/resolv.conf"

  Node Name     Source                    Comment                   Status
  ------------  ------------------------  ------------------------  ----------
  rac1          127.0.0.1                 IPv4                      passed

checking response for name "rac2" from each of the name servers specified in
"/etc/resolv.conf"

  Node Name     Source                    Comment                   Status
  ------------  ------------------------  ------------------------  ----------
  rac2          127.0.0.1                 IPv4                      passed
Verifying resolv.conf Integrity ...PASSED
Verifying DNS/NIS name service ...PASSED
Verifying Domain Sockets ...PASSED
Verifying /boot mount ...PASSED
Verifying Daemon "avahi-daemon" not configured and running ...
  Node Name     Configured                Status
  ------------  ------------------------  ------------------------
  rac2          no                        passed
  rac1          no                        passed

  Node Name     Running?                  Status
  ------------  ------------------------  ------------------------
  rac2          no                        passed
  rac1          no                        passed
Verifying Daemon "avahi-daemon" not configured and running ...PASSED
Verifying Daemon "proxyt" not configured and running ...
  Node Name     Configured                Status
  ------------  ------------------------  ------------------------
  rac2          no                        passed
  rac1          no                        passed

  Node Name     Running?                  Status
  ------------  ------------------------  ------------------------
  rac2          no                        passed
  rac1          no                        passed
Verifying Daemon "proxyt" not configured and running ...PASSED
Verifying loopback network interface address ...PASSED
Verifying User Equivalence ...PASSED
Verifying RPM Package Manager database ...PASSED
Verifying /dev/shm mounted as temporary file system ...PASSED
Verifying File system mount options for path /var ...PASSED
Verifying DefaultTasksMax parameter ...PASSED
Verifying zeroconf check ...PASSED
Verifying ASM Filter Driver configuration ...PASSED
Verifying Systemd login manager IPC parameter ...PASSED

Pre-check for cluster services setup was successful.

CVU operation performed:      stage -pre crsinst
Date:                         Oct 26, 2023 12:14:44 AM
CVU home:                     /u01/app/19c/grid/
User:                         oracle

 

2. Grid Infrastructure 설치

 GRID_HOME 디렉토리로 이동하여 gridSetup.sh을 실행합니다.

grid_env
cd $GRID_HOME
./gridSetup.sh

 

소프트웨어를 구성할 옵션을 선택합니다. 

 Configure Oracle Grid Infrastructure for a New Cluster를 선택한 후 Next 버튼을 클릭합니다.

 

 클러스터의 구성을 선택합니다.

 Configure an Oracle Standalone Cluster를 선택한 후 Next 버튼을 클릭합니다.

 

Grid 플러그 앤 플레이 정보를 입력합니다.

 SCAN 이름은 /etc/hosts에 정의한 이름, 그리고 nslookup에서 테스트한 이름과 동일하게 도메인을 포함하여 입력합니다.

클러스터 이름, SCAN 이름과 SCAN 포트 번호를 입력한 후에 Next 버튼을 클릭합니다.

 

 클러스터 노드 정보를 설정합니다.

기본적으로 구성 스크립트를 실행한 노드의 정보가 클러스터 노드 목록에 표시됩니다.

다른 노드를 추가하기 위해 Add 버튼을 클릭합니다

 

하나의 노드만 추가할 것이므로 Add a Single mode를 선택한 상태에서 2번 노드의 Public Host 이름과 Virtual Host 이름을 입력하고 OK 버튼을 클릭합니다.

 

클러스터 노드 간의 비밀번호 없는 SSH 환경 구성을 위해 SSH connectivity 버튼을 클릭합니다.

 oracle 유저에 대한 비밀번호 없는 SSH 환경 구성이 되어 있다면, oracle 유저의 비밀번호를 입력하고 Test 버튼을 클릭합니다.

oracle 유저에 대한 비밀번호 없는 SSH 환경 구성이 되어 있지 않다면, oracle 유저의 OS 비밀번호를 입력하고 Setup 버튼을 클릭하면 노드간의 비빌번호 없는 SSH 접속 설정이 완료됩니다.

 

정상적으로 설정이 되었다면 다음과 같은 안내 메시지가 출력되고, OK 버튼을 클릭합니다.

 

 설정이 완료되었으면 Next 버튼을 클릭합니다.

 

 노드간의 네트워크 인터페이스를 확인하는 단계입니다.

Public 인터페이스는 Public IP와 VIP로 외부와 통신하는데 사용되며 ASM & Private 인터페이스는 ASM과 RAC 노드간의 통신에만 사용됩니다.

  노드간의 인터페이스 이름과 서브넷은 Public과 Private를 구분하여 동일하게 설정이 되어야 합니다.

 설정이 완료되었으면 Next 버튼을 클릭합니다.

 

  저장영역 옵션 정보를 선택합니다.

OCR과 Voting disk를 ASM에 구성할 것이므로 Use Oracle Flex ASM for storatge를 선택하고 Next 버튼을 클릭합니다.

 

  Grid Infrastructure 관리 저장소 옵션을 선택합니다.

 기본값인 No를 선택한 후 Next 버튼을 클릭합니다.

 

  OCR과 Voting을 저장하기 위한 ASM 디스크 그룹을 생성합니다.

ASMLib로 등록된 디스크 목록을 검색하기 위해 Change Discovery Path 버튼을 클릭합니다.

 

디스크 검색 경로에 /dev/oracleasm/disks/* 를 입력하고 Next 버튼을 클릭합니다.

 

Disk group name 을 CRS로 변경하고, Redundancy는 기본값인 Normal을 유지합니다.

검색된 디스크 선택 목록에서 CRS001, CRS002, CRS003을 선택한 후 Next 버튼을 클릭합니다.

 

SYSASM 권한 사용자의 비밀번호를 설정합니다.

실습을 위해 하나의 패스워드로 SYS와 ASMSNMP 계정의 비밀번호를 사용할 것이므로 Use same passwords for these accounts를 선택하고 비밀번호를 입력합니다.

 비밀번호를 입력하였으면 Next 버튼을 클릭합니다.

 

암호 복잡도 규칙에 맞는 않는 비밀번호를 입력하면 아래와 같은 안내 메시지가 출력됩니다.

 설치 Test를 위한 것이므로 Yes 버튼을 클릭합니다.

 

 실패 분리 지원을 설정합니다.

 Do not use Intelligent Platform Management Interface (IPMI)를 선택하고 Next 버튼을 클릭합니다.

 

 관리 옵션을 지정합니다.

별도의 EM 시스템에 등록하지 않는다면, Register with Enterprise Manager(EM) Cloud Control이 해제된 기본 상태에서 Next 버튼을 클릭합니다.

 

ASM 권한 관련 OS 인증에 사용할 OS 그룹을 선택하는 단계입니다.

정상적으로 지정되었는지 확인하고 Next 버튼을 클릭합니다.

 

 Oracle base 경로를 확인합니다.

 정상적으로 지정되었는지 확인하고 Next 버튼을 클릭합니다.

 

 OracleInventory의 경로와 그룹을 확인하고 Next 버튼틀 클릭합니다.

• OracleInventory에는 오라클 소프트웨어의 설치 정보가 저장됩니다.

 

클러스터 구성 과정 중에 root 권한으로 스크립트를 실행하는 과정이 있습니다.

자동으로 구성 스크립트를 실행하기 위해서는 모든 노드의 root 계정 비밀번호가 동일해야 합니다.

Automaticalluy run configuration scripts 를 체크합니다

  Use "root" user credetial을 선택한 후 root 계정의 비밀번호를 입력하고 Next 버튼을 클릭합니다.

만약 노드간에 root 계정의 암호가 다르거나, 수동으로 설치를 진행하고자 할 경우에는 아무 것도 선택하지 않고 다음 단계로 진행하면 수동으로 스크립트 실행을 할 수 있습니다.

 

설치에 앞서 서버에 대한 필요 조건 검사가 실행됩니다.

이 단계에서 누락되거나 잘못된 설정을 반드시 수정하고 설치를 진행해야 합니다

  특이사항이 없을 경우에는 자동으로 다음 단계로 넘어갑니다.

 

본격적인 설치에 앞서 구성될 환경에 대한 요약 정보를 검토합니다.

수정할 사항이 있으면 해당 항목 옆에 Edit을 클릭하여 변경하면 됩니다.

  정확하게 모든 사항이 설정되었으면 Install 버튼을 클릭합니다.

 

로컬 노드와 원격 노드에 grid 설치가 진행됩니다.

로컬 노드에는 GRID_HOME 디렉토리에 설치 파일의 압축이 이미 풀려 있으므로, 파일 복제 과정은 생략됩니다.

원격 노드에는 Private 망의 SSH 연결을 통해 설치 파일이 전송되며 GRID_HOME 디렉토리에 파일 복제가 진행됩니다

클러스터 구성 스크립트를 자동으로 실행할 것인지 뭍는 창이 뜨면 Yes를 클릭합니다.

설치 과정 중에 입력한 root 사용자의 비밀번호를 이용하여 자동으로 스크립트가 실행됩니다

  Details 버튼을 클릭하면 설치 과정을 확인할 수 있습니다.

 

• grid 설치와 구성이 완료되면 Close 버튼을 클릭하여 설치 프로그램을 종료합니다.

 

crsctl stat res -t 명령을 통해 정상적으로 클러스터가 구성되었는지 확인할 수 있습니다.

crsctl stat res -t
더보기

[+ASM1:/u01/app/19c/grid]> crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.chad
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.net1.network
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.ons
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.CRS.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       rac2                     STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       rac1                     STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       rac1                     STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       rac1                     STABLE
ora.qosmserver
      1        ONLINE  ONLINE       rac1                     STABLE
ora.rac1.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.rac2.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       rac1                     STABLE
--------------------------------------------------------------------------------

 

VII. ASM 디스크 그룹 추가

1. ASMCA 실행

ASM 디스크 그룹을 추가로 생성하기 위해 grid 유저에서 ASMCA를 실행합니다.

grid_env
asmca

 

• GUI 모드에서 ASMCA에서 Disk Groups를 추가합니다.

 

• DATA 그룹을 추가하기 위해 Disk groups 창에서 Create버튼을 클릭합니다.

 

• Disk Group Name에 DATA를 입력하고 Redundancy는 Extermal(Nome)으로 지정합니다.

• DATA001 디스크를 체크하고 OK 버튼을 클릭합니다.

 

• FRA 그룹을 추가하기 위해 Disk groups 창에서 Create버튼을 클릭합니다.

 

• Disk Group Name에 FRA를 입력하고 Redundancy는 Extermal(Nome)으로 지정합니다.

• FRA001 디스크를 체크하고 OK 버튼을 클릭합니다.

 

디스크 그룹 추가 작업이 완료되었으면 Exit 버튼을 클릭합니다.

 

종료 확인 창에 Yes를 클릭하여 ASMCA를 닫습니다.

 

클러스터 리소스에 DATA와 FRA 디스크 그룹이 추가된 것을 확인할 수 있습니다.

crsctl stat res -t
더보기

[+ASM1:/u01/app/19c/grid]> crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.chad
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.net1.network
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.ons
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.CRS.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.FRA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       rac2                     STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       rac1                     STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       rac1                     STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       rac1                     STABLE
ora.qosmserver
      1        ONLINE  ONLINE       rac1                     STABLE
ora.rac1.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.rac2.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       rac1                     STABLE
--------------------------------------------------------------------------------

 

VIII. Database 소프트웨어 설치

1. 준비 작업

oracle 유저로 1번 노드에 접속해서 $DB_HOME 디렉토리를 생성합니다.

su - oracle
mkdir -p $DB_HOME

 

• 윈도우에서 다운로드 받은 DB 설치파일을 1번노드의 DB_HOME 경로로 옮깁니다.

<윈도우 CMD 창에서 진행>

cd Downloads
scp LINUX.X64_193000_db_home.zip oracle@192.168.20.101:/u01/app/oracle/product/19c/db_1/
더보기

C:\Users\<사용자 계정 이름>>cd Downloads

 

C:\Users\<사용자 계정 이름>\Downloads>scp LINUX.X64_193000_db_home.zip oracle@192.168.20.101:/u01/app/oracle/product/19c/db_1/
oracle@192.168.20.101's password: <oracle 계정 password>
LINUX.X64_193000_db_home.zip                                                          100% 2918MB  53.0MB/s   00:55

 

1번노드의 DB_HOME 경로에서 DB 압축파일의 압축을 해제합니다.

• grid 설치와 동일하게 1번에 압축을 해제하고, 설치를 진행하면 됩니다.

cd $DB_HOME
unzip LINUX.X64_193000_db_home.zip

 

2. Database 소프트웨어 설치

설치 파일의 압축을 해제한 디렉토리에서 runInstaller를 실행합니다.

cd $DB_HOME
./runInstaller

 

소프트웨어만 설치한 후에 별도로 데이터베이스를 생성할 예정이므로 Set Up Software Only 를 선택하고 Next 버튼을 클릭합니다.

 

설치 옵션은 Oracle Real Application Clusters database installation을 선택하고 Next 버튼을 클릭합니다.

 

RAC 모든 노드에 설치할 것이므로 rac1과 rac2가 모두 체크되었는지 확인합니다.

oracle 유저에 대한 비밀번호 없는 SSH 접속 설정을 위해 SSH connectivity 버튼을 클릭합니다.

• grid와 Database를 동일한 유저로 설치한다면 grid 설치 시점에 이미 비밀번호 없는 SSH 접속이 설정되어 있으므로 다음 단계로 진행해도 됩니다.

 

OS 비밀번호에 oracle 유저의 비밀번호를 입력하고 Test 버튼을 클릭합니다.

• grid와 Database를 다른 유저로 설치하게 되면 Setup 버튼을 클릭하여 반드시 SSH 접속 설정 진행해야 합니다.

 

•  다음과 같은 안내 메시지가 출력되면 OK 버튼을 클릭합니다.

 

•  SSH 설정이 완료되었으면 Next 버튼을 클릭합니다. 

 

RAC는 Enterprise Edition만 설치 가능하므로 Enterprise Edition 선택합니다.

버전 선택 후   Next 버튼을 클릭합니다. 

 

소프트웨어 설치 위치인 Oracle Base와 Software location 경로인 DB_HOME의 경로가 정상적으로 인식되었는지 확인하고 Next 버튼을 클릭합니다.

 

OS 인증을 위한 OS 그룹을 설정하는 단계입니다.

적절한 OS 그룹과 맵핑이 된다면 Next 버튼을 클릭합니다.

오라클의 권고사항에 따라 그룹을 세분화하였지만, 정책에 따라 관리 편의상 1개의 그룹(대부분 dba)으로 운영하는 경우가 많습니다.

 

소프트웨어 구성 과정 중에 root 권한으로 스크립트를 실행하는 과정이 있습니다.

• 자동으로 구성 스크립트를 실행하기 위해서는 모든 노드의 root 계정 비밀번호가 동일해야 합니다.

 Automaticalluy run configuration scripts 를 체크합니다

  Use "root" user credetial을 선택한 후 root 계정의 비밀번호를 입력하고 Next 버튼을 클릭합니다.

• 만약 노드간에 root 계정의 암호가 다르거나, 수동으로 설치를 진행하고자 할 경우에는 아무 것도 선택하지 않고 다음 단계로 진행하면 수동으로 스크립트 실행을 할 수 있습니다.

 

설치에 앞서 서버에 대한 필요 조건 검사가 실행됩니다.

• grid 설치를 하면서 검증 및 수정이 완료되었다면, 자동으로 다음 단계로 넘어갑니다.

 

본격적인 설치에 앞서 구성될 환경에 대한 요약 정보를 검토합니다.

수정할 사항이 있으면 해당 항목 옆에 Edit을 클릭하여 변경하면 됩니다.

정확하게 모든 사항이 설정되었으면 Install 버튼을 클릭합니다.

 

로컬 노드에 database의 설치가 진행됩니다.

설치 과정의 마지막 단계로 루트 스크립트를 자동으로 실행할 것인지 뭍는 메시지가 나오면 Yes 버튼을 클릭합니다.

 

Database 설치가 완료되면 Close 버튼을 클릭하여 설치 프로그램을 종료합니다.

 

IX. 데이터베이스 생성

1. 데이터베이스 생성

oracle 유저로 접속해서 DBCA (Database Configuration Assistant)를 실행합니다.

dbca

 

Create a database 을 체크하고 Next 버튼을 클릭합니다.

 

• Advanced configureation을 선택하고 Next 버튼을 클릭합니다.

 

• Database type을 Oracle Real Application Clusters (RAC) database(기본값)를 선택 합니다. 

• Configuration type은 Admin Managed (기본값)를 선택합니다.

• General Purpose or Transaction Processing을 선택하고 Next 버튼을 클릭합니다.

 

전체 노드에서 데이터베이스를 생성해야 하므로 모든 노드를 선택하고 Next 버튼을 클릭합니다.

 

Global database name과 SID Prefix 입력합니다.

컨테이너 데이터베이스(이하 CDB) 생성 여부를 선택할 수 있습니다.

Multitenant database를 생성하려면 Create as Container database를 체크해야 합니다.

Container database의 체크를 해제하고 Next 버튼을 클릭합니다.

 

• 데이터베이스의 저장영역을 선택합니다.

• Use following for the database storabe attributes (기본값)을 선택합니다.

• Database file storage type을 ASM (기본값)을 선택합니다.

• Database files location은 +DATA/{DB_UNIQUE_NAME}을 유지하고 Use Oracle-Managed Files(OMF)을 체크합니다.

 

리두 로그 및 제어 파일을 여러 ASM 디스크 그룹에 저장하려면, Multiplex redo logs and control files 버튼을 클릭합니다.

 

ASM 디스크 그룹 +DATA와 +FRA를 입력한 후 OK 버튼을 클릭합니다.

 

File location variables 버튼을 클릭하면 Database 소프트웨어가 설치된 경로나 SID 등의 정보를 확인할 수 있습니다.

 

• 설정이 완료되면 Next 버튼을 클릭합니다.

 

• Fast Recovery Area 사용을 위해 Specify Fast Recovery Area를 체크합니다.

Recovery files storage type은 Automatic Storage Management (ASM)를 선택합니다.

Fast Recovery Area +FRA 디스크 그룹으로 선택합니다.

Fast Recovery Area를 변경할 경우에는 우측의 Browse 버튼을 클릭하여 디스크 그룹 목록에서 선택합니다.

적당한 크기의 Fast Recovery Area Size를 입력합니다.

 

아카이브 모드로 데이터베이스를 초기에 생성하려면 Enable archiving을 체크합니다.

• Edit archive mode parameters 버튼을 클릭하여 데이터 파일과 혼동되지 않도록, 아카이브 로그의 확장자를 dbf에서 arc로 변경합니다.

 

• Fast Recovery Area에 대한 설정이 완료되었으면 Next 버튼을 클릭합니다.

 

데이터 보안을 위해 Database Vault 및 Label Security 설치를 선택할 수 있습니다.

따로 구성할 계획이 없으면 Next 버튼을 클릭합니다.

 

인스턴스 메모리 사이즈와 관리 방법을 선택하는 화면입니다.

기본값으로는Use Automatic Shared Memory Management가 선택되어, 물리 메모리의 40% 가량이 SGA와 PGA에 할당되어 있습니다.

• 사용하려는 환경에 맞게 SGA와 PGA를 조정하면 됩니다.

• 다른 탭에서 데이터베이스의 세부적인 환경을 변경할 수 있습니다.

 

데이터 블록의 크기는 탬플리트를 사용할 경우 이미 지정된 크기로 할당되어 변경이 불가능합니다.

프로세스의 갯수는 데이터베이스를 생성한 후에도 변경이 가능합니다.

 

데이터베이스 생성 후에 문자 집합을 변경하는 것은 많은 리스크가 따르므로 신중하게 검토하고 선택해야 합니다.

디버깅의 목적을 위해서 Default language는 American을 주로 사용합니다.

 

서버의 접속 모드는 데이터베이스 생성 후에도 변경이 가능합니다.

기본값인 Dedicated server mode를 유지합니다.

 

샘플 스키마 설치 여부를 선택할 수 있습니다.

일반적으로 운영 환경에서는 설치하지 않는 경우가 대부분입니다.

 

특이사항이 없을 경우 Next 버튼을 클릭합니다.

 

데이터베이스 관리 옵션을 지정합니다.

 모든 옵션을 해제하고 Next 버튼을 클릭합니다.

 

데이터베이스 관리 계정의 비밀번호를 지정 합니다.

보안상의 이유로 운영 환경에서는 사용자별로 다른 관리 비밀번호를 지정하는 것을 권장합니다.

편의를 위해 Use the same administrative password for all accounts를 선택하고 비밀 번호를 입력한 후 Next 버튼을 클릭합니다.

 

오라클이 요구하는 암호 복잡도를 충족하지 못했을 경우에는 이를 무시하고 데이터베이스 생성을 계속 진행할지를 묻는 메시지가 출력됩니다.

Yes 버튼을 클릭하여 데이터베이스 생성을 계속합니다.

 

 데이터베이스 생성 옵션을 선택합니다.

All Initialization Parameters 버튼을 클릭하여  데이터베이스 초기 파라미터를 변경할 수 있습니다.

리두 그룹 추가나 컨트롤 파일 옵션은 Customize Storage Locations 버튼을 클릭하여 수정합니다.

 

Customize Storage 창이 열리면 redo log groups를 추가합니다.

 왼쪽 하단에 있는 Add 버튼틀 클릭하여 redo log group을 추가합니다.

File Size와 Thread 를 설정하고 Apply 버튼을 클릭합니다.

 

 리두 그룹이 추가된 것을 확인하였으면 OK 버튼을 클릭합니다.

 

Create database를 체크합니다.

 별도의 스크립트 저장을 위해서 Generate database creation scripts를 체크하고 Next버튼을 클릭합니다.

 

본격적인 설치에 앞서 시스템의 필요 조건을 검사하는 단계입니다.

이상이 없을 경우 자동으로 다음 단계로 넘어갑니다.

 

데이터베이스 생성에 앞서, 지금까지 선택한 옵션에 대한 요약 정보를 보여주는 단계입니다.

요구사항대로 선택이 되었는지 확인하고, 이상이 없으면 Finish 버튼을 클릭합니다.

 

본격적인 데이터베이스 생성에 앞서 먼저 데이터베이스 생성 스크립트가 만들어집니다.

• 스크립트 생성 후 자동으로 데이터베이스 생성이 진행됩니다.

메뉴 하단에 있는 로그를 통해 설치 진행 상황을 확인할 수 있습니다.

데이터베이스 생성이 완료되면, 데이터베이스 정보와 함께 작업 로그 위치를 표시하는 화면이 나옵니다.

 

• Password Management 버튼을 클릭하면 생성된 계정의 비밀번호를 변경할 수 있습니다.

• 작업이 완료되면 Close 버튼을 클릭합니다.

 

• DB가 제대로 설치되었는지 확인합니다.

crsctl stat res -t
더보기

[root@rac1 ~]# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.chad
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.net1.network
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.ons
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                    STABLE
      2        ONLINE  ONLINE       rac2                    STABLE
      3        ONLINE  OFFLINE                                STABLE
ora.CRS.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                    STABLE
      2        ONLINE  ONLINE       rac2                    STABLE
      3        OFFLINE OFFLINE                                STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                    STABLE
      2        ONLINE  ONLINE       rac2                    STABLE
      3        OFFLINE OFFLINE                                STABLE
ora.FRA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                    STABLE
      2        ONLINE  ONLINE       rac2                    STABLE
      3        OFFLINE OFFLINE                                STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       rac2                    STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       rac1                    STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       rac1                    STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                    Started,STABLE
      2        ONLINE  ONLINE       rac2                    Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                    STABLE
      2        ONLINE  ONLINE       rac2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       rac1                    STABLE
ora.qosmserver
      1        ONLINE  ONLINE       rac1                    STABLE
ora.rac1.vip
      1        ONLINE  ONLINE       rac1                    STABLE
ora.rac2.vip
      1        ONLINE  ONLINE       rac2                    STABLE
ora.racdb.db
      1        ONLINE  ONLINE       rac1                    Open,HOME=/u01/app/o
                                                                               racle/product/19c/db
                                                                               _1,STABLE
      2        ONLINE  ONLINE       rac2                    Open,HOME=/u01/app/o
                                                                               racle/product/19c/db
                                                                               _1,STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       rac2                    STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       rac1                    STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       rac1                    STABLE
--------------------------------------------------------------------------------

 

• RAC 환경이 제대로 구성되었는지 확인합니다.

sqlplus "/ as sysdba"

select instance_name, status
from gv$instance;
더보기

[racdb1:/home/oracle]> sqlplus "/ as sysdba"

SQL> select instance_name, status
  2  from gv$instance;

INSTANCE_NAME    STATUS
---------------- ------------
racdb1           OPEN
racdb2           OPEN

 

참고 : https://dataforum.io/display/ORCL/Oracle+Database+19c+Real+Application+Cluster

'ORACLE > 설치' 카테고리의 다른 글

Oracle 19c File system  (0) 2023.10.09