I. 개요

1. 사용 Software

제품명버전아키텍쳐배포 사이트
VirtualBox6.0.x호스트 환경에 따름https://www.virtualbox.org
Oracle Enterprise Linux7 (Update 5 이상 권장)x86 64bit

https://edelivery.oracle.com/linux

Clusterware, Database19.3x86 64bithttp://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

Oracle Database 19.3은 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 에서 받을 수 있습니다.

2. 구성 계획

A) 서버

VMHost NameMemoryNet Adapter 1Net Adapter 2구성 방법비고
RAC1rac110GB브리지 어댑터호스트 전용 어댑터리눅스 설치dnsmasq를 사용하여 DNS 구성
RAC2rac210GB브리지 어댑터호스트 전용 어댑터RAC1 복제dnsmasq를 사용하여 DNS 구성

리눅스 기반의 2 node RAC로 구성합니다.

B) 스토리지

파일 이름용량타입용도비고
rac1.vdi100GBDynamic / NormalRAC1 노드 스토리지디스크 사용량을 최소화하기 위해 Dynamic으로 생성합니다.
rac2.vdi100GBDynamic / NormalRAC2 노드 스토리지vboxmanage clonemedium을 이용하여 rac1.vdi 파일을 복제합니다.
CRS1.vdi1GBFixed / ShareableOCR / Vote 저장 영역  공유(shareable) 디스크로 사용하기 위해서는 Fixed Size로 생성해야 합니다.  


   


  
CRS2.vdi1GBFixed / Shareable
CRS3.vdi1GBFixed / Shareable
DATA.vdi30GBFixed / ShareableDATA 영역
FRA.vdi20GBFixed / ShareableFast Recovery Area 

Automatic Storage Management를 이용하여 Data 공간과 Fast Recovery Area를 구성합니다.

테스트를 위한 VM이므로 디스크 공간을 절약하기 위해 파일을 업로드 없이 VirtualBox의 게스트 확장 기능으로 VM에서 불러와 사용합니다.

C) 네트워크

VMPublic IPPrivate IPVirtual IPNetmaskGatewayDNS ServerSCAN IP
RAC110.0.1.10110.0.5.10110.0.1.201255.255.255.010.0.1.1127.0.0.1

10.0.1.191, 10.0.1.192, 10.0.1.193

RAC210.0.1.10210.0.5.10210.0.1.202255.255.255.010.0.1.1127.0.0.1

Netmask의 경우 Public과 Private 모두 24bit(255.255.255.0)을 사용합니다.

인터넷 공유기 또는 Gateway의 IP에 맞춰 Public IP와 Virtual IP를 설정하기 바랍니다.

별도의 DNS 서버 구성 없이 dnsmasq를 사용하여 RAC를 구축할 계획이므로 DNS는 Loopback IP로 지정합니다.

3. 호스트 환경

A) 시스템

12c부터는 64비트의 운영체제만을 지원하므로, 호스트 장비 또한 64비트 운영체제를 사용하여 구축해야 합니다.

메모리는 오라클의 권고에 따라 VM 노드당 8GB 이상이 필요하므로, 가능하면 20GB 이상의 메모리가 장착된 환경에서 작업하는 것을 권합니다.

(구축 테스트를 위해 임시적으로 설치하는 것이라면 경고 메시지를 무시하고 8GB 이하로 구성할 수도 있으나, 운영 환경에서는 권고하지 않습니다.)

B) 스토리지

디스크 I/O에 의한 지연을 최소화하기 위해 호스트의 OS가 설치되지 않은 별도의 내장 디스크를 사용하거나 SSD의 사용을 권합니다.

ESATA 또는 USB 3.0 이상의 빠른 속도를 보장하는 외장 디스크를 사용하는 것도 방법일 수 있습니다만 지속적인 연결이 보장되어야 합니다.

사실상 디스크의 속도에 따라 설치에 소요되는 시간이 크게 좌우되므로, 가급적이면 안정적이고 빠른 스토리지를 사용하기 바랍니다.

II. VM 구성

1. VM 생성

RAC 1번 노드 구성을 위한 VM을 생성합니다.

<새로 만들기> 버튼을 클릭합니다.

A) 가상 머신 만들기

OS의 종류는 'Linux'로 하고 설치될 버전은 'Oracle (64-bit)'를 선택합니다.

머신 폴더는 VM 설정을 위한 파일이나, 가상 이미지를 저장할 디렉토리를 선택합니다. 가급적 성능이 좋은 디스크나 SSD에 저장할 것을 권합니다.

Oracle Database은 12c R1 버전부터 64bit만을 지원하고 있습니다.

Client 소프트웨어만 32bit 프로그램을 제공합니다.

기본 메모리는 "10240MB"로 지정합니다.

Grid를 설치하기 위한 최소 메모리는 8GB 이지만, 원활한 작업을 위해서는 가급적 10GB 이상을 할당하는 것이 좋습니다.

새로운 디스크를 생성해야 하므로 '지금 새 가상 하드 디스크 만들기'를 선택하고 <만들기>를 클릭합니다.

B) 가상 하드 디스크 만들기

가상 하드 디스크 파일의 종류는 'VDI(VirtualBox 디스크 이미지)'를 선택한 후 <다음>을 클릭합니다.

물리적 하드 드라이브 저장 방식은 '동적 할당'으로 하고 <다음>을 클릭합니다.

디스크 파일의 크기는 "100GB"로 한 후 <만들기>를 클릭하면 VM이 생성됩니다.

2. VM 설정 변경

생성된 가상 머신의 설정을 변경해야 하므로, 가상 머신을 선택하고 <설정>을 클릭합니다.

A) 시스템

부팅 순서에서 "플로피 디스크"를 해제하고, "광 디스크"가 우선권을 갖도록 합니다.

B) 디스플레이

VirtualBox에서 제공하는 Guest Additions 기능을 설치하는 과정에서 화면이 깨지는 경우가 있으므로, 잠시 그래피 컨트롤러를 "VBoxVGA"로 선택합니다.

설치가 정상으로 된 후에는 원래의 설정인 "VMSVGA"로 원복시켜주면 됩니다.

C) 저장소

설치할 리눅스 디스크 이미지를 마운트 하기 위해 저장소로 이동합니다.

'컨트롤러 : IDE'를 선택하고, 속성의 '광학 드라이브' 우측의 광 디스크 모양 아이콘을 클릭합니다.

리눅스 이미지가 있는 경로를 찾아가서 마운트하면, IDE 컨트롤러에 리눅스 설치 이미지가 마운트 됩니다.

D) 오디오

오디오는 사용하지 않을 것이므로 '오디오 사용하기'는 해제합니다.

E) 네트워크

1번 네트워크 카드를 설치될 환경에 맞게 적절한 장치에 연결합니다.

일반적으로 외부와 통신을 하기 위해서 '어댑터에 브리지'를 선택합니다.

RAC 노드간의 통신을 위해 2번 어댑터를 활성화해야 합니다.

어댑터 2번 항목에 가서 '네트워크 어댑터 사용하기'를 체크합니다.

그리고, RAC 노드 내부에서만 사용할 것이므로 '호스트 전용 어댑터'를 클릭합니다.

사전에 VirtualBox의 호스트 전용 네트워크가 생성되어 있어야 합니다.

F) 공유 폴더

VirtualBox 상에서 Guest Additions 을 설치하면, 공유 폴더 기능을 사용할 수 있습니다.

공유 폴더를 설정할 경우, 호스트 서버에 저장된 설치 파일을 업로드 없이 바로 사용할 수 있습니다.

오른쪽에 폴더 모양에 '+' 표시가 있는 아이콘을 클릭합니다.

공유할 폴더를 입력하기 위해 폴더 경로에 '기타'를 선택합니다

공유할 폴더를 선택하고, 폴더 이름을 "oracle"로 지정하고 '자동 마운트'를 선택한 후 <OK>를 클릭합니다

설정 변경이 모두 완료되었으므로 <OK>를 클릭합니다.

리눅스 설치를 위해 <시작> 버튼을 클릭하면, 마운트된 리눅스 이미지로 가상 시스템이 부팅되며 OS 설치가 시작 됩니다.

III. Oracle Linux 7 설치

1. 부팅

A) 미디어 검사 여부 선택

설치 미디어에 대한 테스트 없이 바로 설치를 진행하려면 'Install Oracle Linux 7.x'를 키보드로 선택하고 "엔터"를 입력합니다.

B) 언어 선택

실습의 편의를 위해 설치 언어는 '한국어'를 선택하고 <계속 진행>을 클릭합니다.

운영 환경에서는 이슈 발생시의 문제 해결이나 디버깅 등을 위해 영어로 설치하는 것을 권합니다.

2. 설치 요약

A) 소프트웨어 선택

설치 요약 화면입니다.

이 화면에서 각 항목별로 필요한 옵션을 수정한 후에 설치를 진행할 예정입니다.

먼저 '소프트웨어 선택' 항목을 클릭합니다.

서버에서 직접 GUI 모드로 설치하기 위해 '서버 - GUI 사용'을 선택하고, 우측의 '선택한 환경의 기능'에서 다음의 두 기능을 추가합니다.

  • 호환성 라이브러리
  • 개발용 도구

그리고 <완료>를 클릭합니다.

B) 설치 대상

다음으로 '설치 대상'을 수정합니다.

설치할 디스크를 체크하고 '파티션을 설정합니다'를 선택한 후에 <완료> 버튼을 클릭합니다.

C) 파티션 설정

'수동으로 파티션 설정' 화면으로 전환됩니다.

'새로운 Oracle Linux 7.x 설치' 항목 좌측 하단에 <+> 버튼을 클릭하여 마운트 지점을 생성합니다

마운트 지점을 "/boot"로 지정하고 "500MiB"를 할당한 후 <마운트 지점 추가>를 클릭합니다.

swap 영역도 <+> 버튼을 클릭하여 '새 마운트 지점 추가' 창을 연 후에 RAM 크기와 동일한 10GiB를 할당하고, <마운트 지점 추가> 버튼을 클릭합니다.

swap의 크기는 아래와 같이 크기를 할당할 수 있습니다.

물리 메모리(RAM) 크기swap 영역 크기
1GB~2GBRAM의 1.5배 크기
2GB~16GBRAM과 동일한 크기
16GB 이상16GB

동일한 방식으로 나머지 공간을 "/"(root) 영역에 할당 합니다.

용량 항목을 빈 칸으로 입력한 후 <마운트 지점 추가>를 클릭하면 나머지 전체 영역이 할당됩니다.

각각의 마운트 지점이 아래와 같은 크기로 할당됩니다.

할당 영역

크기

/boot200MB
swap10GB
/나머지 공간 할당

적용된 내용을 확인한 후에 <완료> 버튼을 클릭합니다.

변경 요약 화면이 나오면 <변경 사항 적용> 버튼을 클릭합니다.

D) KDUMP

실습을 위한 구축이므로 'KDUMP' 항목에서 kdump 기능을 비활성화하려 합니다.

'KDUMP' 항목으로 이동합니다.

'kdump 활성화'를 해제합니다.

운영 환경에서는 문제 해결 등의 이유로 활성화된 상태로 사용할 수 있으며, 운영 정책에 따라 지정해야 합니다.

필요한 옵션을 선택하였으면 <완료>를 클릭합니다

네트워크 및 호스트명

네트워크와 호스트명을 변경하기 위해 '네트워크 및 호스트명' 항목을 선택합니다.

네트워크와 호스트 이름을 설정해야 합니다.

좌측에서 Public 네트워크와 연결할 이더넷 인터페이스인 enp0s3을 선택하고 우측 하단의 <설정> 버튼을 클릭합니다.

VirtualBox가 아닌 VMware를 사용할 경우, 인터페이스 이름이 다를 수 있습니다.

(https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ch-Consistent_Network_Device_Naming.html)

네트워크 인터페이스명은 BIOS나 firmware를 기준으로 자동으로 생성됩니다.

RAC를 구성하는데 있어서, 모든 노드의 public 이더넷과 private 이더넷의 이름이 각 그룹내에서 동일해야 경고없이 설치나 패치를 진행할 수 있습니다.

일반 탭에서 '사용 가능하면 자동으로 이 네트워크에 연결'을 체크합니다.

IPv4 설정 탭으로 이동하여 방식에 '수동'을 선택합니다.

'Add' 버튼을 클릭하고 다음의 정보를 입력합니다.

항목입력값비고
주소10.0.1.1011번 노드 Public IP 주소
넷마스크24서브넷 마스크 값으로  255.255.255.0 사용 가능
게이트웨이10.0.1.1Public 망의 게이트웨이
DNS 서버127.0.0.1dnsmasq를 사용할 경우 loopback IP 사용
검색 도메인localdomain로컬 도메인 정보 입력

DNS가 없는 환경이어서 dnsmasq를 사용할 것이므로 DNS 서버에 "127.0.0.1"을 입력하였으나, 운영 환경에서는 적절한 DNS 주소 입력이 필요합니다.

IPv6는 사용하지 않을 것이므로 방식에 '무시'를 선택하고, <저장>을 클릭합니다.

이더넷(enp0s3)에 입력한 Public 네트워크 정보가 적용된 것을 확인할 수 있습니다.

이번에는 좌측에서 Private 네트워크와 연결할 이더넷 인터페이스인 enp0s8을 선택하고 우측 하단의 <설정> 버튼을 클릭합니다.

일반 탭에서 '사용 가능하면 자동으로 이 네트워크에 연결'을 체크합니다.

IPv4 설정 탭으로 이동하여 방식에 '수동'을 선택합니다.

'Add' 버튼을 클릭하고 다음의 정보를 입력합니다.

항목입력값비고
주소10.0.5.1011번 노드 Private IP 주소
넷마스크24서브넷 마스크 값으로  255.255.255.0 사용 가능

Private 망을 위한 설정으로 게이트웨이나 DNS값은 비워둡니다.

실습에서는 Private 연결에 별도의 장치를 구성하지는 않았지만, 운영 환경에서는 노드 간의 통신은 L2 이상의 장비를 통해 연결되어야 합니다. (오라클 권고)

IPv6는 사용하지 않을 것이므로 방식에 '무시'를 선택하고, <저장>을 클릭합니다.

이더넷(enp0s8)에 입력한 Private 네트워크 정보가 적용된 것을 확인할 수 있습니다.

좌측 하단에 서버에 사용될 호스트명을 입력하고 <적용>을 클릭합니다.

실습 환경에서는 1번 노드는 "rac1"을 사용할 것입니다.

네트워크 구성이 완료되었으므로 <완료> 버튼을 클릭합니다.

E) SECURITY POLICY

보안 관련 설정을 변경하기 위해 'SECURITY POLICY' 항목으로 이동합니다.

실습에서는 'SECURITY POLICY'의 모든 내용을 끄고 진행하겠습니다.

'Apply security policy'를 끄고 <완료>를 클릭합니다.

운영 환경에서는 보안 정책을 고려하여 설정을 변경할 것을 권고합니다.

설치를 위한 사전 준비가 모두 완료되었으므로 <설치 시작>을 클릭합니다.

3. 사용자 설정

A) ROOT 암호

설치가 진행되는 중간에 root 계정의 암호와 추가 사용자를 생성할 수 있습니다.

먼저 'ROOT 암호'를 선택합니다.

적당한 암호를 입력하고 <완료> 버튼을 클릭합니다.

취약한 암호를 사용할 경우에는 <완료> 버튼을 2번 클릭해야 합니다.

B) 사용자 생성

'사용자 생성'에서는 root와는 별개의 관리자 권한을 생성하겠습니다.

리눅스 7버전에서는 별도의 관리자 계정을 생성하여 사용하는 것을 권하고 있습니다.

추가할 관리자 계정의 정보를 입력하고 <완료> 버튼을 클릭합니다.

OS 설치가 진행되는 동안 기다립니다.

4. 재부팅

설치가 완료되면 <재부팅> 버튼을 클릭합니다.

가상 머신이 재부팅됩니다.

A) LICENSE INFORMATION

재부팅 화면에서 'LICENSE INFORMATION'을 클릭하여 라이센스 동의를 진행합니다.

'약관에 동의합니다'를 체크하고 <완료>를 클릭합니다.

모든 구성이 완료되었으므로 본격적인 사용을 위해 <설정 완료>를 클릭합니다.

IV. 리눅스 환경 설정

1. GUI 접속 환경 설정

A) root 계정 접속

VirtualBox를 사용하는 실습 환경에서는 편의를 위해 Guest Addition을 설치하는 것이 좋습니다.

VMware라면 VMware Tools를 설치할 수 있습니다.

물론 가상머신을 사용하지 않는 운영 환경에서는 이 방법을 사용할 수 없고, ftp나 sftp 등의 방식으로 파일을 서버에 업로드해야 합니다.

root 유저로 접속하기 위해서 초기 접속 화면에 '목록에 없습니까?'를 클릭합니다.

사용자 이름에 "root"를 입력하고 <다음>을 클릭합니다.

암호에 root 계정의 암호를 입력하고 <다음>을 클릭합니다.

처음 접속시 환영 메시지와 함께 초기 설정 화면이 나옵니다.

언어를 '한국어'로 선택한 상태에서 <다음>을 클릭합니다.

운영 환경에서는 영어(English)를 사용하는 것을 권합니다.

키보드 배치에 '한국어'가 선택된 상태에서 <다음>을 클릭합니다.

위치 정보 서비스를 '끔'으로 변경하고 <다음>을 클릭합니다.

온라인 계정 설정 화면에서 <건너뛰기>를 클릭합니다.

마지막으로 'Oracle Linux Server 시작'을 클릭하면, 초기 설정 창이 닫힙니다.

시작하기란 새로운 창이 열리면 창 우측 상단의 'x' 표시를 클릭하여 닫아 줍니다.

GUI 모드로 다른 계정에 처음 접속할 때도, 동일한 방식으로 접속을 진행하면 됩니다.

B) VirtualBox Guest Additions 설치

호스트 머신의 VirtualBox 메뉴에서 '장치' > '게스트 확장 CD 이미지 삽입'을 클릭하여, Guest Additions CD를 가상머신에 mount 시켜줍니다

설치 미디어가 인식되면 자동 시작 프로그램에 대한 안내 창이 뜹니다.

설치를 진행하기 위해 <실행>을 클릭합니다.

Guest Additions이 정상적으로 설치되었으면, 마운트 된 설치 이미지를 eject 해야 합니다.

바탕화면을 마우스 우측 버튼으로 클릭하면 드롭다운 메뉴가 펼쳐지며, '터미널 열기'를 클릭하면 됩니다.

터미널에서 eject 명령어로 이미지를 해제한 후, 가상머신의 디스플레이 설정을 변경하기 위해서 shutdown 명령어로 서버를 중지합니다.

가상머신의 설정 메뉴에서 디스플레이의 그래픽 컨트롤러를 'VMSVGA'로 원복한 후에 가상 머신을 다시 기동합니다.

자동 설치 스크립트가 실행되며, VM에 Guest Addition이 설치됩니다.

설치가 완료되면 "엔터"를 입력하여 실행 창을 닫아줍니다.

C) 화면 해상도 변경

가상 머신을 설치하게 되면 기본 화면 크기가 800*600으로 설정되어 있습니다.

OUI 로 설치를 진행하기 위해서는 화면의 해상도를 변경해야 합니다.

메뉴바에서 '프로그램' > '시스템 도구' > '설정'을 클릭합니다.

좌측의 항목 중에서 '장치'를 클릭합니다.

장치 목록에서 '디스플레이'를 선택한 후, '해상도' 부분을 클릭합니다.

해상도를 선택할 수 있는 창이 열리면 '1024x768' 이상의 화면 크기롤 선택합니다.

원하는 해상도를 선택하였으면 우측 상단의 <적용> 버튼을 클릭하여, 선택한 값으로 해상도가 변경되도록 합니다.

정상적으로 화면이 출력된다면, 디스클레이 설정 유지 여부를 뭍는 창에서 '바뀐 사항 유지'를 클릭하면 변경된 해상도로 계속 사용할 수 있게 됩니다.

2. 리눅스 환경 설정

A) 설치 정보 확인

OS 정보 확인
uname -a
cat /etc/oracle-release
[root@rac1 ~]# uname -a
Linux rac1 4.1.12-112.16.4.el7uek.x86_64 #2 SMP Mon Mar 12 23:57:12 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@rac1 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.5

먼저 설치된 리눅스의 버전 정보를 확인합니다.

B) 미사용 서비스 정리

미사용 서비스 정리
### 방화벽 중지
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
Removed symlink /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@rac1 ~]# mv /etc/chrony.conf /etc/chrony.conf.bak

[root@rac1 ~]# systemctl stop ntpdate
[root@rac1 ~]# systemctl disable ntpdate

[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.

테스트 환경에서 사용하지 않는 서비스를 정리합니다.

실습 환경에서는 CTSS를 활성화 모드로 운영할 것이므로 NTP나 chrony 등의 시간 동기화 서비스를 중지할 것입니다.

그러나 실제 운영환경에서는 구성 환경을 고려하여 사용 여부를 결정해야하며, 가급적 NTP를 설정(-x 포함)하여 사용하는 것을 권장합니다.

C) 리눅스 제공 필수 패키지 설치

Linux 필수 패키지 설치
cd <리눅스 설치 디스크 마운트 경로>/Packages
rpm -ivh ksh-*.x86_64.rpm
rpm -ivh libaio-devel-*.x86_64.rpm
# rpm -ivh kmod-oracleasm-*.x86_64.rpm
rpm -ivh oracleasm-support-*.x86_64.rpm
cd
eject
[root@rac1 ~]# cd /run/media/root/OL-7.5\ Server.x86_64/Packages

[root@rac1 Packages]# rpm -ivh ksh-20120801-137.0.1.el7.x86_64.rpm
경고: ksh-20120801-137.0.1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
준비 중...                         ################################# [100%]
Updating / installing...
   1:ksh-20120801-137.0.1.el7         ################################# [100%]

[root@rac1 Packages]# rpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpm
경고: libaio-devel-0.3.109-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
준비 중...                         ################################# [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
경고: oracleasm-support-2.1.11-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
준비 중...                         ################################# [100%]
Updating / installing...
   1:oracleasm-support-2.1.11-2.el7   ################################# [100%]
알림: '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]# cd
[root@rac1 ~]# eject

리눅스 설치시에 기본적으로 설치된 패키지 외에 추가로 3개의 패키지를 설치해야 합니다.

리눅스 설치 이미지를 mount한 후에 Package 디렉토리로 이동하여 패키지를 설치합니다.

설치가 완료되면 설치 이미지 밖의 경로로 이동한 후에 이미지를 eject 시켜줍니다.

그러지 않을 경우, 재부팅시 다시 리눅스 설치 화면으로 돌아오게 됩니다.

Red Hat Enterprise Linux 사용시에는 kmod-oracleasm 패키지도 추가로 설치합니다.

Linux 필수 패키지 설치 여부 확인
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 binutils
binutils-2.27-27.base.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 glibc
glibc-2.17-222.el7.x86_64
[root@rac1 ~]# rpm -q glibc-devel
glibc-devel-2.17-222.el7.x86_64
[root@rac1 ~]# rpm -q kmod-20
kmod-20-21.0.1.el7.x86_64
[root@rac1 ~]# rpm -q kmod-libs-20
kmod-libs-20-21.0.1.el7.x86_64
[root@rac1 ~]# rpm -q ksh
ksh-20120801-137.0.1.el7.x86_64
[root@rac1 ~]# rpm -q libaio
libaio-0.3.109-13.el7.x86_64
[root@rac1 ~]# rpm -q libaio-devel
libaio-devel-0.3.109-13.el7.x86_64
[root@rac1 ~]# rpm -q libgcc
libgcc-4.8.5-28.0.1.el7.x86_64
[root@rac1 ~]# rpm -q libstdc++
libstdc++-4.8.5-28.0.1.el7.x86_64
[root@rac1 ~]# rpm -q libstdc++-devel
libstdc++-devel-4.8.5-28.0.1.el7.x86_64
[root@rac1 ~]# rpm -q libX11
libX11-1.6.5-1.el7.x86_64
[root@rac1 ~]# rpm -q libXau
libXau-1.0.8-2.1.el7.x86_64
[root@rac1 ~]# rpm -q libxcb
libxcb-1.12-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 make
make-3.82-23.el7.x86_64
[root@rac1 ~]# rpm -q net-tools
net-tools-2.0-0.22.20131004git.el7.x86_64
[root@rac1 ~]# rpm -q nfs-utils
nfs-utils-1.3.0-0.54.0.1.el7.x86_64
[root@rac1 ~]# rpm -q smartmontools
smartmontools-6.5-1.el7.x86_64
[root@rac1 ~]# rpm -q sysstat
sysstat-10.1.5-13.el7.x86_64

오라클 설치에 필요한 리눅스 패키지들이 모두 설치되어 있는지 검증합니다.

누락된 패키지가 있다면 반드시 설치해야 합니다.

패키지 파일은 yum 이용하여 직접 설치하거나 Oracle Linux Repository에서 다운로드   있습니다.

https://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html

Red Hat Enterprise Linux 사용시에는 compat-libstdc++-33 패키지 설치가 추가로 필요하며, Red Hat Portal에서 다운로드 할 수 있습니다.


D) hosts 파일 수정

vi /etc/hosts 로 호스트 파일 수정
### Public
10.0.1.101  rac1        rac1.localdomain
10.0.1.102  rac2        rac2.localdomain
### Private
10.0.5.101  rac1-priv   rac1-priv.localdomain
10.0.5.102  rac2-priv   rac2-priv.localdomain
### Virtual
10.0.1.201  rac1-vip    rac1-vip.localdomain
10.0.1.202  rac2-vip    rac2-vip.localdomain
### DNS
10.0.1.150  dns         dns.localdomain
### SCAN
10.0.1.191  rac-scan    rac-scan.localdomain
10.0.1.192  rac-scan    rac-scan.localdomain
10.0.1.193  rac-scan    rac-scan.localdomain

/etc/hosts 파일에 설치할 모든 서버의 IP와 호스트명을 추가합니다.

오라클 소프트웨어 설치를 정상적으로 진행하기 위해 로컬 노드와 원격 노드에 대한 정보를 정확히 입력해야 합니다.

SCAN IP는 1개만 할당해도 설치에 지장은 없습니다. 다만, 18c부터는 3개를 할당하지 않을 경우, 필요 조건 검사 과정에서 검증 실패 메시지가 출력됩니다.

E) 보안 설정 변경

vi /etc/selinux/config 로 selinux 모드 변경
SELINUX=permissive
SELinux 모드를 온라인 상에서 변경
setenforce permissive

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

F) dnsmasq 활성화

vi /etc/dnsmasq.conf 로 dnsmasq에 로컬 도메인 정보 추가
local=/localdomain/

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

resolv.conf 내용 확인 및 dnsmasq 활성화
cat /etc/resolv.conf
systemctl start dnsmasq
systemctl enable dnsmasq
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
Created symlink from /etc/systemd/system/multi-user.target.wants/dnsmasq.service to /usr/lib/systemd/system/dnsmasq.service.

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

Name:   rac-scan.localdomain
Address: 10.0.1.191
Name:   rac-scan.localdomain
Address: 10.0.1.192
Name:   rac-scan.localdomain
Address: 10.0.1.193

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

Name:   rac-scan.localdomain
Address: 10.0.1.192
Name:   rac-scan.localdomain
Address: 10.0.1.193
Name:   rac-scan.localdomain
Address: 10.0.1.191

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

Name:   rac-scan.localdomain
Address: 10.0.1.193
Name:   rac-scan.localdomain
Address: 10.0.1.191
Name:   rac-scan.localdomain
Address: 10.0.1.192

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

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

G) 가상 메모리 파일 시스템 할당

vi /etc/fstab 로 tmpfs 영역 할당
tmpfs                   /dev/shm                tmpfs   size=8g         0 0
mount 명령으로 /dev/shm 영역 remount
mount -o remount /dev/shm
tmpfs                   /dev/shm                tmpfs   size=8g         0 0
[root@rac1 ~]# mount -o remount /dev/shm

[root@rac1 ~]# df -h | grep shm
tmpfs                8.0G   84K  8.0G   1% /dev/shm

가상 메모리 파일 시스템(tmpfs) 값을 설정하고 remount하여 적용시킵니다.

H) oracle 제공 추가 패키지 설치

Oracle 사전환경 구성 패키지 및 ASMLib 패키지 설치
rpm -ivh oracle-database-preinstall-19c-*.x86_64.rpm
rpm -ivh oracleasmlib-*.x86_64.rpm
[root@rac1 tmp]# rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
경고: oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
준비 중...                         ################################# [100%]
Updating / installing...
   1:oracle-database-preinstall-19c-1.################################# [100%]

[root@rac1 tmp]# rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm
경고: oracleasmlib-2.0.12-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
준비 중...                         ################################# [100%]
Updating / installing...
   1:oracleasmlib-2.0.12-1.el7        ################################# [100%]

추가로 Oracle Database 설치를 위한 preinstall 패키지와 ASMLib 패키지를 설치합니다.

preinstall 패키지는 Oracle Linux Repository에서 받을 수 있고, ASMLib 패키지는 아래 경로에서 다운로드 합니다.

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

I) 그룹 및 사용자 계정 작업

그룹 등록 및 사용자 설정 변경
### 그룹 등록 (정책에 따라 생략)
# groupadd oper
# groupadd backupdba
# groupadd dgdba
# groupadd kmdba
# groupadd racdba
groupadd asmadmin
groupadd asmdba
groupadd asmoper
### 유저 그룹 설정 변경 (vboxsf는 VirtualBox의 Guest Additions 사용시 설정)
usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba,asmoper,vboxsf oracle
# 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,vboxsf oracle

[root@rac1 ~]# passwd oracle
oracle 사용자의 비밀 번호 변경 중
새  암호:
잘못된 암호: 암호는 8 개의 문자 보다 짧습니다
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.

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

preinstall 패키지가 설치되었다면 oracle 유저와 oinstall, dba, oper, backupdba, dgdba, kmdba, racdba 그룹은 이미 생성되어 있습니다.

vboxsf 그룹은 VirtualBox의 Guest Addition을 사용하기 위한 그룹으로, 실제 운영 환경에서 Guest Addition을 사용하지 않는다면 추가하지 않습니다.

passwd 명령어로 각 계정의 암호를 지정해주면 됩니다.

J) 설치 경로 생성

설치 경로 생성 및 권한 부여
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

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

K) 사용자 환경 설정

vi ~oracle/.bash_profile 로 oracle 프로필 설정
export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac1             # 호스트명에 맞게 변경
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/u01/app/oracle
export GI_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:$GI_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]> '

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

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

vi ~oracle/.bashrc 로 alias 설정
alias gi_env='export ORACLE_HOME=$GI_HOME;export ORACLE_SID=+ASM1;export ORACLE_HOME=$GI_HOME;export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GI_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:$GI_HOME/bin:$BASE_PATH'

Grid와 DB 인스턴스 간의 변환을 쉽게 하기 위해 alias를 설정합니다.

vi ~/.bash_profile 로 root 프로필 수정
export ORACLE_BASE=/u01/app/oracle
export GI_HOME=/u01/app/19c/grid
export DB_HOME=$ORACLE_BASE/product/19c/db_1
export PATH=$PATH:$GI_HOME/bin

작업의 편의를 위해 root 계정의 .bash_profile에도 경로 정보를 추가로 입력합니다.

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

1. 공유 스토리지 구성

공유 스토리지 구성을 위해 고정 공간이 할당된 가상 디스크 6개를 추가로 생성합니다.

파일 이름용량타입용도비고

CRS1.vdi

1GBFixed / ShareableCRS 저장 영역공유(shareable) 디스크로 사용하기 위해서 Fixed Size로 생성합니다.
CRS2.vdi1GBFixed / Shareable
CRS3.vdi1GBFixed / Shareable
DATA.vdi30GBFixed / ShareableData 저장 영역
FRA.vdi20GBFixed / ShareableFast Recovery Area

A) 가상 스토리지 파일 생성

공유 스토리지 가상 디스크 생성
vboxmanage createmedium --filename CRS1.vdi --size 1024 --format VDI --variant Fixed
vboxmanage createmedium --filename CRS2.vdi --size 1024 --format VDI --variant Fixed
vboxmanage createmedium --filename CRS3.vdi --size 1024 --format VDI --variant Fixed
vboxmanage createmedium --filename DATA.vdi --size 30720 --format VDI --variant Fixed
vboxmanage createmedium --filename FRA.vdi --size 20480 --format VDI --variant Fixed
PS D:\VM> pwd

Path
----
D:\VM

PS D:\VM> vboxmanage createmedium --filename CRS1.vdi --size 1024 --format VDI --variant Fixed
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: 3a6327e8-0367-4edc-bb5b-591efe123e8d
PS D:\VM> vboxmanage createmedium --filename CRS2.vdi --size 1024 --format VDI --variant Fixed
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: 9d4524a2-5a06-478a-b733-81cd9889e59e
PS D:\VM> vboxmanage createmedium --filename CRS3.vdi --size 1024 --format VDI --variant Fixed
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: a9d5a021-b91a-4c43-b7d5-2136bf447e83
PS D:\VM> vboxmanage createmedium --filename DATA.vdi --size 30720 --format VDI --variant Fixed
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: 94a0fac2-2040-42ec-9b7e-2fecc49bcf05
PS D:\VM> vboxmanage createmedium --filename FRA.vdi --size 20480 --format VDI --variant Fixed
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: 8f120938-511d-42b1-b15b-dfd4e20218e9

Host 컴퓨터에서 VM에 연결시킬 CRS, MGMT, DATA와 FRA 디스크를 생성합니다.

디스크는 2개의 노드에서 공유할 것이므로, 반드시 Fixed 모드로 디스크 공간이 사전에 할당되도록 생성해야 합니다.

B) 스토리지 파일 공유 설정

가상 디스크 타입 변경
vboxmanage modifymedium CRS1.vdi --type shareable
vboxmanage modifymedium CRS2.vdi --type shareable
vboxmanage modifymedium CRS3.vdi --type shareable
vboxmanage modifymedium DATA.vdi --type shareable
vboxmanage modifymedium FRA.vdi --type shareable
PS D:\VM> vboxmanage modifymedium CRS1.vdi --type shareable
PS D:\VM> vboxmanage modifymedium CRS2.vdi --type shareable
PS D:\VM> vboxmanage modifymedium CRS3.vdi --type shareable
PS D:\VM> vboxmanage modifymedium DATA.vdi --type shareable
PS D:\VM> vboxmanage modifymedium FRA.vdi --type shareable

생성된 디스크들은 모두 shareable 디스크로 속성 변경이 필요합니다.

VirtualBox의 GUI 툴을 사용하여 변경할 수도 있습니다.

C) VM에 스토리지 연결

정지된 1번 노드의 설정 모드로 들어가서 디스크 파일을 추가합니다.

SATA 콘트롤러의 오른쪽에 하드디스크 모양의 아이콘을 클릭합니다

vboxmanage 명령으로 이미 생성된 디스크 파일을 추가할 것이므로 <기존 디스크 선택하기>를 클릭합니다.

Not Attatched에 등록된 디스크 목록에서 "CRS1.vdi"를 선택한 후 <선택>을 클릭합니다.

만약 생성된 디스크 이미지가 목록에 없다면 <추가> 아이콘을 클릭한 후에 디스크 이미지를 찾아서 추가하면 됩니다.

정상적으로 스토리지가 추가된 것을 확인할 수 있습니다.

다른 공유 디스크들도 같은 방법으로 추가해줍니다.

나머지 디스크 파일 모두 순서에 맞게 SATA 컨트롤러에 등록시켜줍니다.

반드시 동일한 순서대로 다른 노드에도 등록시켜야 합니다.

2. ASM 환경 구성

A) ASM 환경 설정 및 초기화

ASM 환경 설정
oracleasm configure -i
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]:
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"

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

B) 디스크 파티셔닝

스토리지 파티션 생성
ls /dev/sd*
fdisk /dev/sdb  ### "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk /dev/sdc  ### "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk /dev/sdd  ### "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk /dev/sde  ### "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk /dev/sdf  ### "n", "p", "1", "엔터", "엔터", "w" 입력
ls /dev/sd*
[root@rac1 ~]# ls /dev/sd*
/dev/sda   /dev/sda2  /dev/sdc  /dev/sde
/dev/sda1  /dev/sdb   /dev/sdd  /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 0xaf5d0328.

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-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB 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 0x16fccdd3.

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-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB 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 0x6072c319.

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-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB 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 0x30096059.

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-62914559, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559):
Using default value 62914559
Partition 1 of type Linux and of size 30 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/sdg
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 0x7dd5a9bc.

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):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
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 ~]# 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에 연결된 디스크에 fdisk 명령어로 파티션 분할 작업을 수행 합니다.

실습의 편의를 위해 하나의 디스크가 하나의 파티션이 되도록 합니다.

C) ASM 디스크 생성

ASM 디스크 생성 및 확인
oracleasm createdisk CRS1 /dev/sdb1
oracleasm createdisk CRS2 /dev/sdc1
oracleasm createdisk CRS3 /dev/sdd1
oracleasm createdisk DATA /dev/sde1
oracleasm createdisk FRA /dev/sdf1
oracleasm scandisks
oracleasm listdisks
[root@rac1 ~]# oracleasm createdisk CRS1 /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk CRS2 /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk CRS3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk DATA /dev/sde1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk FRA /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
CRS1
CRS2
CRS3
DATA
FRA

VM에 마운트된 디스크를 각각 ASM Disk로 할당해줍니다.

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

3. 2번 노드 구성

A) 2번 노드 가상 머신 만들기

.

가상 머신 2번 노드를 만들기 위해 VirtualBox에서 ‘새로 만들기’를 클릭합니다.

가상 머신의 이름을 "rac2"로 정하고, 1번 노드와 동일한 경로를 머신 폴더로 지정합니다.

해당 디렉토리 아래에 rac2라는 디렉토리가 생성되고, 디렉토리 안에 가상 머신 관련 파일들이 저장됩니다.

OS의 종류는 'Linux'로 하고 설치될 버전은 'Oracle (64-bit)'를 선택한 후 <다음>을 클릭합니다.

메모리 크기는 1번 노드와 동일하게 10240MB로 선택한 후 <다음>을 클릭합니다.

B) 1번 노드 VM 복제

2번 노드 가상 디스크 이미지 복제
vboxmanage clonemedium disk .\rac1.vdi ..\rac2\rac2.vdi
PS D:\VM\rac1> vboxmanage clonemedium disk .\rac1.vdi ..\rac2\rac2.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'VDI'. UUID: 28c8742c-e783-4dca-b95c-5919bfd1257e

1번 노드가 정지된 상태에서 1번 노드의 복제본을 rac2 디렉토리에 저장합니다.

1번 노드의 UUID값과 다른 이미지가 생성되도록 반드시 VirtualBox에서 제공하는 방식으로 복제합니다.

하드 디스크는 '기존의 가상 하드 디스크 파일 사용'을 선택합니다.

그리고 방금 복제한 가상 하드 디스크 파일을 선택하기 위해 폴더 모양의 아이콘을 클릭합니다.

vboxmanage 명령으로 디스크를 복제했다면, Not Attatched 항목에 rac2.vdi 파일이 존재합니다.

만약 목록에 없다면 <추가> 버튼을 클릭하여 복제한 이미지를 찾아 불러오면 됩니다.

rac2.vdi 파일을 선택한 후 <선택> 버튼을 클릭합니다.

<만들기>를 클릭하면, 지금까지 선택한 환경에 맞게 가상 머신이 생성됩니다.

C) 2번 노드 VM 환경 설정

기본적으로 생성된 가상 머신을 RAC 환경에 맞게 변경해야 하므로, 2번 노드를 선택하고 <설정>을 클릭합니다.

부팅 순서에서 플로피 디스크를 해제합니다.

1번 노드와 동일한 순서로 공유 디스크를 추가시켜 줍니다.

반드시 같은 순서대로 SATA 컨트롤러에 연결시켜야 합니다.

오디오는 사용하지 않을 것이므로 '오디오 사용하기'를 해제합니다.

어댑터 1의 네트워크 설정을 1번 노드와 동일하게 구성합니다.

본인이 사용할 네트워크 환경에 맞게 설정하면 됩니다.

RAC 노드간의 통신을 위해 어댑터 2를 활성화시킵니다.

어댑터 2번 항목에 가서 '네트워크 어댑터 사용하기'를 체크하고, 1번 노드와 동일하게 '호스트 전용 어댑터'로 구성합니다.

1번 노드와 동일하게 공유 폴더 기능을 설정합니다.

공유 폴더를 설정할 경우, 호스트 서버에 저장된 설치 파일을 업로드 없이 바로 사용할 수 있습니다.

모든 구성이 완료되었으면 <확인>을 클릭해서 변경한 설정 값을 저장하고, 가상머신을 기동합니다.

D) 네트워크 설정 변경

네트워크 설정을 변경하기 위해 root 계정으로 접속한 후에 '프로그램' > '시스템 도구' > '설정'을 클릭합니다.

네트워크 항목으로 이동한 후에 각 이더넷 항목에 톱니바퀴 모양의 아이콘을 클릭하여 설정을 변경합니다.

참고로 VirtualBox를 기준으로 했을 떄, 이더넷 enp0s3은 Public 네트워크이고 enp0s8은 Private 네트워크의 인터페이스입니다.


네트워크 인터페이스 alias 변경
ip link set <old NIC alias> down
ip link set <old NIC alias> name <new NIC alias>
ip link set <new NIC alias> up
mv /etc/sysconfig/network-scripts/ifcfg-<old NIC alias> /etc/sysconfig/network-scripts/ifcfg-<new NIC alias>
sed -ire "s/NAME=\"<old NIC alias>\"/NAME=\"<new NIC alias>\"/" /etc/sysconfig/network-scripts/ifcfg-<new NIC alias>
sed -ire "s/DEVICE=\"<old NIC alias>\"/NAME=\"<new NIC alias>\"/" /etc/sysconfig/network-scripts/ifcfg-<new NIC alias>

만약 2번 VM의 NIC(Network Interface Card)의 alias가 1번 노드의 alias와 일치하지 않을 경우, grid 검증 과정에서 오류가 발생합니다.

좌측의 명령어로 alias를 1번과 동일하게 변경하여 해결할 수 있습니다.

추가적으로 NIC별 UUID 확인이 필요할 경우 다음의 명령어를 사용합니다.

NIC별 UUID 확인
nmcli connection



이더넷 enp0s3의 IPv4 항목에서 주소를 "10.0.1.102"(2번 노드의 Public 네트워크 IP)로 변경한 후 <적용>을 클릭합니다.

리눅스 버전에 따라 네트워크 정보가 초기화되어 있을 수 있습니다.

그럴 때는 아래의 정보와 같이 입력합니다.

항목

입력값

비고

주소10.0.1.1021번 노드 Public IP 주소
네트마스크24서브넷 마스크 값으로  255.255.255.0 사용 가능
게이트웨이10.0.1.1Public 망의 게이트웨이
네임서버(DNS)127.0.0.1dnsmasq를 사용할 경우 loopback IP 사용
검색 도메인localdomain로컬 도메인 정보 입력

이더넷 enp0s8의 IPv4 항목에서 주소를 "10.0.5.102"(2번 노드의 Private 네트워크 IP)로 변경한 후 <적용>을 클릭합니다.

마찬가지로 네트워크 정보가 초기화 되었을 경우, 아래와 같이 입력합니다.

항목

입력값

비고

주소10.0.5.1011번 노드 Private IP 주소
네트마스크24서브넷 마스크 값으로  255.255.255.0 사용 가능

각 이더넷 인터페이스를 껏다가 키면 변경된 설정이 적용됩니다.

또는 명령 프롬프트에서 아래 명령을 수행합니다.

root 유저로 네트워크 재기동 수행
systemctl restart network
2번 노드 IP 주소 변경하기 (옵션)
ip addr show
vi /etc/sysconfig/network-scripts/ifcfg-<public 인터페이스명>
# IPADDR=XXX.XXX.XXX.XXX 부분 변경
vi /etc/sysconfig/network-scripts/ifcfg-<private 인터페이스명>
# IPADDR=XXX.XXX.XXX.XXX 부분 변경
systemctl restart network
ip addr show
[root@rac1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:72:b8:d8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.101/24 brd 10.0.1.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe72:b8d8/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:fd:6d:a9 brd ff:ff:ff:ff:ff:ff
    inet 10.0.5.101/24 brd 10.0.5.255 scope global noprefixroute enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::cd39:da9a:86ab:40a8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

[root@rac1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
... << 생략 >> ...
IPADDR=10.0.1.102
... << 생략 >> ...

[root@rac1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
... << 생략 >> ...
IPADDR=10.0.5.102
... << 생략 >> ...

[root@rac1 ~]# systemctl restart network

[root@rac1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:72:b8:d8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.102/24 brd 10.0.1.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe72:b8d8/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:fd:6d:a9 brd ff:ff:ff:ff:ff:ff
    inet 10.0.5.102/24 brd 10.0.5.255 scope global noprefixroute enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::cd39:da9a:86ab:40a8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

위의 GUI 방식보다 간단하게 CLI 모드에서 vi 편집기를 사용하여 IP를 수정할 수도 있습니다.

다만 Public Private 이더넷을 혼동하여 잘못 설정할  있으므로 주의가 필요합니다.

E) 호스트명 변경

2번 노드 hostname 변경
hostnamectl status
hostnamectl set-hostname rac2
hostnamectl status
[root@rac1 ~]# hostnamectl status
   Static hostname: rac1
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 5554cd8ab5124283be4afd144783a884
           Boot ID: dc642dbe4f44426f82469fbda8e61f27
    Virtualization: kvm
  Operating System: Oracle Linux Server 7.6
       CPE OS Name: cpe:/o:oracle:linux:7:6:server
            Kernel: Linux 4.14.35-1818.3.3.el7uek.x86_64
      Architecture: x86-64
	  
[root@rac1 ~]# hostnamectl set-hostname rac2

[root@rac1 ~]# hostnamectl status
   Static hostname: rac2
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 5554cd8ab5124283be4afd144783a884
           Boot ID: dc642dbe4f44426f82469fbda8e61f27
    Virtualization: kvm
  Operating System: Oracle Linux Server 7.6
       CPE OS Name: cpe:/o:oracle:linux:7:6:server
            Kernel: Linux 4.14.35-1818.3.3.el7uek.x86_64
      Architecture: x86-64

2번 노드의 호스트 명은 CLI 모드에서 간단한 명령어로 변경할 수 있습니다.

2번 노드 CLI 모드로 변경
systemctl set-default multi-user.target
[root@rac2 ~]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

설치 과정 중에 리소스를 절약하기 위해 2번 노드는 텍스트 모드로 실행되도록 수정합니다.

F) 사용자 환경 변수 변경

vi ~oracle/.bash_profile로 2번 노드 oracle 프로필 변경
export ORACLE_HOSTNAME=rac2
export ORACLE_SID=racdb2
[root@rac2 ~]# 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=rac2             # 호스트명에 맞게 변경
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/u01/app/oracle
export GI_HOME=/u01/app/19.3.0/grid
export DB_HOME=$ORACLE_BASE/product/19.3.0/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:$GI_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]> '

oracle 유저의 환경 설정을 2번 노드에 맞게 수정합니다.

vi ~oracle/.bashrc 2번 노드의 alias 설정 변경
alias gi_env='export ORACLE_HOME=$GI_HOME;export ORACLE_SID=+ASM2;export ORACLE_HOME=$GI_HOME;export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GI_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:$GI_HOME/bin:$BASE_PATH'

aslias 설정의 ORACLE_SID 정보도 2번 노드에 맞게 수정합니다.

VI. Grid Infrastructure 설치

1. 준비 작업

A) 설치 파일 압축 해제

1번 노드에 설치 경로 생성 및 설치 파일 압축 해제
gi_env
mkdir -p $GI_HOME
unzip <zip 파일이 있는 경로>/LINUX.X64_193000_GI_HOME.zip -d $GI_HOME
[racdb1:/home/oracle]> gi_env

[+ASM1:/home/oracle]> mkdir -p $GI_HOME

[+ASM1:/home/oracle]> unzip /media/sf_oracle/LINUX.X64_193000_GI_HOME.zip -d $GI_HOME

1번 노드에 oracle 유저로 접속한 후 $GI_HOME 디렉토리를 생성하고, 해당 경로에 Grid Infrastructure(이하 GI) 설치 파일의 압축을 해제합니다.

(1번 또는 대표 노드 한 곳에만 설치 파일의 압축을 해제한 후 그 곳에서 설치를 수행합니다.)

B) cvuqdisk 패키지 설치

cvuqdisk 패키지 1, 2번 노드 설치
### cvuqdisk 패키지 설치 (1번 노드)
cd $GI_HOME/cv/rpm
rpm -ivh cvuqdisk-*.rpm
### 2번 노드로 rpm 파일 전송 후 접속
scp cvuqdisk-*.rpm rac2:/tmp
ssh root@rac2
### cvuqdisk 패키지 설치 (2번 노드)
cd /tmp
rpm -ivh cvuqdisk-*.rpm
exit
[root@rac1 ~]# cd $GI_HOME/cv/rpm

[root@rac1 rpm]# rpm -ivh cvuqdisk-1.0.10-1.rpm
준비 중...                         ################################# [100%]
Using default group oinstall to install package
Updating / installing...
   1:cvuqdisk-1.0.10-1                ################################# [100%]

[root@rac1 rpm]# scp cvuqdisk-*.rpm rac2:/tmp
The authenticity of host 'rac2 (10.0.1.102)' can't be established.
ECDSA key fingerprint is SHA256:E+cLh+3M4Z5XxyTF6sedGZ7PrkEnxDnzpma/uFmpZ/E.
ECDSA key fingerprint is MD5:cd:31:7d:2f:f9:c2:e3:3a:f7:f5:a2:ee:71:c3:89:92.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac2,10.0.1.102' (ECDSA) to the list of known hosts.
root@rac2's password:
cvuqdisk-1.0.10-1.rpm                         100%   11KB  10.2MB/s   00:00

[root@rac1 rpm]# ssh root@rac2
root@rac2's password:
Last login: Fri Aug 23 17:42:44 2019 from 10.0.1.31

[root@rac2 ~]# cd /tmp

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

[root@rac2 tmp]# exit
logout
Connection to rac2 closed.

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

이 단계에서 설치하지 않으면 수동(runcluvfy.sh)으로 필요 조건을 조사하거나 GI 설치 과정 중에 자동으로 필요 조건을 확인하는 과정에서 cvuqdisk 패키지 설치에 대한 안내 메시지가 나옵니다.

C) 공유 디스크 상태 검증

vi $GI_HOME/bin/kfod 로 OHOME 항목 수정
OHOME=$ORACLE_HOME 
[+ASM1:/home/oracle]> cat $GI_HOME/bin/kfod
#!/bin/sh
#
# $Header: opsm/utl/kfod.sbs
#
# kfod
#
# Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
#
#    NAME
#      kfod - KFOD utility
#
#    DESCRIPTION
#      This is a script which is a wrapper on top of kfod.bin
#      This script is only shipped to the DATABASE home
#
#    MODIFIED   (MM/DD/YY)
#        samjo   05/21/14 - Creation
OHOME=$ORACLE_HOME
ORACLE_HOME=${OHOME}
export ORACLE_HOME

exec $OHOME/bin/kfod.bin "$@"


kfod를 사용하기 위해 스크립트 내에 OHOME 경로를 먼저 수정해야 합니다.

kfod 툴로 공유 디스크 상태 확인
kfod disks=all status=true name=true asm_diskstring=ORCL:*
[racdb1:/home/oracle]> gi_env

[+ASM1:/home/oracle]> kfod disks=all status=true name=true asm_diskstring=ORCL:*
--------------------------------------------------------------------------------
 Disk          Size Header    Path                                    DiskName      User     Group
================================================================================
   1:       1023 MB PROVISIONED ORCL:CRS1
   2:       1023 MB PROVISIONED ORCL:CRS2
   3:       1023 MB PROVISIONED ORCL:CRS3
   4:      30719 MB PROVISIONED ORCL:DATA
   5:      20479 MB PROVISIONED ORCL:FRA


공유 디스크가 마운트된 상위 경로를 asm_diskstring의 변수로 입력하여 상태를 파악합니다.  PROVISIONED, CANDIDATE 또는 FORMER 상태인 경우에 ASM 디스크로 사용할 수 있습니다.

D) 비밀번호 없는 SSH 접속 설정

oracle 유저 패스워드 없는 SSH 접속 환경 설정
gi_env
cd $GI_HOME/oui/prov/resources/scripts
./sshUserSetup.sh -user oracle -hosts "rac1 rac2" -noPromptPassphrase -advanced
[racdb1:/home/oracle]> gi_env

[+ASM1:/home/oracle]> cd $GI_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_2019-08-23-18-05-12.log
Hosts are rac1 rac2
user is oracle
Platform:- Linux
Checking if the remote hosts are reachable
PING rac1 (10.0.1.101) 56(84) bytes of data.
64 bytes from rac1 (10.0.1.101): icmp_seq=1 ttl=64 time=0.019 ms
64 bytes from rac1 (10.0.1.101): icmp_seq=2 ttl=64 time=0.073 ms
64 bytes from rac1 (10.0.1.101): icmp_seq=3 ttl=64 time=0.083 ms
64 bytes from rac1 (10.0.1.101): icmp_seq=4 ttl=64 time=0.059 ms
64 bytes from rac1 (10.0.1.101): icmp_seq=5 ttl=64 time=0.068 ms

--- rac1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4126ms
rtt min/avg/max/mdev = 0.019/0.060/0.083/0.023 ms
PING rac2 (10.0.1.102) 56(84) bytes of data.
64 bytes from rac2 (10.0.1.102): icmp_seq=1 ttl=64 time=0.743 ms
64 bytes from rac2 (10.0.1.102): icmp_seq=2 ttl=64 time=1.02 ms
64 bytes from rac2 (10.0.1.102): icmp_seq=3 ttl=64 time=1.12 ms
64 bytes from rac2 (10.0.1.102): icmp_seq=4 ttl=64 time=0.858 ms
64 bytes from rac2 (10.0.1.102): icmp_seq=5 ttl=64 time=1.12 ms

--- rac2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4008ms
rtt min/avg/max/mdev = 0.743/0.974/1.125/0.151 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:taz+rax4LKXKK9byU8KDkL4v78KqPuZwCK9o4XlyRMA oracle@rac1
The key's randomart image is:
+---[RSA 1024]----+
|.                |
| E               |
| ..       .      |
|o  .     o .     |
|o..o    S o      |
|.=..+ . ..       |
|= B. + +.        |
|o#++o ooo. .     |
|%+@B=+.ooo+..    |
+----[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.1.101' (ECDSA) to the list of known hosts.
oracle@rac1's 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.1.102' (ECDSA) to the list of known hosts.
oracle@rac2's 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:
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:
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:IBU4bQRgfVkHJMdXzDb7WZJPxxlmsPJnHVj2sxc6o2c oracle@rac2
The key's randomart image is:
+---[RSA 1024]----+
|  oo.==*=..+...o |
| .  +.=o... = =+.|
|    .+.  . o =o*+|
|     . .    + +.@|
|        S    * X+|
|            . B o|
|           . E   |
|            o    |
|                 |
+----[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: 그런 파일이나 디렉터리가 없습니다
cat: /home/oracle/.ssh/authorized_keys.tmp: 그런 파일이나 디렉터리가 없습니다
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 <OMS HOME>/sysman/prov/resources/ignoreMessages.txt file.
------------------------------------------------------------------------
--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.
2019. 08. 23. (금) 18:05:38 KST
------------------------------------------------------------------------
--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.
2019. 08. 23. (금) 18:05:39 KST
------------------------------------------------------------------------
------------------------------------------------------------------------
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.
2019. 08. 23. (금) 18:05:39 KST
------------------------------------------------------------------------
------------------------------------------------------------------------
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.
2019. 08. 23. (금) 18:05:40 KST
------------------------------------------------------------------------
-Verification from complete-
SSH verification complete.

oracle 유저에 대한 비밀번호 없는 SSH 접속 설정을 수행합니다.

GI 설치 과정 중에 이 단계를 수행할 수도 있지만, 사전 클러스터 환경 검증을 수행하기 위해서 미리 진행하도록 합니다.

E) 클러스터 구성 환경 사전 검증

사전 환경 검증 스크립트 실행
cd $GI_HOME
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -osdba dba -orainv oinstall -fixup -method root -networks enp0s3/enp0s8 -verbose
[+ASM1:/home/oracle]> cd $GI_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
"ROOT" 비밀번호 입력: << root 암호 입력 후 엔터 >>

물리적 메모리 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          9.7494GB (1.0223028E7KB)  8GB (8388608.0KB)         성공
  rac1          9.7494GB (1.0223036E7KB)  8GB (8388608.0KB)         성공
물리적 메모리 확인 중...성공
사용 가능한 물리적 메모리 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          9.5611GB (1.0025508E7KB)  50MB (51200.0KB)          성공
  rac1          8.7542GB (9179396.0KB)    50MB (51200.0KB)          성공
사용 가능한 물리적 메모리 확인 중...성공
교체 크기 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          10GB (1.0485756E7KB)      9.7494GB (1.0223028E7KB)  성공
  rac1          10GB (1.0485756E7KB)      9.7494GB (1.0223036E7KB)  성공
교체 크기 확인 중...성공
사용 가능한 공간: rac2:/usr,rac2:/var,rac2:/etc,rac2:/sbin,rac2:/tmp 확인 중...
  경로                노드 이름         마운트 위치        사용 가능         필수            상태
  ----------------  ------------  ------------  ------------  ------------  ------------
  /usr              rac2          /             89.4219GB     25MB          성공
  /var              rac2          /             89.4219GB     5MB           성공
  /etc              rac2          /             89.4219GB     25MB          성공
  /sbin             rac2          /             89.4219GB     10MB          성공
  /tmp              rac2          /             89.4219GB     1GB           성공
사용 가능한 공간: rac2:/usr,rac2:/var,rac2:/etc,rac2:/sbin,rac2:/tmp 확인 중...성공
사용 가능한 공간: rac1:/usr,rac1:/var,rac1:/etc,rac1:/sbin,rac1:/tmp 확인 중...
  경로                노드 이름         마운트 위치        사용 가능         필수            상태
  ----------------  ------------  ------------  ------------  ------------  ------------
  /usr              rac1          /             83.1835GB     25MB          성공
  /var              rac1          /             83.1835GB     5MB           성공
  /etc              rac1          /             83.1835GB     25MB          성공
  /sbin             rac1          /             83.1835GB     10MB          성공
  /tmp              rac1          /             83.1835GB     1GB           성공
사용 가능한 공간: rac1:/usr,rac1:/var,rac1:/etc,rac1:/sbin,rac1:/tmp 확인 중...성공
사용자 존재 여부: oracle 확인 중...
  노드 이름         상태                        설명
  ------------  ------------------------  ------------------------
  rac2          성공                        존재함(54321)
  rac1          성공                        존재함(54321)

  UID가 동일한 사용자입니다.: 54321 확인 중...성공
사용자 존재 여부: oracle 확인 중...성공
그룹 존재 여부: asmadmin 확인 중...
  노드 이름         상태                        설명
  ------------  ------------------------  ------------------------
  rac2          성공                        존재함
  rac1          성공                        존재함
그룹 존재 여부: asmadmin 확인 중...성공
그룹 존재 여부: dba 확인 중...
  노드 이름         상태                        설명
  ------------  ------------------------  ------------------------
  rac2          성공                        존재함
  rac1          성공                        존재함
그룹 존재 여부: dba 확인 중...성공
그룹 존재 여부: oinstall 확인 중...
  노드 이름         상태                        설명
  ------------  ------------------------  ------------------------
  rac2          성공                        존재함
  rac1          성공                        존재함
그룹 존재 여부: oinstall 확인 중...성공
그룹 멤버쉽: asmadmin 확인 중...
  노드 이름             사용자가 존재함      그룹이 존재함       그룹의 사용자       상태
  ----------------  ------------  ------------  ------------  ----------------
  rac2              예             예             예             성공           
  rac1              예             예             예             성공           
그룹 멤버쉽: asmadmin 확인 중...성공
그룹 멤버쉽: oinstall(기본) 확인 중...
  노드 이름             사용자가 존재함      그룹이 존재함       그룹의 사용자       기본            상태
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac2              예             예             예             예             성공
  rac1              예             예             예             예             성공
그룹 멤버쉽: oinstall(기본) 확인 중...성공
그룹 멤버쉽: dba 확인 중...
  노드 이름             사용자가 존재함      그룹이 존재함       그룹의 사용자       상태
  ----------------  ------------  ------------  ------------  ----------------
  rac2              예             예             예             성공           
  rac1              예             예             예             성공           
그룹 멤버쉽: dba 확인 중...성공
실행 레벨 확인 중...
  노드 이름         실행 레벨                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          3                         3,5                       성공
  rac1          5                         3,5                       성공
실행 레벨 확인 중...성공
완전 제한: 최대 열린 파일 기술자 확인 중...
  노드 이름             유형            사용 가능         필수            상태  
  ----------------  ------------  ------------  ------------  ----------------
  rac2              완전            65536         65536         성공            
  rac1              완전            65536         65536         성공            
완전 제한: 최대 열린 파일 기술자 확인 중...성공
부분 제한: 최대 열린 파일 기술자 확인 중...
  노드 이름             유형            사용 가능         필수            상태  
  ----------------  ------------  ------------  ------------  ----------------
  rac2              부분            1024          1024          성공            
  rac1              부분            1024          1024          성공            
부분 제한: 최대 열린 파일 기술자 확인 중...성공
완전 제한: 최대 사용자 프로세스 확인 중...
  노드 이름             유형            사용 가능         필수            상태  
  ----------------  ------------  ------------  ------------  ----------------
  rac2              완전            16384         16384         성공            
  rac1              완전            16384         16384         성공            
완전 제한: 최대 사용자 프로세스 확인 중...성공
부분 제한: 최대 사용자 프로세스 확인 중...
  노드 이름             유형            사용 가능         필수            상태  
  ----------------  ------------  ------------  ------------  ----------------
  rac2              부분            16384         2047          성공            
  rac1              부분            16384         2047          성공            
부분 제한: 최대 사용자 프로세스 확인 중...성공
부분 제한: 최대 스택 크기 확인 중...
  노드 이름             유형            사용 가능         필수            상태  
  ----------------  ------------  ------------  ------------  ----------------
  rac2              부분            10240         10240         성공            
  rac1              부분            10240         10240         성공            
부분 제한: 최대 스택 크기 확인 중...성공
구조 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          x86_64                    x86_64                    성공
  rac1          x86_64                    x86_64                    성공
구조 확인 중...성공
OS 커널 버전 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          4.14.35-1818.3.3.el7uek.x86_64  4.1.12                    성공  
  rac1          4.14.35-1818.3.3.el7uek.x86_64  4.1.12                    성공  
OS 커널 버전 확인 중...성공
OS 커널 매개변수: semmsl 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              250           250           250           성공
  rac2              250           250           250           성공
OS 커널 매개변수: semmsl 확인 중...성공
OS 커널 매개변수: semmns 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              32000         32000         32000         성공
  rac2              32000         32000         32000         성공
OS 커널 매개변수: semmns 확인 중...성공
OS 커널 매개변수: semopm 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              100           100           100           성공
  rac2              100           100           100           성공
OS 커널 매개변수: semopm 확인 중...성공
OS 커널 매개변수: semmni 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              128           128           128           성공
  rac2              128           128           128           성공
OS 커널 매개변수: semmni 확인 중...성공
OS 커널 매개변수: shmmax 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              4398046511104  4398046511104  5234194432    성공            
  rac2              4398046511104  4398046511104  5234190336    성공            
OS 커널 매개변수: shmmax 확인 중...성공
OS 커널 매개변수: shmmni 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              4096          4096          4096          성공
  rac2              4096          4096          4096          성공
OS 커널 매개변수: shmmni 확인 중...성공
OS 커널 매개변수: shmall 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              1073741824    1073741824    1073741824    성공
  rac2              1073741824    1073741824    1073741824    성공
OS 커널 매개변수: shmall 확인 중...성공
OS 커널 매개변수: file-max 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              6815744       6815744       6815744       성공
  rac2              6815744       6815744       6815744       성공
OS 커널 매개변수: file-max 확인 중...성공
OS 커널 매개변수: ip_local_port_range 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              between 9000 & 65500  between 9000 & 65500  between 9000 & 65535  성공
  rac2              between 9000 & 65500  between 9000 & 65500  between 9000 & 65535  성공
OS 커널 매개변수: ip_local_port_range 확인 중...성공
OS 커널 매개변수: rmem_default 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              262144        262144        262144        성공
  rac2              262144        262144        262144        성공
OS 커널 매개변수: rmem_default 확인 중...성공
OS 커널 매개변수: rmem_max 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              4194304       4194304       4194304       성공
  rac2              4194304       4194304       4194304       성공
OS 커널 매개변수: rmem_max 확인 중...성공
OS 커널 매개변수: wmem_default 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              262144        262144        262144        성공
  rac2              262144        262144        262144        성공
OS 커널 매개변수: wmem_default 확인 중...성공
OS 커널 매개변수: wmem_max 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              1048576       1048576       1048576       성공
  rac2              1048576       1048576       1048576       성공
OS 커널 매개변수: wmem_max 확인 중...성공
OS 커널 매개변수: aio-max-nr 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              1048576       1048576       1048576       성공
  rac2              1048576       1048576       1048576       성공
OS 커널 매개변수: aio-max-nr 확인 중...성공
OS 커널 매개변수: panic_on_oops 확인 중...
  노드 이름             현재            구성됨           필수            상태            설명
  ----------------  ------------  ------------  ------------  ------------  ------------
  rac1              1             1             1             성공
  rac2              1             1             1             성공
OS 커널 매개변수: panic_on_oops 확인 중...성공
패키지: kmod-20-21 (x86_64) 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          kmod(x86_64)-20-23.0.1.el7  kmod(x86_64)-20-21        성공      
  rac1          kmod(x86_64)-20-23.0.1.el7  kmod(x86_64)-20-21        성공      
패키지: kmod-20-21 (x86_64) 확인 중...성공
패키지: kmod-libs-20-21 (x86_64) 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          kmod-libs(x86_64)-20-23.0.1.el7  kmod-libs(x86_64)-20-21   성공 
  rac1          kmod-libs(x86_64)-20-23.0.1.el7  kmod-libs(x86_64)-20-21   성공 
패키지: kmod-libs-20-21 (x86_64) 확인 중...성공
패키지: binutils-2.23.52.0.1 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          binutils-2.27-34.base.0.1.el7  binutils-2.23.52.0.1      성공   
  rac1          binutils-2.27-34.base.0.1.el7  binutils-2.23.52.0.1      성공   
패키지: binutils-2.23.52.0.1 확인 중...성공
패키지: compat-libcap1-1.10 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          compat-libcap1-1.10-7.el7  compat-libcap1-1.10       성공       
  rac1          compat-libcap1-1.10-7.el7  compat-libcap1-1.10       성공       
패키지: compat-libcap1-1.10 확인 중...성공
패키지: libgcc-4.8.2 (x86_64) 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          libgcc(x86_64)-4.8.5-36.0.1.el7  libgcc(x86_64)-4.8.2      성공 
  rac1          libgcc(x86_64)-4.8.5-36.0.1.el7  libgcc(x86_64)-4.8.2      성공 
패키지: libgcc-4.8.2 (x86_64) 확인 중...성공
패키지: libstdc++-4.8.2 (x86_64) 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          libstdc++(x86_64)-4.8.5-36.0.1.el7  libstdc++(x86_64)-4.8.2   성공
  rac1          libstdc++(x86_64)-4.8.5-36.0.1.el7  libstdc++(x86_64)-4.8.2   성공
패키지: libstdc++-4.8.2 (x86_64) 확인 중...성공
패키지: libstdc++-devel-4.8.2 (x86_64) 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          libstdc++-devel(x86_64)-4.8.5-36.0.1.el7  libstdc++-devel(x86_64)-4.8.2  성공
  rac1          libstdc++-devel(x86_64)-4.8.5-36.0.1.el7  libstdc++-devel(x86_64)-4.8.2  성공
패키지: libstdc++-devel-4.8.2 (x86_64) 확인 중...성공
패키지: sysstat-10.1.5 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          sysstat-10.1.5-17.el7     sysstat-10.1.5            성공
  rac1          sysstat-10.1.5-17.el7     sysstat-10.1.5            성공
패키지: sysstat-10.1.5 확인 중...성공
패키지: ksh 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          ksh                       ksh                       성공
  rac1          ksh                       ksh                       성공
패키지: ksh 확인 중...성공
패키지: make-3.82 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          make-3.82-23.el7          make-3.82                 성공
  rac1          make-3.82-23.el7          make-3.82                 성공
패키지: make-3.82 확인 중...성공
패키지: glibc-2.17 (x86_64) 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          glibc(x86_64)-2.17-260.0.9.el7  glibc(x86_64)-2.17        성공  
  rac1          glibc(x86_64)-2.17-260.0.9.el7  glibc(x86_64)-2.17        성공  
패키지: glibc-2.17 (x86_64) 확인 중...성공
패키지: glibc-devel-2.17 (x86_64) 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          glibc-devel(x86_64)-2.17-260.0.9.el7  glibc-devel(x86_64)-2.17  성공
  rac1          glibc-devel(x86_64)-2.17-260.0.9.el7  glibc-devel(x86_64)-2.17  성공
패키지: glibc-devel-2.17 (x86_64) 확인 중...성공
패키지: libaio-0.3.109 (x86_64) 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          libaio(x86_64)-0.3.109-13.el7  libaio(x86_64)-0.3.109    성공   
  rac1          libaio(x86_64)-0.3.109-13.el7  libaio(x86_64)-0.3.109    성공   
패키지: libaio-0.3.109 (x86_64) 확인 중...성공
패키지: libaio-devel-0.3.109 (x86_64) 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          libaio-devel(x86_64)-0.3.109-13.el7  libaio-devel(x86_64)-0.3.109  성공
  rac1          libaio-devel(x86_64)-0.3.109-13.el7  libaio-devel(x86_64)-0.3.109  성공
패키지: libaio-devel-0.3.109 (x86_64) 확인 중...성공
패키지: nfs-utils-1.2.3-15 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          nfs-utils-1.3.0-0.61.0.1.el7  nfs-utils-1.2.3-15        성공    
  rac1          nfs-utils-1.3.0-0.61.0.1.el7  nfs-utils-1.2.3-15        성공    
패키지: nfs-utils-1.2.3-15 확인 중...성공
패키지: smartmontools-6.2-4 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          smartmontools-6.5-1.el7   smartmontools-6.2-4       성공
  rac1          smartmontools-6.5-1.el7   smartmontools-6.2-4       성공
패키지: smartmontools-6.2-4 확인 중...성공
패키지: net-tools-2.0-0.17 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          net-tools-2.0-0.24.20131004git.el7  net-tools-2.0-0.17        성공
  rac1          net-tools-2.0-0.24.20131004git.el7  net-tools-2.0-0.17        성공
패키지: net-tools-2.0-0.17 확인 중...성공
"Oracle Notification Service (ONS)" 구성요소에 대한 포트 가용성 확인 중...
  노드 이름             포트 번호         프로토콜          사용 가능         상태
  ----------------  ------------  ------------  ------------  ----------------
  rac2              6200          TCP           예             성공             
  rac1              6200          TCP           예             성공             
  rac2              6100          TCP           예             성공             
  rac1              6100          TCP           예             성공             
"Oracle Notification Service (ONS)" 구성요소에 대한 포트 가용성 확인 중...성공
"Oracle Cluster Synchronization Services (CSSD)" 구성요소에 대한 포트 가용성 확인 중...
  노드 이름             포트 번호         프로토콜          사용 가능         상태
  ----------------  ------------  ------------  ------------  ----------------
  rac2              42424         TCP           예             성공             
  rac1              42424         TCP           예             성공             
"Oracle Cluster Synchronization Services (CSSD)" 구성요소에 대한 포트 가용성 확인 중...성공
UID가 동일한 사용자입니다.: 0 확인 중...성공
현재 그룹 ID 확인 중...성공
루트 사용자 일관성 확인 중...
  노드 이름                                 상태
  ------------------------------------  ------------------------
  rac2                                  성공
  rac1                                  성공
루트 사용자 일관성 확인 중...성공
패키지: cvuqdisk-1.0.10-1 확인 중...
  노드 이름         사용 가능                     필수                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          cvuqdisk-1.0.10-1         cvuqdisk-1.0.10-1         성공
  rac1          cvuqdisk-1.0.10-1         cvuqdisk-1.0.10-1         성공
패키지: cvuqdisk-1.0.10-1 확인 중...성공
호스트 이름 확인 중...성공
노드 접속 확인 중...
  호스트 파일 확인 중...
  노드 이름                                 상태
  ------------------------------------  ------------------------
  rac1                                  성공
  rac2                                  성공
  호스트 파일 확인 중...성공

"rac1" 노드에 대한 인터페이스 정보

 이름     IP 주소           서브넷             게이트웨이           Def. 게이트웨이      HW 주소             MTU
 ------ --------------- --------------- --------------- --------------- ----------------- ------
 enp0s3 10.0.1.101      10.0.1.0        0.0.0.0         10.0.1.1        08:00:27:97:55:A2 1500
 enp0s8 10.0.5.101      10.0.5.0        0.0.0.0         10.0.1.1        08:00:27:8B:C0:0F 1500

"rac2" 노드에 대한 인터페이스 정보

 이름     IP 주소           서브넷             게이트웨이           Def. 게이트웨이      HW 주소             MTU
 ------ --------------- --------------- --------------- --------------- ----------------- ------
 enp0s3 10.0.1.102      10.0.1.0        0.0.0.0         10.0.1.1        08:00:27:CB:8C:8A 1500
 enp0s8 10.0.5.102      10.0.5.0        0.0.0.0         10.0.1.1        08:00:27:F9:EC:85 1500

검사: "10.0.5.0" 서브넷의 MTU 일관성.

  노드                이름            IP 주소         서브넷           MTU      
  ----------------  ------------  ------------  ------------  ----------------
  rac1              enp0s8        10.0.5.101    10.0.5.0      1500
  rac2              enp0s8        10.0.5.102    10.0.5.0      1500

검사: "10.0.1.0" 서브넷의 MTU 일관성.

  노드                이름            IP 주소         서브넷           MTU      
  ----------------  ------------  ------------  ------------  ----------------
  rac1              enp0s3        10.0.1.101    10.0.1.0      1500
  rac2              enp0s3        10.0.1.102    10.0.1.0      1500

  소스                              대상                              접속됨?   
  ------------------------------  ------------------------------  ----------------
  rac1[enp0s8:10.0.5.101]         rac2[enp0s8:10.0.5.102]         예            

  소스                              대상                              접속됨?   
  ------------------------------  ------------------------------  ----------------
  rac1[enp0s3:10.0.1.101]         rac2[enp0s3:10.0.1.102]         예            
  최대(MTU) 크기 패킷이 서브넷을 통과하는지 검사 확인 중...성공
  "10.0.5.0" 서브넷에 대한 서브넷 마스크 일관성 확인 중...성공
  "10.0.1.0" 서브넷에 대한 서브넷 마스크 일관성 확인 중...성공
노드 접속 확인 중...성공
멀티캐스트 또는 브로드캐스트 검사 확인 중...
멀티캐스트 그룹 "224.0.0.251"과(와) 멀티캐스트 통신을 위해 "10.0.5.0" 서브넷을 검사하는 중
멀티캐스트 또는 브로드캐스트 검사 확인 중...성공
ASMLib 설치 및 구성을 확인합니다. 확인 중...
  '/etc/init.d/oracleasm' 확인 중...성공
  '/dev/oracleasm' 확인 중...성공
  '/etc/sysconfig/oracleasm' 확인 중...성공

  노드 이름                                 상태
  ------------------------------------  ------------------------
  rac1                                  성공
  rac2                                  성공
ASMLib 설치 및 구성을 확인합니다. 확인 중...성공
NTP(네트워크 시간 프로토콜) 확인 중...성공
동일한 코어 파일 이름 패턴 확인 중...성공
사용자 마스크 확인 중...
  노드 이름         사용 가능                     필수                        설명
  ------------  ------------------------  ------------------------  ----------
  rac2          0022                      0022                      성공
  rac1          0022                      0022                      성공
사용자 마스크 확인 중...성공
사용자가 그룹에 없습니다. "root": oracle 확인 중...
  노드 이름         상태                        설명
  ------------  ------------------------  ------------------------
  rac2          성공                        존재하지 않음
  rac1          성공                        존재하지 않음
사용자가 그룹에 없습니다. "root": oracle 확인 중...성공
시간대 일관성 확인 중...성공
노드 사이의 시간 오프셋 확인 중...성공
resolv.conf 무결성 확인 중...
  노드 이름                                 상태
  ------------------------------------  ------------------------
  rac1                                  성공
  rac2                                  성공

"/etc/resolv.conf"에 지정된 각 이름 서버에서 "rac1" 이름에 대한 응답을 확인하는 중

  노드 이름         소스                        설명                        상태
  ------------  ------------------------  ------------------------  ----------
  rac1          127.0.0.1                 IPv4                      성공

"/etc/resolv.conf"에 지정된 각 이름 서버에서 "rac2" 이름에 대한 응답을 확인하는 중

  노드 이름         소스                        설명                        상태
  ------------  ------------------------  ------------------------  ----------
  rac2          127.0.0.1                 IPv4                      성공
resolv.conf 무결성 확인 중...성공
DNS/NIS 이름 서비스 확인 중...성공
도메인 소켓 확인 중...성공
/boot 마운트 확인 중...성공
"avahi-daemon" 데몬이 구성되어 실행 중이 아닙니다. 확인 중...
  노드 이름         구성됨                       상태
  ------------  ------------------------  ------------------------
  rac2          아니오                       성공
  rac1          아니오                       성공

  노드 이름         실행 중?                     상태
  ------------  ------------------------  ------------------------
  rac2          아니오                       성공
  rac1          아니오                       성공
"avahi-daemon" 데몬이 구성되어 실행 중이 아닙니다. 확인 중...성공
"proxyt" 데몬이 구성되어 실행 중이 아닙니다. 확인 중...
  노드 이름         구성됨                       상태
  ------------  ------------------------  ------------------------
  rac2          아니오                       성공
  rac1          아니오                       성공

  노드 이름         실행 중?                     상태
  ------------  ------------------------  ------------------------
  rac2          아니오                       성공
  rac1          아니오                       성공
"proxyt" 데몬이 구성되어 실행 중이 아닙니다. 확인 중...성공
루프백 네트워크 인터페이스 주소 확인 중...성공
사용자 동일성 확인 중...성공
RPM Package Manager 데이터베이스 확인 중...성공
/dev/shm이 임시 파일 시스템으로 마운트됨 확인 중...성공
/var 경로에 대한 파일 시스템 마운트 옵션 확인 중...성공
DefaultTasksMax 매개변수 확인 중...성공
zeroconf 검사 확인 중...성공
ASM 필터 드라이버 구성 확인 중...성공
Systemd 로그인 관리자 IPC 매개변수 확인 중...성공

클러스터 서비스 설정에 대한 사전 확인을 성공했습니다.

수행된 CVU 작업:                   stage -pre crsinst
날짜:                           2019. 8. 23 오후 6:06:38
CVU 홈:                        /u01/app/19c/grid/
사용자:                          oracle

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

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

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

2. Grid Infrastructure 설치

A) OUI 실행

GI 설치 시작
gi_env
cd $GI_HOME
./gridSetup.sh
# ./gridSetup.sh -applyRU <RU 압축 해제 경로>

GI 설치 파일의 압축을 해제한 GI_HOME 디렉토리로 이동하여 gridSetup.sh을 실행합니다.

applyRU 옵션을 사용하면 Release Update 패치를 설치와 함께 적용할 수 있습니다.

B) 구성 옵션 선택

새로운 RAC 클러스터를 구성하기 위해 '새 클러스터에 대한 Oracle Grid Infrastructure 구성'을 선택한 후 <다음> 버튼을 클릭합니다.

C) 클러스터 구성 선택

새로운 클러스터를 구성할 것이므로 'Oracle 독립형 클러스터 구성'을 선택하고 <다음> 버튼을 클릭합니다.

D) Grid 플러그 앤 플레이 정보

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

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

E) 클러스터 노드 정보

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

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

하나의 노드만 추가할 것이므로 '단일 노드 추가'를 선택한 상태에서 추가하려는 노드의 공용 호스트 이름과 가상 호스트 이름을 입력하고 <확인> 버튼을 클릭합니다.


정상적으로 설정이 되었다면 다음과 같은 안내 메시지가 출력됩니다.

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

사전 검증 스크립트 수행을 위해 oracle 유저에 대한 비밀번호 없는 SSH 환경 구성이 되어 있다면, oracle 유저의 OS 비밀번호를 입력하고 <테스트> 버튼을 클릭합니다.

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

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

F) 네트워크 인터페이스 용도 지정

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

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

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

정상적으로 인식이 되면 <다음> 버튼을 클릭합니다.

만약 같은 공용이나 전용 인터페이스 간의 이름이 다를 경우, 인터페이스 이름이 *로 표시되며 패치나 설치 과정에서 경고나 오류 메시지가 출력됩니다.

따라서 같은 용도의 인터페이스 이름이 일치하도록 네트워크 인터페이스를 구성해야 합니다.

일반적으로 리눅스 7부터는 인터페이스 이름이 자동으로 부여됩니다

G) 저장 영역 옵션 정보

OCR과 Voting disk를 ASM에 구성할 것이므로 '저장 영역에 Oracle Flex ASM 사용'을 선택하고 <다음> 버튼을 클릭합니다.

H) Grid Infrastructure 관리 저장소 옵션 생성

12.1.0.2 이후부터 18c까지 강제적으로 구성되었던  Grid Infrastructure 관리 저장소 또는 Grid Infrastructure Management Repository(이하 GIMR)가 19c부터는 선택적으로 구성할 수 있게 되었습니다.

기본값인 '아니오'를 선택한 후에 <다음> 버튼을 클릭합니다.

I) ASM 디스크 그룹 생성

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

ASMLib로 등록된 디스크 목록을 검색하기 위해 <검색 경로 변경> 버튼을 클릭합니다.

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

디스크 그룹 이름을 "CRS"로 변경하고, 중복성은 기본값인 '일반'을 유지합니다.

용량이 크지 않은 정보가 저장되는 공간이므로 1GB 디스크 3개를 '일반'으로 구성하면 충분합니다.

운영 시스템에서 '높음' 이상으로 구성할 경우에는 1GB 이상의 디스크 5개 이상을 사용하면 됩니다.

테스트 목적으로 RAC를 구축하거나 수동으로 관리할 계획이라면 '외부' 중복성으로 구성할 수도 있습니다.

검색된 디스크 선택 목록에서 저장할 디스크(CRS1, CRS2, CRS3)를 선택한 후 <다음> 버튼을 클릭합니다.

J) ASM 비밀번호 지정

SYSASM 권한 사용자의 비밀번호를 설정하는 단계입니다.

실습을 위해 하나의 패스워드로 SYS와 ASMSNMP 계정의 비밀번호를 사용할 것이므로 '이러한 계정에 동일한 비밀번호 사용'을 선택하고 비밀번호를 입력합니다.

암호 복잡도 규칙에 맞는 비밀번호를 입력한 후 <다음> 버튼을 클릭합니다.

K) 실패 분리 지원

'IPMI를 사용 안함'을 선택하고 <다음> 버튼을 클릭합니다.

L) 관리 옵션 지정

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

M) 권한 부여된 운영 체제 그룹

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

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

간혹 운영 환경에서는 dba로 통합하여 사용하기도 하지만, 클러스터 구성 검증 수행시 생성된 자동 수정 스크립트(runfixup.sh)에서 asmadmin과 asmdba 그룹을 생성합니다.

N) 설치 위치 지정

Oracle Base 경로를 확인하는 단계입니다.

정상적으로 지정이 되었으면 <다음> 버튼을 클릭합니다.

O) 인벤토리 생성

오라클 인벤토리 디렉토리 경로와 인벤토리 그룹을 확인하고 <다음> 버튼을 클릭합니다.

인벤토리에는 오라클 소프트웨어의 설치 정보가 저장됩니다.

가능한 oinstall 그룹을 사용하여 인벤토리를 구성할 것을 권장합니다.

P) 루트 스크립트 실행 구성

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

'자동으로 구성 스크립트 실행'을 체크하고 '"루트" 사용자 인증서 사용'을 선택한 후 root 계정의 비밀번호를 입력하고 <다음> 버튼을 클릭합니다.

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

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

Q) 필요 조건 검사 수행

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

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

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

R) 요약

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

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

정확하게 모든 사항이 선택되었으면 <설치> 버튼을 클릭합니다.

S) 제품 설치

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

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

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

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

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

1번 노드 구성이 완료된 후 2번 노드 구성이 진행됩니다.

자동으로 클러스터 구성이 진행됩니다.

<세부 정보> 버튼을 클릭하면 설치 과정을 확인할 수 있습니다.

인벤토리 정보를 갱신합니다.

Oracle Net Configuration Assistant 수행을 통해 네트워크 구성이 진행됩니다.

Automatic Storage Management Configuration Assistant 가 ASM 구성을 진행합니다.

모든 설치 및 구성이 완료되면 클러스터 검증 유틸리티가 수행됩니다.

특이 사항이 없으면 설치가 완료됩니다.

T) 완료

GI 설치와 구성이 완료되면 <닫기> 버튼을 클릭하여 설치 프로그램을 종료합니다.

U) 결과 확인

설치 결과 확인
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        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                     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.scan1.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       rac1                     STABLE
--------------------------------------------------------------------------------

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

 

VII. ASM 디스크 그룹 추가

1. ASMCA 실행

ASMCA 실행
gi_env
asmca

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

GUI 모드의 ASMCA에서 디스크 그룹을 추가합니다.

2. ASM 작업

먼저 데이터를 저장할 DATA 디스크 그룹을 생성하겠습니다.

디스크 그룹 창에서 <생성> 버튼을 클릭합니다.

A) DATA 디스크 그룹 생성

디스크 그룹 이름에 "DATA"를 입력하고, 중복성은 '외부(없음)'으로 지정합니다.

DATA로 할당된 디스크를 체크하고 <확인> 버튼을 클릭합니다.

디스크 그룹을 생성하는 안내 메시지와 함께 생성 작업이 수행됩니다.

B) FRA 디스크 그룹 생성

동일한 방식으로 FRA 디스크 그룹을 추가합니다.

디스크 그룹 이름에 "FRA"를 입력하고, 중복성은 '외부(없음)'으로 지정합니다.

FRA로 할당된 디스크를 체크하고 <확인> 버튼을 클릭합니다.

디스크 그룹을 생성하는 안내 메시지와 함께 생성 작업이 수행됩니다.

C) ASM 인스턴스 확인

root 사용자로 작업이 필요할 경우를 대비하여 정보를 저장할 수도 있습니다.

ASMCA에서는 ASM 인스턴스에 대한 정보를 확인할 수 있습니다.

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

종료 확인 창에 <예>를 클릭하여 ASMCA를 닫습니다

D) 결과 확인


작업 결과 확인
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        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                     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.scan1.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       rac1                     STABLE
--------------------------------------------------------------------------------

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

 

VIII. Database 소프트웨어 설치

1. 준비 작업

A) 설치 파일 압축 해제

설치 경로 생성 및 설치 파일 압축 해제
mkdir -p $DB_HOME
unzip <zip 파일이 있는 경로>/LINUX.X64_193000_db_home.zip -d $DB_HOME
[racdb1:/home/oracle]> mkdir -p $DB_HOME
[racdb1:/home/oracle]> unzip /media/sf_oracle/LINUX.X64_193000_db_home.zip -d $DB_HOME

oracle 유저로 1번 노드에 접속해서 $DB_HOME 디렉토리를 생성하고, 해당 경로에 설치 파일의 압축을 해제합니다.

GI 설치와 동일하게 1번 또는 대표 노드 한 곳에 압축을 해제하고, 그곳에서 설치를 진행하면 됩니다.

2. Database 소프트웨어 설치

A) OUI 실행

runInstaller 실행
db_env
cd $DB_HOME
./runInstaller
# ./runInstaller -applyRU <RU 압축 해제 경로>

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

applyRU 옵션을 사용하면 Release Update 패치를 설치와 함께 적용할 수 있습니다.

B) 구성 옵션 선택

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

C) 데이터베이스 설치 옵션 선택

설치 옵션은 'Oracle Real Application Clusters 데이터베이스 설치'를 선택하고 <다음> 버튼을 클릭합니다.

D) 노드의 선택 목록

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

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

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

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

GI와 Database를 다른 유저로 설치하게 되므로 반드시 이 과정을 진행해야 합니다.

잠시 동안 노드간의 SSH 접속 설정이 잠시 진행됩니다.

작업 완료 메시지 창이 뜨면 <확인> 버튼을 클릭합니다.

비밀번호 없는 SSH 설정이 완료되었으면 <다음> 버튼을 클릭합니다. 

E) 데이터베이스 버전 선택

데이터베이스 버전은 'Enterprise Edition'를 선택합니다.

RAC는 Enterprise Edition만 설치 가능합니다.

버전 선택 후 <다음> 버튼을 클릭합니다.

F) 설치 위치 지정

소프트웨어 설치 위치인 Oracle Base와 소프트웨어 위치 경로(ORACLE_HOME)가 정상적으로 인식되었는지 확인하고 <다음> 버튼을 클릭합니다.

G) 권한이 부여된 운영 체제 그룹

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

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

적절한 OS 그룹과 맵핑이 된다면 <다음>을 클릭합니다.

H) 루트 스크립트 실행 구성

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

'자동으로 구성 스크립트 실행'을 체크하고 '"루트" 사용자 인증서 사용'을 선택한 후 root 계정의 비밀번호를 입력하고 <다음> 버튼을 클릭합니다.

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

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

I) 필요 조건 검사 수행

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

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

J) 요약

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

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

정확하게 모든 사항이 선택되었으면 <설치> 버튼을 클릭합니다.

K) 제품 설치

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

이미 설치될 경로에 압축을 해제하였으므로, 이전 버전에 비해 빠르게 작업이 진행됩니다.

원격 노드로 Database 파일을 복사하게 됩니다.

GI와 동일하게 Private 네트워크의 SSH를 이용하여 파일이 전송됩니다.

파일 복사 후에 필요한 일련의 작업들이 진행됩니다.

설치 과정의 마지막 단계로 루트 스크립트를 자동으로 실행할 것인지 뭍는 메시지가 나옵니다.

<예> 버튼을 클릭합니다.

자동으로 루트 스크립트 실행이 진행됩니다.

L) 완료

Database 설치가 완료되면 <닫기> 버튼을 클릭하여 설치 프로그램을 종료합니다

 

IX. Release Update 적용

1. Release Update 개요

분기마다 발표되는 Release Update 중에서 Grid와 Database 패치를 모두 포함한 GI Release Update로 작업을 수행합니다.

Linux x86 기준의 Grid Release Update에는 일반적으로 4~5가지의 패치가 포함되어 있습니다. (표는 2019년 7월 기준)

패치명패치 번호패치 대상
Database Release Update29834717RAC 환경에서는 Database 와 GI (RAC 환경이 아닌 경우 Database만 적용)
OCW Release Update29850993Database 와 GI 모두
ACFS Release Update29851014Grid만 해당
DBWLM Release Update
Grid만 해당
Tomcat Release Update29401763Grid만 해당

19년 7월 Release Update를 적용하여, 19.3 버전(Base)에서 19.4로 업그레이드하겠습니다.

2. 사전 환경 조사

A) Opatch 버전 확인

Grid Opatch 버전 확인
$GI_HOME/OPatch/opatch version
#mv $GI_HOME/OPatch $GI_HOME/OPatch.old
#unzip <패치 다운로드 경로>/p6880880_122010_Linux-x86-64.zip -d $GI_HOME
#chown -R oracle:oinstall $GI_HOME/OPatch
#ll $GI_HOME | grep OPatch
#$GI_HOME/OPatch/opatch version

1번 노드

[root@rac1 ~]# $GI_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.17

OPatch succeeded.

2번 노드

[root@rac2 ~]# $GI_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.17

OPatch succeeded.

Grid 소프트웨어와 함께 설치된 OPatch 파일의 버전을 확인합니다.

Release Update(이하 RU)의 readme 파일을 참고하여 OPatch 파일의 버전이 최소 요구사항을 충족하는지 확인하고, 상위 버전이 필요한 경우 support.oracle.com에서 패치번호 6880880으로 최신 버전을 받아서 교체합니다.

Database Opatch 버전 확인
$DB_HOME/OPatch/opatch version
#mv $DB_HOME/OPatch $DB_HOME/OPatch.old
#unzip <패치 다운로드 경로>/p6880880_122010_Linux-x86-64.zip -d $DB_HOME
#chown -R oracle:oinstall $DB_HOME/OPatch
#ll $DB_HOME | grep OPatch
#$DB_HOME/OPatch/opatch version

1번 노드

[root@rac1 ~]# $DB_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.17

OPatch succeeded.

2번 노드

[root@rac2 ~]# $DB_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.17

OPatch succeeded.

Database 소프트웨어와 함께 설치된 OPatch 파일의 버전을 확인합니다.

상위 버전이 필요할 경우 Grid의 OPatch 파일과 함께 교체합니다.

B) 패치 내역 확인

Grid 패치 내역 확인 : Oracle 유저로 수행
$GI_HOME/OPatch/opatch lspatches -oh $GI_HOME

1번 노드

[racdb1:/home/oracle]> $GI_HOME/OPatch/opatch lspatches -oh $GI_HOME
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517247;ACFS RELEASE UPDATE 19.3.0.0.0 (29517247)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $GI_HOME/OPatch/opatch lspatches -oh $GI_HOME
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517247;ACFS RELEASE UPDATE 19.3.0.0.0 (29517247)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)

OPatch succeeded.

기존에 Grid 소프트웨어에 적용된 패치 내역을 확인합니다.

Database 패치 내역 확인 : Oracle 유저로 수행
$DB_HOME/OPatch/opatch lspatches -oh $DB_HOME

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)

OPatch succeeded.

마찬가지로 Database 소프트웨어에 적용된 패치 내역을 확인합니다.

3. 업데이트 사전 검증

A) Grid 업데이트 검증

Grid 업데이트 충돌 여부 검증 : Oracle 유저로 수행
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir <압축 해제 경로>/29708769/29834717
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir <압축 해제 경로>/29708769/29850993
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir <압축 해제 경로>/29708769/29851014
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir <압축 해제 경로>/29708769/29401763

1번 노드

[racdb1:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29834717
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-52-15오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

[racdb1:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29850993
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-52-23오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

[racdb1:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29851014
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-52-35오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

[racdb1:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29401763
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-52-43오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29834717
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-52-59오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

[racdb2:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29850993
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-53-14오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

[racdb2:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29851014
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-53-24오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

[racdb2:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $GI_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29401763
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-53-44오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

업데이트를 위한 요구사항이 충족되는지 먼저 검증해야 합니다.

기존의 Grid 소프트웨어에 적용된 패치와 충돌되는 것이 있는지 확인합니다.

충돌되는 패치가 있을 경우, 기존 패치에 대한 rollback이 필요한 경우가 있으니 참고 바랍니다.

Grid 업데이트 필요 공간 확인 : Oracle 유저로 수행
vi /tmp/patch_list_gihome.txt
<압축 해제 경로>/29708769/29834717
<압축 해제 경로>/29708769/29850993
<압축 해제 경로>/29708769/29851014
<압축 해제 경로>/29708769/29401763
# cat /tmp/patch_list_gihome.txt
$GI_HOME/OPatch/opatch prereq CheckSystemSpace -oh $GI_HOME -phBaseFile /tmp/patch_list_gihome.txt

1번 노드

[racdb1:/home/oracle]> cat /tmp/patch_list_gihome.txt
/media/sf_oracle/19.4/29708769/29834717
/media/sf_oracle/19.4/29708769/29850993
/media/sf_oracle/19.4/29708769/29851014
/media/sf_oracle/19.4/29708769/29401763

[racdb1:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckSystemSpace -oh $GI_HOME -phBaseFile /tmp/patch_list_gihome.txt
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-56-02오전_1.log

Invoking prereq "checksystemspace"

Prereq "checkSystemSpace" passed.

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> cat /tmp/patch_list_gihome.txt
/media/sf_oracle/19.4/29708769/29834717
/media/sf_oracle/19.4/29708769/29850993
/media/sf_oracle/19.4/29708769/29851014
/media/sf_oracle/19.4/29708769/29401763

[racdb2:/home/oracle]> $GI_HOME/OPatch/opatch prereq CheckSystemSpace -oh $GI_HOME -phBaseFile /tmp/patch_list_gihome.txt
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/19c/grid
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/19c/grid/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/19c/grid/cfgtoollogs/opatch/opatch2019-08-24_07-56-08오전_1.log

Invoking prereq "checksystemspace"

Prereq "checkSystemSpace" passed.

OPatch succeeded.

업데이트를 적용하기 위한 여유 공간이 있는지 확인합니다.

패치 경로가 저장된 텍스트 파일을 만들어서, OPatch의 CheckSystmSpace 옵션과 함께 확인합니다.

Grid 업데이트 사전 분석 : root 유저로 수행
$GI_HOME/OPatch/opatchauto apply <압축 해제 경로>/29708769 -analyze

1번 노드

[root@rac1 ~]# $GI_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769 -analyze

OPatchauto session is initiated at Sat Aug 24 07:57:52 2019

System initialization log file is /u01/app/19c/grid/cfgtoollogs/opatchautodb/systemconfig2019-08-24_07-58-02AM.log.

세션 로그 파일은 /u01/app/19c/grid/cfgtoollogs/opatchauto/opatchauto2019-08-24_07-58-26AM.log입니다.
이 세션의 ID는 7JT7입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/19c/grid
Patch applicability verified successfully on home /u01/app/19c/grid

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Analysis for applying patches has completed successfully:

Host:rac1
CRS Home:/u01/app/19c/grid
Version:19.0.0.0.0


==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is already been applied, so not going to apply again.


==Following patches were SUCCESSFULLY analyzed to be applied:

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_07-59-20오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29851014
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_07-59-20오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_07-59-20오전_1.log



OPatchauto session completed at Sat Aug 24 08:00:14 2019
Time taken to complete the session 2 minutes, 22 seconds

2번 노드

[root@rac2 ~]# $GI_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769 -analyze

OPatchauto session is initiated at Sat Aug 24 08:00:22 2019

System initialization log file is /u01/app/19c/grid/cfgtoollogs/opatchautodb/systemconfig2019-08-24_08-00-33AM.log.

세션 로그 파일은 /u01/app/19c/grid/cfgtoollogs/opatchauto/opatchauto2019-08-24_08-01-01AM.log입니다.
이 세션의 ID는 WFTB입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/19c/grid
Patch applicability verified successfully on home /u01/app/19c/grid

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Analysis for applying patches has completed successfully:

Host:rac2
CRS Home:/u01/app/19c/grid
Version:19.0.0.0.0


==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is already been applied, so not going to apply again.


==Following patches were SUCCESSFULLY analyzed to be applied:

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-01-34오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29851014
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-01-34오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-01-34오전_1.log



OPatchauto session completed at Sat Aug 24 08:01:58 2019
Time taken to complete the session 1 minute, 36 seconds

업데이트를 Grid에 적용하기에 앞서 사전 분석을 통해 문제없이 적용이 가능한지 검증합니다.

B) Database 업데이트 검증

Database 업데이트 충돌 여부 검증 : Oracle 유저로 수행
$DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $DB_HOME -phBaseDir <압축 해제 경로>/29708769/29834717
$DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $DB_HOME -phBaseDir <압축 해제 경로>/29708769/29850993

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $DB_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29834717
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-24_08-02-47오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $DB_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29850993
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-24_08-03-01오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $DB_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29834717
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-24_08-03-07오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $DB_HOME -phBaseDir /media/sf_oracle/19.4/29708769/29850993
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-24_08-03-17오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

Database 소프트웨어에 적용된 패치와 충돌되는 것이 있는지 확인합니다.

충돌되는 패치가 있을 경우, 기존 패치에 대한 rollback이 필요한 경우가 있으니 참고 바랍니다

Database 업데이트 필요 공간 확인 : Oracle 유저로 수행
vi /tmp/patch_list_dbhome.txt
<압축 해제 경로>/29708769/29834717
<압축 해제 경로>/29708769/29850993
# cat /tmp/patch_list_dbhome.txt
$DB_HOME/OPatch/opatch prereq CheckSystemSpace -oh $DB_HOME -phBaseFile /tmp/patch_list_dbhome.txt

1번 노드

[racdb1:/home/oracle]> cat /tmp/patch_list_dbhome.txt
/media/sf_oracle/19.4/29708769/29834717
/media/sf_oracle/19.4/29708769/29850993

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckSystemSpace -oh $DB_HOME -phBaseFile /tmp/patch_list_dbhome.txt
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-24_08-06-35오전_1.log

Invoking prereq "checksystemspace"

Prereq "checkSystemSpace" passed.

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> cat /tmp/patch_list_dbhome.txt
/media/sf_oracle/19.4/29708769/29834717
/media/sf_oracle/19.4/29708769/29850993

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckSystemSpace -oh $DB_HOME -phBaseFile /tmp/patch_list_dbhome.txt
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-24_08-06-36오전_1.log

Invoking prereq "checksystemspace"

Prereq "checkSystemSpace" passed.

OPatch succeeded.

업데이트를 적용하기 위한 여유 공간이 있는지 확인합니다.

패치 경로가 저장된 텍스트 파일을 만들어서, OPatch의 CheckSystmSpace 옵션과 함께 확인합니다.

Database 업데이트 사전 분석 : root 유저로 수행
$DB_HOME/OPatch/opatchauto apply <압축 해제 경로>/29708769 -oh $DB_HOME -analyze

1번 노드

[root@rac1 ~]# $DB_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769 -oh $DB_HOME -analyze

OPatchauto session is initiated at Sat Aug 24 08:07:50 2019

System initialization log file is /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchautodb/systemconfig2019-08-24_08-08-02AM.log.

세션 로그 파일은 /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/opatchauto2019-08-24_08-08-31AM.log입니다.
이 세션의 ID는 GCXU입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/19c/db_1
Patch applicability verified successfully on home /u01/app/oracle/product/19c/db_1


Verifying SQL patch applicability on home /u01/app/oracle/product/19c/db_1
No step execution required.........

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Analysis for applying patches has completed successfully:

Host:rac1
RAC Home:/u01/app/oracle/product/19c/db_1
Version:19.0.0.0.0


==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29851014
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is not applicable to this specified target type - "rac_database"


==Following patches were SUCCESSFULLY analyzed to be applied:

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-09-18오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-09-18오전_1.log



OPatchauto session completed at Sat Aug 24 08:09:47 2019
Time taken to complete the session 1 minute, 57 seconds

2번 노드

[root@rac2 ~]# $DB_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769 -oh $DB_HOME -analyze

OPatchauto session is initiated at Sat Aug 24 08:10:00 2019

System initialization log file is /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchautodb/systemconfig2019-08-24_08-10-13AM.log.

세션 로그 파일은 /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/opatchauto2019-08-24_08-10-43AM.log입니다.
이 세션의 ID는 QB63입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/19c/db_1
Patch applicability verified successfully on home /u01/app/oracle/product/19c/db_1


Verifying SQL patch applicability on home /u01/app/oracle/product/19c/db_1
No step execution required.........

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Analysis for applying patches has completed successfully:

Host:rac2
RAC Home:/u01/app/oracle/product/19c/db_1
Version:19.0.0.0.0


==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29851014
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is not applicable to this specified target type - "rac_database"


==Following patches were SUCCESSFULLY analyzed to be applied:

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-11-15오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-11-15오전_1.log



OPatchauto session completed at Sat Aug 24 08:11:57 2019
Time taken to complete the session 1 minute, 58 seconds

업데이트를 Database에 적용하기에 앞서 사전 분석을 통해 문제없이 적용이 가능한지 검증합니다.

4. Release Update 적용

A) Grid 업데이트

Grid 업데이트 : root 유저로 수행
$GI_HOME/OPatch/opatchauto apply <압축 해제 경로>/29708769

1번 노드

[root@rac1 ~]# $GI_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769

OPatchauto session is initiated at Sat Aug 24 08:13:04 2019

System initialization log file is /u01/app/19c/grid/cfgtoollogs/opatchautodb/systemconfig2019-08-24_08-13-14AM.log.

세션 로그 파일은 /u01/app/19c/grid/cfgtoollogs/opatchauto/opatchauto2019-08-24_08-13-34AM.log입니다.
이 세션의 ID는 NWRP입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/19c/grid
Patch applicability verified successfully on home /u01/app/19c/grid


Bringing down CRS service on home /u01/app/19c/grid
CRS service brought down successfully on home /u01/app/19c/grid


Start applying binary patch on home /u01/app/19c/grid
Binary patch applied successfully on home /u01/app/19c/grid


Starting CRS service on home /u01/app/19c/grid
CRS service started successfully on home /u01/app/19c/grid

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:rac1
CRS Home:/u01/app/19c/grid
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is already been applied, so not going to apply again.


==Following patches were SUCCESSFULLY applied:

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-18-36오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-18-36오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29851014
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-18-36오전_1.log



OPatchauto session completed at Sat Aug 24 08:29:32 2019
Time taken to complete the session 16 minutes, 28 seconds

2번 노드

[root@rac2 ~]# $GI_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769

OPatchauto session is initiated at Sat Aug 24 08:29:43 2019

System initialization log file is /u01/app/19c/grid/cfgtoollogs/opatchautodb/systemconfig2019-08-24_08-29-56AM.log.

세션 로그 파일은 /u01/app/19c/grid/cfgtoollogs/opatchauto/opatchauto2019-08-24_08-30-24AM.log입니다.
이 세션의 ID는 C7E8입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/19c/grid
Patch applicability verified successfully on home /u01/app/19c/grid


Bringing down CRS service on home /u01/app/19c/grid
CRS service brought down successfully on home /u01/app/19c/grid


Start applying binary patch on home /u01/app/19c/grid
Binary patch applied successfully on home /u01/app/19c/grid


Starting CRS service on home /u01/app/19c/grid
CRS service started successfully on home /u01/app/19c/grid

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:rac2
CRS Home:/u01/app/19c/grid
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is already been applied, so not going to apply again.


==Following patches were SUCCESSFULLY applied:

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-35-40오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-35-40오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29851014
Log: /u01/app/19c/grid/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-35-40오전_1.log



OPatchauto session completed at Sat Aug 24 08:46:07 2019
Time taken to complete the session 16 minutes, 24 seconds

root 계정으로 접속하여 Grid 소프트웨어에 업데이트를 적용합니다.

업데이트시 클러스터를 재기동하는 과정이 진행되므로, 한 번에 하나의 노드만 업데이트합니다.

B) Database 업데이트

Database 업데이트 : root 유저로 수행
$DB_HOME/OPatch/opatchauto apply <압축 해제 경로>/29708769 -oh $DB_HOME

1번 노드

[root@rac1 ~]# $DB_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769 -oh $DB_HOME

OPatchauto session is initiated at Sat Aug 24 08:46:50 2019

System initialization log file is /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchautodb/systemconfig2019-08-24_08-47-03AM.log.

세션 로그 파일은 /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/opatchauto2019-08-24_08-47-59AM.log입니다.
이 세션의 ID는 NYQX입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/19c/db_1
Patch applicability verified successfully on home /u01/app/oracle/product/19c/db_1


Verifying SQL patch applicability on home /u01/app/oracle/product/19c/db_1
No step execution required.........


Preparing to bring down database service on home /u01/app/oracle/product/19c/db_1
No step execution required.........


Performing prepatch operation on home /u01/app/oracle/product/19c/db_1
Perpatch operation completed successfully on home /u01/app/oracle/product/19c/db_1


Start applying binary patch on home /u01/app/oracle/product/19c/db_1
Binary patch applied successfully on home /u01/app/oracle/product/19c/db_1


Performing postpatch operation on home /u01/app/oracle/product/19c/db_1
Postpatch operation completed successfully on home /u01/app/oracle/product/19c/db_1


Preparing home /u01/app/oracle/product/19c/db_1 after database service restarted
No step execution required.........


Trying to apply SQL patch on home /u01/app/oracle/product/19c/db_1
No step execution required.........

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:rac1
RAC Home:/u01/app/oracle/product/19c/db_1
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29851014
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is not applicable to this specified target type - "rac_database"


==Following patches were SUCCESSFULLY applied:

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-48-57오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-48-57오전_1.log



OPatchauto session completed at Sat Aug 24 08:54:27 2019
Time taken to complete the session 7 minutes, 37 seconds

2번 노드

[root@rac2 ~]# $DB_HOME/OPatch/opatchauto apply /media/sf_oracle/19.4/29708769 -oh $DB_HOME

OPatchauto session is initiated at Sat Aug 24 08:55:06 2019

System initialization log file is /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchautodb/systemconfig2019-08-24_08-55-18AM.log.

세션 로그 파일은 /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/opatchauto2019-08-24_08-56-09AM.log입니다.
이 세션의 ID는 YDEE입니다.

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/19c/db_1
Patch applicability verified successfully on home /u01/app/oracle/product/19c/db_1


Verifying SQL patch applicability on home /u01/app/oracle/product/19c/db_1
No step execution required.........


Preparing to bring down database service on home /u01/app/oracle/product/19c/db_1
No step execution required.........


Performing prepatch operation on home /u01/app/oracle/product/19c/db_1
Perpatch operation completed successfully on home /u01/app/oracle/product/19c/db_1


Start applying binary patch on home /u01/app/oracle/product/19c/db_1
Binary patch applied successfully on home /u01/app/oracle/product/19c/db_1


Performing postpatch operation on home /u01/app/oracle/product/19c/db_1
Postpatch operation completed successfully on home /u01/app/oracle/product/19c/db_1


Preparing home /u01/app/oracle/product/19c/db_1 after database service restarted
No step execution required.........


Trying to apply SQL patch on home /u01/app/oracle/product/19c/db_1
No step execution required.........

OPatchAuto를 성공했습니다.

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:rac2
RAC Home:/u01/app/oracle/product/19c/db_1
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /media/sf_oracle/19.4/29708769/29851014
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /media/sf_oracle/19.4/29708769/29401763
Reason: This patch is not applicable to this specified target type - "rac_database"


==Following patches were SUCCESSFULLY applied:

Patch: /media/sf_oracle/19.4/29708769/29834717
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-57-06오전_1.log

Patch: /media/sf_oracle/19.4/29708769/29850993
Log: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2019-08-24_08-57-06오전_1.log



OPatchauto session completed at Sat Aug 24 09:02:05 2019
Time taken to complete the session 7 minutes, 0 second

Database 소프트웨어도 동일하게 root 유저로 업데이트를 진행하며, 한 번에 하나의 노드씩 작업을 수행합니다.

C) 결과 확인

Grid 업데이트 결과 확인
$GI_HOME/OPatch/opatch lspatches -oh $GI_HOME

1번 노드

[racdb1:/home/oracle]> $GI_HOME/OPatch/opatch lspatches -oh $GI_HOME
29851014;ACFS RELEASE UPDATE 19.4.0.0.0 (29851014)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $GI_HOME/OPatch/opatch lspatches -oh $GI_HOME
29851014;ACFS RELEASE UPDATE 19.4.0.0.0 (29851014)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)

OPatch succeeded.

Grid 소프트웨어의 업데이트 결과를 확인합니다.

Database 업데이트 결과 확인
$DB_HOME/OPatch/opatch lspatches -oh $DB_HOME

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

Database 소프트웨어의 업데이트 결과를 확인합니다.

5. OJVM 패치 (옵션)

A) 패치 내역 확인

Database 패치 내역 확인 : Oracle 유저로 수행
$DB_HOME/OPatch/opatch lspatches -oh $DB_HOME

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

Database에 패치된 내역이 있는지 확인합니다.

기본적으로 OJVM은 Java를 사용하는 Database에 패치합니다.

B) OJVM 패치 사전 분석

OJVM 패치 사전 분석 : Oracle 유저로 수행
$DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph <압축 해제 경로>/29774421

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph /media/sf_oracle/19.4/29774421
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-34-09오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph /media/sf_oracle/19.4/29774421
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-34-32오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

패치를 진행하기 전에 기존에 패치와 충돌되는 부분이 있는지 확인합니다.

C) OJVM 패치 적용

OJVM 패치 : Oracle 유저로 수행
cd <압축 해제 경로>/29774421
$DB_HOME/OPatch/opatch apply

1번 노드

[racdb1:/home/oracle]> cd /media/sf_oracle/19.4/29774421

[racdb1:/media/sf_oracle/19.4/29774421]> $DB_HOME/OPatch/opatch apply
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.


Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-38-36오전_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   29774421

계속하겠습니까? [y|n]
y
User Responded with: Y
All checks passed.

로컬 시스템의 이 ORACLE_HOME에서 실행 중인 Oracle 인스턴스를 종료하십시오.
(Oracle 홈 = '/u01/app/oracle/product/19c/db_1')


로컬 시스템이 패치할 준비가 되었습니까? [y|n]
y
User Responded with: Y
Backing up files...
OH '/u01/app/oracle/product/19c/db_1'에 Interim 패치 '29774421'을(를) 적용하는 중

oracle.javavm.server, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.javavm.server.core, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms.dbscripts, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms, 19.0.0.0.0 구성요소를 패치하는 중...
Patch 29774421 successfully applied.
Log file location: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-38-36오전_1.log

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> cd /media/sf_oracle/19.4/29774421

[racdb2:/media/sf_oracle/19.4/29774421]> $DB_HOME/OPatch/opatch apply
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.


Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-42-27오전_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   29774421

계속하겠습니까? [y|n]
y
User Responded with: Y
All checks passed.

로컬 시스템의 이 ORACLE_HOME에서 실행 중인 Oracle 인스턴스를 종료하십시오.
(Oracle 홈 = '/u01/app/oracle/product/19c/db_1')


로컬 시스템이 패치할 준비가 되었습니까? [y|n]
y
User Responded with: Y
Backing up files...
OH '/u01/app/oracle/product/19c/db_1'에 Interim 패치 '29774421'을(를) 적용하는 중

oracle.javavm.server, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.javavm.server.core, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms.dbscripts, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms, 19.0.0.0.0 구성요소를 패치하는 중...
Patch 29774421 successfully applied.
Log file location: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-42-27오전_1.log

OPatch succeeded.

OJVM 패치를 Database 소프트웨어에 적용합니다.

D) 패치 결과 확인

Database 패치 결과 확인
$DB_HOME/OPatch/opatch lspatches

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29774421;OJVM RELEASE UPDATE: 19.4.0.0.190716 (29774421)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29774421;OJVM RELEASE UPDATE: 19.4.0.0.190716 (29774421)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

Database에 패치가 된 내역을 확인합니다.

6. OJVM 패치 (옵션)

A) 패치 내역 확인

Database 패치 내역 확인 : Oracle 유저로 수행
$DB_HOME/OPatch/opatch lspatches -oh $DB_HOME

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

Database에 패치된 내역이 있는지 확인합니다.

기본적으로 OJVM은 Java를 사용하는 Database에 패치합니다.

B) OJVM 패치 사전 분석

OJVM 패치 사전 분석 : Oracle 유저로 수행
$DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph <압축 해제 경로>/29774421

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph /media/sf_oracle/19.4/29774421
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-34-09오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph /media/sf_oracle/19.4/29774421
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-34-32오전_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

패치를 진행하기 전에 기존에 패치와 충돌되는 부분이 있는지 확인합니다.

C) OJVM 패치 적용

OJVM 패치 : Oracle 유저로 수행
cd <압축 해제 경로>/29774421
$DB_HOME/OPatch/opatch apply

1번 노드

[racdb1:/home/oracle]> cd /media/sf_oracle/19.4/29774421

[racdb1:/media/sf_oracle/19.4/29774421]> $DB_HOME/OPatch/opatch apply
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.


Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-38-36오전_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   29774421

계속하겠습니까? [y|n]
y
User Responded with: Y
All checks passed.

로컬 시스템의 이 ORACLE_HOME에서 실행 중인 Oracle 인스턴스를 종료하십시오.
(Oracle 홈 = '/u01/app/oracle/product/19c/db_1')


로컬 시스템이 패치할 준비가 되었습니까? [y|n]
y
User Responded with: Y
Backing up files...
OH '/u01/app/oracle/product/19c/db_1'에 Interim 패치 '29774421'을(를) 적용하는 중

oracle.javavm.server, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.javavm.server.core, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms.dbscripts, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms, 19.0.0.0.0 구성요소를 패치하는 중...
Patch 29774421 successfully applied.
Log file location: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-38-36오전_1.log

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> cd /media/sf_oracle/19.4/29774421

[racdb2:/media/sf_oracle/19.4/29774421]> $DB_HOME/OPatch/opatch apply
Oracle Interim 패치 설치 프로그램 버전 12.2.0.1.17
Copyright (c) 2019, Oracle Corporation.  All rights reserved.


Oracle 홈: /u01/app/oracle/product/19c/db_1
중앙 인벤토리: /u01/app/oraInventory
   출처: /u01/app/oracle/product/19c/db_1/oraInst.loc
OPatch 버전: 12.2.0.1.17
OUI 버전: 12.2.0.7.0
로그 파일 위치: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-42-27오전_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   29774421

계속하겠습니까? [y|n]
y
User Responded with: Y
All checks passed.

로컬 시스템의 이 ORACLE_HOME에서 실행 중인 Oracle 인스턴스를 종료하십시오.
(Oracle 홈 = '/u01/app/oracle/product/19c/db_1')


로컬 시스템이 패치할 준비가 되었습니까? [y|n]
y
User Responded with: Y
Backing up files...
OH '/u01/app/oracle/product/19c/db_1'에 Interim 패치 '29774421'을(를) 적용하는 중

oracle.javavm.server, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.javavm.server.core, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms.dbscripts, 19.0.0.0.0 구성요소를 패치하는 중...

oracle.rdbms, 19.0.0.0.0 구성요소를 패치하는 중...
Patch 29774421 successfully applied.
Log file location: /u01/app/oracle/product/19c/db_1/cfgtoollogs/opatch/opatch2019-08-26_01-42-27오전_1.log

OPatch succeeded.

OJVM 패치를 Database 소프트웨어에 적용합니다.

D) 패치 결과 확인

Database 패치 결과 확인
$DB_HOME/OPatch/opatch lspatches

1번 노드

[racdb1:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29774421;OJVM RELEASE UPDATE: 19.4.0.0.190716 (29774421)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

2번 노드

[racdb2:/home/oracle]> $DB_HOME/OPatch/opatch lspatches -oh $DB_HOME
29774421;OJVM RELEASE UPDATE: 19.4.0.0.190716 (29774421)
29850993;OCW RELEASE UPDATE 19.4.0.0.0 (29850993)
29834717;Database Release Update : 19.4.0.0.190716 (29834717)

OPatch succeeded.

Database에 패치가 된 내역을 확인합니다.

X. 데이터베이스 생성

1. 데이터베이스 생성

A) DBCA 실행

DBCA 실행
dbca

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

B) 데이터베이스 작업 선택

'데이터베이스 생성'을 체크하고 <다음> 버튼을 클릭합니다.

C) 데이터베이스 생성 모드 선택

'고급 구성'을 선택하고 <다음> 버튼을 클릭합니다.

D) 데이터베이스 배치 유형 선택

데이터베이스 유형을 'Oracle RAC(Real Application Clusters) 데이터베이스'(기본값)로 하고 구성 유형은 '관리자 관리'(기본값)를 선택합니다.

데이터베이스 용도와 기존 시스템 구성 방식에 따라 적당한 구성 유형과 템플리트를 선택할 수 있습니다.

일반적인 사용이나 OLTP 업무 처리를 위해서 '범용 또는 트랜잭션 처리'를 선택하고 <다음> 버튼을 클릭합니다.

사용자 정의 데이터베이스를 선택할 경우, 원하는 옵션으로 좀 더 자세하게 설정할 수 있습니다.

E) 노드의 선택 목록

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

F) 데이터베이스 식별 세부 정보 지정

전역 데이터베이스 이름과 SID 접두어를 입력합니다.

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

Multitenant database를 생성하려면 '컨테이너 데이터베이스 생성'을 체크해야 합니다.

원하는 값을 입력한 후, <다음> 버튼을 클릭합니다.

G) 데이터베이스 저장 영역 옵션 선택

리두 로그 및 제어 파일을 여러 ASM 디스크 그룹에 저장하려면, <리두 로그 및 제어 파일 다중화> 버튼을 클릭합니다.

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

<파일 위치 변수> 버튼을 클릭하면 Database 소프트웨어가 설치된 경로나 SID 등의 정보를 확인할 수 있습니다.

데이터베이스 저장 영역을 선택하는 단계입니다.

'데이터베이스 저장 영역 속성에 다음 사용'(기본값)을 선택하고 데이터베이스 파일 저장 영역 유형을 'ASM(자동 저장 영역 관리)'(기본값)로 합니다.

데이터베이스 파일 위치는 기본값인 "+DATA/{DB_UNIQUE_NAME}"을 유지하고 'OMF(Oracle-Managed Files)사용'을 체크합니다.

부가적으로 리두 로그와 컨트롤 파일 다중화가 필요하다면 <리두 로그 및 제어 파일 다중화>를 클릭합니다.

저장 공간 선택이 완료되면 <다음>을 클릭합니다.

H) 빠른 복구 옵션 선택

빠른 복구 영역 사용을 위해 '빠른 복구 영역 지정'을 체크하고, 복구 파일 저장 영역 유형은 'ASM(자동 저장 영역 관리)'를 선택합니다.

빠른 복구 영역은 "+FRA" 디스크 그룹으로 선택합니다.

빠른 복구 영역을 변경할 경우에는 우측의 <찾아보기> 버튼을 클릭하여 디스크 그룹 목록에서 선택합니다.

적당한 크기의 빠른 복구 영역 크기를 입력합니다.

데이터 파일과 혼동되지 않도록, 아카이브 로그의 확장자를 dbf에서 arc 등으로 변경하는 것을 추천합니다.

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

복구 영역에 대한 설정이 완료되었으면 <다음> 버튼을 클릭합니다.

I) Oracle Database Vault 구성 옵션 선택

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

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

J) 구성 옵션 지정

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

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

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

디버깅의 목적을 위해서 기본 언어는 '영어(미국)'을 주로 사용합니다.

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

기본값인 '전용 서버 모드'를 유지합니다.

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

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

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

기본값으로는 '자동 공유 메모리 관리 사용'이 선택되어, 물리 메모리의 40% 가량이 SGA와 PGA에 할당되어 있습니다.

사용하려는 환경에 맞게 조정하면 됩니다.

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

내용을 검토하고 특이사항이 없을 경우 <다음> 버튼을 클릭합니다.

K) 관리 옵션 지정

데이터베이스 관리 옵션을 지정하는 단계입니다.

모든 옵션을 해제하고 <다음>을 클릭합니다.

'EM(Enterprise Manager) Database Express 구성'을 사용할 경우 리소스 소모가 많이 발생하므로 해제 합니다.

CVU 검사로 인한 리소스 소모가 염려된다면, 'CVU(클러스터 확인 유틸리티) 검사를 주기적으로 실행'도 해제합니다.

기존에 구축된 EMCC에 연동시키거나 RAC 데이터베이스만을 위한 EM express를 구성할 수 있습니다.

L) 데이터베이스 사용자 인증서 지정

데이터베이스 관리 계정의 비밀번호를 지정하는 단계입니다.

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

다만 편의를 위해 '모든 계정에 동일한 관리 비밀번호 사용'을 선택하고 비밀 번호를 입력한 후 <다음> 버튼을 클릭합니다.

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

M) 데이터베이스 생성 옵션 선택

데이터베이스 생성 옵션을 선택하는 단계입니다.

'고급 매개변수 표시' 박스를 체크하면 모든 파라미터의 값을 자세히 확인할 수 있습니다.

<모든 초기화 매개변수>를 클릭하면 데이터베이스 초기 파라미터를 변경할 수 있습니다.

리두 그룹 추가나 컨트롤 파일 옵션은 <저장 영역 위치 사용자 정의> 버튼을 클릭하여 수정할 수 있습니다.

제어 파일(Control Files)에 대한 옵션을 변경할 수 있습니다.

데이터 파일의 이름을 확인할 수 있습니다.

OMF 사용을 앞에서 선택했으므로 파일 이름에 대한 변경은 이 화면에서는 불가능해 보입니다.

저장소 사용자 정의 화면이 열리면서, 데이터베이스(컨트롤 파일, 데이터 파일, 리두 로그)에 대한 설정 변경이나 정보 확인을 할 수 있습니다.

200MB의 리두 그룹을 한개씩 각 노드에 추가합니다.

5번 그룹의 리두 로그 파일 크기는 "200MB", 스레드는 '2'번으로 한 후 <적용> 버튼을 클릭합니다.

각 노드에 3개의 리두 그룹이 할당되도록 6번째 리두 그룹도 동일하게 "200MB"에 스레드 '2'번으로 생성합니다.

1~3번 그룹은 1번 스레드에 할당하고, 나머지 4~6번 그룹은 2번 스레드에 할당할 예정입니다.

2번 그룹 스레드가 '1'번으로 되어있는지 확인합니다.

3번 그룹의 스레드를 '1'번으로 변경하고 <적용> 버튼을 클릭합니다.

4번 그룹 스레드가 '2'번으로 되어있는지 확인합니다.

기본적으로 RAC를 구성할 경우, 각 노드에 리두 그룹이 2개가 생성됩니다.

작업 양이 많을 경우 리두 스위치로 인한 대기가 발생할 수 있으므로 하나의 리두 그룹을 각 노드에 추가하는 것을 권장하며, 저장소 사용자 정의 화면에서 이 작업이 가능합니다.

<추가> 버튼을 클릭하면 리두 로그 그룹 추가로 화면이 변경됩니다.

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

데이터베이스에서 처리하는 업무량에 맞게 이곳에서 리두 그룹의 수량과 용량을 변경하면 됩니다.

'데이터베이스 생성'을 체크하고, 별도의 스크립트 저장을 위해 '데이터베이스 생성 스크립트 생성'을 체크한 후 <다음> 버튼을 클릭합니다.

N) 필요 조건 검사 수행

GI와 Database 설치 단계에서 문제될만한 내용을 모두 해결하였다면, 검증에 실패한 내용이 없이 다음 단계로 진행됩니다.

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

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

O) 요약

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

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

P) 진행 페이지

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

각 단계별로 설치가 진행됩니다.

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

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

운영 환경에서 설치한다면 가급적 로그를 실시간으로 모니터링하며 설치할 것을 권고합니다.

tail -f <데이터베이스 경보 로그 위치>

Q) 완료

계정 잠금 여부를 선택할 수 있고, 비밀번호 변경을 할 수 있습니다.

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

<비밀번호 관리> 버튼을 클릭하면 생성된 계정의 비밀번호를 변경할 수 있습니다.

작업이 완료되었으면 <닫기> 버튼을 클릭합니다.

R) 결과 확인

데이터베이스 생성 결과 확인
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       rac1                     STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       rac2                     STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       rac2                     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       rac2                     STABLE
ora.qosmserver
      1        ONLINE  ONLINE       rac2                     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       rac1                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       rac2                     STABLE
--------------------------------------------------------------------------------

데이터베이스가 정상적으로 리소스에 등록되어 ONLINE인 것을 확인할 수 있습니다.

 

  • 레이블 없음