I. 개요
1. 사용 Software
제품명 | 버전 | 아키텍쳐 | 배포 사이트 |
---|---|---|---|
VirtualBox | 6.0.x | 호스트 환경에 따름 | https://www.virtualbox.org |
Oracle Enterprise Linux | 7 (Update 5 이상 권장) | x86 64bit | |
Clusterware, Database | 19.3 | x86 64bit | http://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) 서버
VM | Host Name | Memory | Net Adapter 1 | Net Adapter 2 | 구성 방법 | 비고 |
---|---|---|---|---|---|---|
RAC1 | rac1 | 10GB | 호스트 전용 어댑터 | 호스트 전용 어댑터 #2 | 리눅스 설치 | dnsmasq를 사용하여 DNS 구성 |
RAC2 | rac2 | 10GB | 호스트 전용 어댑터 | 호스트 전용 어댑터 #2 | RAC1 복제 | dnsmasq를 사용하여 DNS 구성 |
리눅스 기반의 2 node RAC로 구성합니다.
B) 스토리지
파일 이름 | 용량 | 타입 | 용도 | 비고 |
---|---|---|---|---|
rac1.vdi | 100GB | Dynamic / Normal | RAC1 노드 스토리지 | 디스크 사용량을 최소화하기 위해 Dynamic으로 생성합니다. |
rac2.vdi | 100GB | Dynamic / Normal | RAC2 노드 스토리지 | vboxmanage clonemedium을 이용하여 rac1.vdi 파일을 복제합니다. |
CRS1.vdi | 1GB | Fixed / Shareable | OCR / Vote 저장 영역 | 공유(shareable) 디스크로 사용하기 위해서는 Fixed Size로 생성해야 합니다. |
CRS2.vdi | 1GB | Fixed / Shareable | ||
CRS3.vdi | 1GB | Fixed / Shareable | ||
DATA.vdi | 30GB | Fixed / Shareable | DATA 영역 | |
FRA.vdi | 20GB | Fixed / Shareable | Fast Recovery Area |
Automatic Storage Management를 이용하여 Data 공간과 Fast Recovery Area를 구성합니다.
테스트를 위한 VM이므로 디스크 공간을 절약하기 위해 파일을 업로드 없이 VirtualBox의 게스트 확장 기능으로 VM에서 불러와 사용합니다.
C) 네트워크
VM | Public IP | Private IP | Virtual IP | Netmask | Gateway | DNS Server | SCAN IP |
---|---|---|---|---|---|---|---|
RAC1 | 10.0.1.101 | 10.0.5.101 | 10.0.1.201 | 255.255.255.0 | 10.0.1.1 | 127.0.0.1 | 10.0.1.191, 10.0.1.192, 10.0.1.193 |
RAC2 | 10.0.1.102 | 10.0.5.102 | 10.0.1.202 | 255.255.255.0 | 10.0.1.1 | 127.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~2GB | RAM의 1.5배 크기 |
2GB~16GB | RAM과 동일한 크기 |
16GB 이상 | 16GB |
동일한 방식으로 나머지 공간을 "/"(root) 영역에 할당 합니다.
용량 항목을 빈 칸으로 입력한 후 <마운트 지점 추가>를 클릭하면 나머지 전체 영역이 할당됩니다.
각각의 마운트 지점이 아래와 같은 크기로 할당됩니다.
할당 영역 | 크기 |
---|---|
/boot | 200MB |
swap | 10GB |
/ | 나머지 공간 할당 |
적용된 내용을 확인한 후에 <완료> 버튼을 클릭합니다.
변경 요약 화면이 나오면 <변경 사항 적용> 버튼을 클릭합니다.
D) KDUMP
실습을 위한 구축이므로 'KDUMP' 항목에서 kdump 기능을 비활성화하려 합니다.
'KDUMP' 항목으로 이동합니다.
'kdump 활성화'를 해제합니다.
운영 환경에서는 문제 해결 등의 이유로 활성화된 상태로 사용할 수 있으며, 운영 정책에 따라 지정해야 합니다.
필요한 옵션을 선택하였으면 <완료>를 클릭합니다
네트워크 및 호스트명
네트워크와 호스트명을 변경하기 위해 '네트워크 및 호스트명' 항목을 선택합니다.
네트워크와 호스트 이름을 설정해야 합니다.
좌측에서 Public 네트워크와 연결할 이더넷 인터페이스인 enp0s3을 선택하고 우측 하단의 <설정> 버튼을 클릭합니다.
VirtualBox가 아닌 VMware를 사용할 경우, 인터페이스 이름이 다를 수 있습니다.
네트워크 인터페이스명은 BIOS나 firmware를 기준으로 자동으로 생성됩니다.
RAC를 구성하는데 있어서, 모든 노드의 public 이더넷과 private 이더넷의 이름이 각 그룹내에서 동일해야 경고없이 설치나 패치를 진행할 수 있습니다.
일반 탭에서 '사용 가능하면 자동으로 이 네트워크에 연결'을 체크합니다.
IPv4 설정 탭으로 이동하여 방식에 '수동'을 선택합니다.
'Add' 버튼을 클릭하고 다음의 정보를 입력합니다.
항목 | 입력값 | 비고 |
---|---|---|
주소 | 10.0.1.101 | 1번 노드 Public IP 주소 |
넷마스크 | 24 | 서브넷 마스크 값으로 255.255.255.0 사용 가능 |
게이트웨이 | 10.0.1.1 | Public 망의 게이트웨이 |
DNS 서버 | 127.0.0.1 | dnsmasq를 사용할 경우 loopback IP 사용 |
검색 도메인 | localdomain | 로컬 도메인 정보 입력 |
DNS가 없는 환경이어서 dnsmasq를 사용할 것이므로 DNS 서버에 "127.0.0.1"을 입력하였으나, 운영 환경에서는 적절한 DNS 주소 입력이 필요합니다.
IPv6는 사용하지 않을 것이므로 방식에 '무시'를 선택하고, <저장>을 클릭합니다.
이더넷(enp0s3)에 입력한 Public 네트워크 정보가 적용된 것을 확인할 수 있습니다.
이번에는 좌측에서 Private 네트워크와 연결할 이더넷 인터페이스인 enp0s8을 선택하고 우측 하단의 <설정> 버튼을 클릭합니다.
일반 탭에서 '사용 가능하면 자동으로 이 네트워크에 연결'을 체크합니다.
IPv4 설정 탭으로 이동하여 방식에 '수동'을 선택합니다.
'Add' 버튼을 클릭하고 다음의 정보를 입력합니다.
항목 | 입력값 | 비고 |
---|---|---|
주소 | 10.0.5.101 | 1번 노드 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) 설치 정보 확인
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) 리눅스 제공 필수 패키지 설치
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 패키지도 추가로 설치합니다.
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 파일 수정
### 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) 보안 설정 변경
SELINUX=permissive
setenforce permissive
Selinux 모드를 permissive로 변경합니다.
F) dnsmasq 활성화
local=/localdomain/
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) 가상 메모리 파일 시스템 할당
tmpfs /dev/shm tmpfs size=8g 0 0
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 제공 추가 패키지 설치
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) 사용자 환경 설정
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계정에서 해당 파일을 직접 수정할 수 있습니다.
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를 설정합니다.
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 | 1GB | Fixed / Shareable | CRS 저장 영역 | 공유(shareable) 디스크로 사용하기 위해서 Fixed Size로 생성합니다. |
CRS2.vdi | 1GB | Fixed / Shareable | ||
CRS3.vdi | 1GB | Fixed / Shareable | ||
DATA.vdi | 30GB | Fixed / Shareable | Data 저장 영역 | |
FRA.vdi | 20GB | Fixed / Shareable | Fast 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 환경 설정 및 초기화
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 디스크 생성
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 복제
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 네트워크의 인터페이스입니다.
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 확인이 필요할 경우 다음의 명령어를 사용합니다.
nmcli connection
이더넷 enp0s3의 IPv4 항목에서 주소를 "10.0.1.102"(2번 노드의 Public 네트워크 IP)로 변경한 후 <적용>을 클릭합니다.
리눅스 버전에 따라 네트워크 정보가 초기화되어 있을 수 있습니다.
그럴 때는 아래의 정보와 같이 입력합니다.
항목 | 입력값 | 비고 |
---|---|---|
주소 | 10.0.1.102 | 1번 노드 Public IP 주소 |
네트마스크 | 24 | 서브넷 마스크 값으로 255.255.255.0 사용 가능 |
게이트웨이 | 10.0.1.1 | Public 망의 게이트웨이 |
네임서버(DNS) | 127.0.0.1 | dnsmasq를 사용할 경우 loopback IP 사용 |
검색 도메인 | localdomain | 로컬 도메인 정보 입력 |
이더넷 enp0s8의 IPv4 항목에서 주소를 "10.0.5.102"(2번 노드의 Private 네트워크 IP)로 변경한 후 <적용>을 클릭합니다.
마찬가지로 네트워크 정보가 초기화 되었을 경우, 아래와 같이 입력합니다.
항목 | 입력값 | 비고 |
---|---|---|
주소 | 10.0.5.101 | 1번 노드 Private IP 주소 |
네트마스크 | 24 | 서브넷 마스크 값으로 255.255.255.0 사용 가능 |
각 이더넷 인터페이스를 껏다가 키면 변경된 설정이 적용됩니다.
또는 명령 프롬프트에서 아래 명령을 수행합니다.
systemctl restart network
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) 호스트명 변경
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 모드에서 간단한 명령어로 변경할 수 있습니다.
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) 사용자 환경 변수 변경
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번 노드에 맞게 수정합니다.
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. Grid 설치 준비
A) Grid 설치 파일 압축 해제
mkdir -p $GI_HOME unzip LINUX.X64_193000_GI_HOME.zip -d $GI_HOME
[racdb1:/home/oracle]> mkdir -p $GI_HOME [racdb1:/home/oracle]> unzip /mnt/LINUX.X64_193000_GI_HOME.zip -d $GI_HOME
B) OPatch 업데이트
$GI_HOME/OPatch/opatch version mv $GI_HOME/OPatch $GI_HOME/OPatch.old unzip <zip 파일이 있는 경로>/p6880880_190000_Linux-x86-64.zip -d $GI_HOME chown -R oracle:oinstall $GI_HOME/OPatch $GI_HOME/OPatch/opatch version
C) 필수 패키지 설치
cd $GI_HOME/cv/rpm rpm -ivh cvuqdisk-1.0.10-1.rpm scp cvuqdisk-*.rpm rac2:/tmp ssh root@rac2 cd /tmp rpm -ivh cvuqdisk-1.0.10-1.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:idamz+i1/GkLKrPlk0dQ3rXUx8A5xx9pfGeKkJZ/UEo. ECDSA key fingerprint is MD5:74:c4:cf:57:9e:c6:f5:1d:29:e5:79:f8:67:ce:70:22. 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 9.3MB/s 00:00 [root@rac1 rpm]# ssh root@rac2 root@rac2's password: Last login: Sun Jan 12 12:32:20 2020 from gateway [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
D) 공유 디스크 상태 검증
OHOME=$ORACLE_HOME
kfod disks=all status=true name=true asm_diskstring=ORCL:*
[+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
E) 암호없는 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_2020-01-12-12-49-06.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.046 ms 64 bytes from rac1 (10.0.1.101): icmp_seq=2 ttl=64 time=0.055 ms 64 bytes from rac1 (10.0.1.101): icmp_seq=3 ttl=64 time=0.090 ms 64 bytes from rac1 (10.0.1.101): icmp_seq=4 ttl=64 time=0.041 ms 64 bytes from rac1 (10.0.1.101): icmp_seq=5 ttl=64 time=0.079 ms --- rac1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4103ms rtt min/avg/max/mdev = 0.041/0.062/0.090/0.019 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.666 ms 64 bytes from rac2 (10.0.1.102): icmp_seq=2 ttl=64 time=0.761 ms 64 bytes from rac2 (10.0.1.102): icmp_seq=3 ttl=64 time=0.853 ms 64 bytes from rac2 (10.0.1.102): icmp_seq=4 ttl=64 time=0.609 ms 64 bytes from rac2 (10.0.1.102): icmp_seq=5 ttl=64 time=0.616 ms --- rac2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4023ms rtt min/avg/max/mdev = 0.609/0.701/0.853/0.093 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:ESAEYoiesHavnVWuSlEekdJq0YUtTzYTCfLVTX7GP98 oracle@rac1 The key's randomart image is: +---[RSA 1024]----+ |+..oo.++B++ o. | |=. +o*oO .... | |o.. ++* o . + | |.+ . oo .+ o .| |. . o. .S ..| | ... . +| | o.o . E| | ..o . | | .. | +----[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:igeSN30nygiz4Z3TvTt02cka0EHMSyHQOOA6tHiMM7Q oracle@rac2 The key's randomart image is: +---[RSA 1024]----+ | ...+.+o. | | . o ..= | | .. . . o o | |.=.+ . . o | |=E% + . S..+ . | | = X O =.o+ + | | o * *... o | | o ... | | oo | +----[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. 2020. 01. 12. (일) 12:49:32 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. 2020. 01. 12. (일) 12:49:32 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. 2020. 01. 12. (일) 12:49:32 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. 2020. 01. 12. (일) 12:49:33 KST ------------------------------------------------------------------------ -Verification from complete- SSH verification complete.
F) 설치 환경 사전 검증
$GI_HOME/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -osdba dba -orainv oinstall -fixup -method root -networks enp0s3/enp0s8 -verbose
[racdb1:/home/oracle]> $GI_HOME/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -osdba dba -orainv oinstall -fixup -method root -networks enp0s3/enp0s8 -verbose "ROOT" 비밀번호 입력: 물리적 메모리 확인 중... 노드 이름 사용 가능 필수 상태 ------------ ------------------------ ------------------------ ---------- rac2 9.7482GB (1.0221708E7KB) 8GB (8388608.0KB) 성공 rac1 9.7482GB (1.0221704E7KB) 8GB (8388608.0KB) 성공 물리적 메모리 확인 중...성공 사용 가능한 물리적 메모리 확인 중... 노드 이름 사용 가능 필수 상태 ------------ ------------------------ ------------------------ ---------- rac2 9.586GB (1.0051612E7KB) 50MB (51200.0KB) 성공 rac1 9.0921GB (9533792.0KB) 50MB (51200.0KB) 성공 사용 가능한 물리적 메모리 확인 중...성공 교체 크기 확인 중... 노드 이름 사용 가능 필수 상태 ------------ ------------------------ ------------------------ ---------- rac2 10GB (1.0485756E7KB) 9.7482GB (1.0221708E7KB) 성공 rac1 10GB (1.0485756E7KB) 9.7482GB (1.0221704E7KB) 성공 교체 크기 확인 중...성공 사용 가능한 공간: rac2:/usr,rac2:/var,rac2:/etc,rac2:/sbin,rac2:/tmp 확인 중... 경로 노드 이름 마운트 위치 사용 가능 필수 상태 ---------------- ------------ ------------ ------------ ------------ ------------ /usr rac2 / 92.7139GB 25MB 성공 /var rac2 / 92.7139GB 5MB 성공 /etc rac2 / 92.7139GB 25MB 성공 /sbin rac2 / 92.7139GB 10MB 성공 /tmp rac2 / 92.7139GB 1GB 성공 사용 가능한 공간: rac2:/usr,rac2:/var,rac2:/etc,rac2:/sbin,rac2:/tmp 확인 중...성공 사용 가능한 공간: rac1:/usr,rac1:/var,rac1:/etc,rac1:/sbin,rac1:/tmp 확인 중... 경로 노드 이름 마운트 위치 사용 가능 필수 상태 ---------------- ------------ ------------ ------------ ------------ ------------ /usr rac1 / 79.6679GB 25MB 성공 /var rac1 / 79.6679GB 5MB 성공 /etc rac1 / 79.6679GB 25MB 성공 /sbin rac1 / 79.6679GB 10MB 성공 /tmp rac1 / 79.6679GB 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 3 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-1902.3.2.el7uek.x86_64 4.1.12 성공 rac1 4.14.35-1902.3.2.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 5233512448 성공 rac2 4398046511104 4398046511104 5233514496 성공 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-25.0.1.el7 kmod(x86_64)-20-21 성공 rac1 kmod(x86_64)-20-25.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-25.0.1.el7 kmod-libs(x86_64)-20-21 성공 rac1 kmod-libs(x86_64)-20-25.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-41.base.0.1.el7 binutils-2.23.52.0.1 성공 rac1 binutils-2.27-41.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-39.0.1.el7 libgcc(x86_64)-4.8.2 성공 rac1 libgcc(x86_64)-4.8.5-39.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-39.0.1.el7 libstdc++(x86_64)-4.8.2 성공 rac1 libstdc++(x86_64)-4.8.5-39.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-39.0.1.el7 libstdc++-devel(x86_64)-4.8.2 성공 rac1 libstdc++-devel(x86_64)-4.8.5-39.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-18.el7 sysstat-10.1.5 성공 rac1 sysstat-10.1.5-18.el7 sysstat-10.1.5 성공 패키지: sysstat-10.1.5 확인 중...성공 패키지: ksh 확인 중... 노드 이름 사용 가능 필수 상태 ------------ ------------------------ ------------------------ ---------- rac2 ksh ksh 성공 rac1 ksh ksh 성공 패키지: ksh 확인 중...성공 패키지: make-3.82 확인 중... 노드 이름 사용 가능 필수 상태 ------------ ------------------------ ------------------------ ---------- rac2 make-3.82-24.el7 make-3.82 성공 rac1 make-3.82-24.el7 make-3.82 성공 패키지: make-3.82 확인 중...성공 패키지: glibc-2.17 (x86_64) 확인 중... 노드 이름 사용 가능 필수 상태 ------------ ------------------------ ------------------------ ---------- rac2 glibc(x86_64)-2.17-292.0.1.el7 glibc(x86_64)-2.17 성공 rac1 glibc(x86_64)-2.17-292.0.1.el7 glibc(x86_64)-2.17 성공 패키지: glibc-2.17 (x86_64) 확인 중...성공 패키지: glibc-devel-2.17 (x86_64) 확인 중... 노드 이름 사용 가능 필수 상태 ------------ ------------------------ ------------------------ ---------- rac2 glibc-devel(x86_64)-2.17-292.0.1.el7 glibc-devel(x86_64)-2.17 성공 rac1 glibc-devel(x86_64)-2.17-292.0.1.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.65.0.1.el7 nfs-utils-1.2.3-15 성공 rac1 nfs-utils-1.3.0-0.65.0.1.el7 nfs-utils-1.2.3-15 성공 패키지: nfs-utils-1.2.3-15 확인 중...성공 패키지: smartmontools-6.2-4 확인 중... 노드 이름 사용 가능 필수 상태 ------------ ------------------------ ------------------------ ---------- rac2 smartmontools-7.0-1.el7 smartmontools-6.2-4 성공 rac1 smartmontools-7.0-1.el7 smartmontools-6.2-4 성공 패키지: smartmontools-6.2-4 확인 중...성공 패키지: net-tools-2.0-0.17 확인 중... 노드 이름 사용 가능 필수 상태 ------------ ------------------------ ------------------------ ---------- rac2 net-tools-2.0-0.25.20131004git.el7 net-tools-2.0-0.17 성공 rac1 net-tools-2.0-0.25.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.5.1 08:00:27:57:F3:19 1500 enp0s8 10.0.5.101 10.0.5.0 0.0.0.0 10.0.5.1 08:00:27:40:C5:77 1500 "rac2" 노드에 대한 인터페이스 정보 이름 IP 주소 서브넷 게이트웨이 Def. 게이트웨이 HW 주소 MTU ------ --------------- --------------- --------------- --------------- ----------------- ------ enp0s3 10.0.1.102 10.0.1.0 0.0.0.0 10.0.5.1 08:00:27:79:5C:6F 1500 enp0s8 10.0.5.102 10.0.5.0 0.0.0.0 10.0.5.1 08:00:27:A7:DB:24 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 검사: "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 소스 대상 접속됨? ------------------------------ ------------------------------ ---------------- rac1[enp0s3:10.0.1.101] rac2[enp0s3:10.0.1.102] 예 소스 대상 접속됨? ------------------------------ ------------------------------ ---------------- rac1[enp0s8:10.0.5.101] rac2[enp0s8:10.0.5.102] 예 최대(MTU) 크기 패킷이 서브넷을 통과하는지 검사 확인 중...성공 "10.0.1.0" 서브넷에 대한 서브넷 마스크 일관성 확인 중...성공 "10.0.5.0" 서브넷에 대한 서브넷 마스크 일관성 확인 중...성공 노드 접속 확인 중...성공 멀티캐스트 또는 브로드캐스트 검사 확인 중... 멀티캐스트 그룹 "224.0.0.251"과(와) 멀티캐스트 통신을 위해 "10.0.1.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 날짜: 2020. 1. 12 오후 1:07:39 CVU 홈: /u01/app/19c/grid/ 사용자: oracle
2. Grid 설치
A) Response 파일 생성
cat > ~oracle/grid_install.rsp oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0 INVENTORY_LOCATION=/u01/app/oraInventory oracle.install.option=CRS_CONFIG ORACLE_BASE=/u01/app/oracle oracle.install.asm.OSDBA=asmdba oracle.install.asm.OSOPER=asmoper oracle.install.asm.OSASM=asmadmin oracle.install.crs.config.scanType=LOCAL_SCAN oracle.install.crs.config.gpnp.scanName=rac-scan.localdomain oracle.install.crs.config.gpnp.scanPort=1521 oracle.install.crs.config.ClusterConfiguration=STANDALONE oracle.install.crs.config.configureAsExtendedCluster=false oracle.install.crs.config.clusterName=rac oracle.install.crs.config.gpnp.configureGNS=false oracle.install.crs.config.autoConfigureClusterNodeVIP=false oracle.install.crs.config.clusterNodes=rac1:rac1-vip,rac2:rac2-vip oracle.install.crs.config.networkInterfaceList=enp0s3:10.0.1.0:1,enp0s8:10.0.5.0:5 oracle.install.crs.configureGIMR=false oracle.install.asm.configureGIMRDataDG=false oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE oracle.install.crs.config.useIPMI=false oracle.install.asm.SYSASMPassword=oracle_4U oracle.install.asm.diskGroup.name=CRS oracle.install.asm.diskGroup.redundancy=NORMAL oracle.install.asm.diskGroup.AUSize=4 oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/CRS1,/dev/oracleasm/disks/CRS2,/dev/oracleasm/disks/CRS3 oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/disks/* oracle.install.asm.monitorPassword=oracle_4U oracle.install.asm.configureAFD=false oracle.install.crs.rootconfig.executeRootScript=false <ctrl+C>
[racdb1:/home/oracle]> cat > ~/grid_install.rsp oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0 INVENTORY_LOCATION=/u01/app/oraInventory oracle.install.option=CRS_CONFIG ORACLE_BASE=/u01/app/oracle oracle.install.asm.OSDBA=asmdba oracle.install.asm.OSOPER=asmoper oracle.install.asm.OSASM=asmadmin oracle.install.crs.config.scanType=LOCAL_SCAN oracle.install.crs.config.gpnp.scanName=rac-scan.localdomain oracle.install.crs.config.gpnp.scanPort=1521 oracle.install.crs.config.ClusterConfiguration=STANDALONE oracle.install.crs.config.configureAsExtendedCluster=false oracle.install.crs.config.clusterName=rac oracle.install.crs.config.gpnp.configureGNS=false oracle.install.crs.config.autoConfigureClusterNodeVIP=false oracle.install.crs.config.clusterNodes=rac1:rac1-vip,rac2:rac2-vip oracle.install.crs.config.networkInterfaceList=enp0s3:10.0.1.0:1,enp0s8:10.0.5.0:5 oracle.install.crs.configureGIMR=false oracle.install.asm.configureGIMRDataDG=false oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE oracle.install.crs.config.useIPMI=false oracle.install.asm.SYSASMPassword=oracle_4U oracle.install.asm.diskGroup.name=CRS oracle.install.asm.diskGroup.redundancy=NORMAL oracle.install.asm.diskGroup.AUSize=4 oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/CRS1,/dev/oracleasm/disks/CRS2,/dev/oracleasm/disks/CRS3 oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/disks/* oracle.install.asm.monitorPassword=oracle_4U oracle.install.asm.configureAFD=false oracle.install.crs.rootconfig.executeRootScript=false ^C
B) Grid 설치 전 검증
$GI_HOME/gridSetup.sh -silent -responseFile ~/grid_install.rsp -executePrereqs # $GI_HOME/gridSetup.sh -silent -responseFile ~/grid_install.rsp -executePrereqs -applyRU <RU 파일 압축 해제 경로>
[+ASM1:/home/oracle]> $GI_HOME/gridSetup.sh -silent -responseFile ~/grid_install.rsp -executePrereqs Oracle Grid Infrastructure 설정 마법사 실행 중... [WARNING] [INS-13014] 대상 환경이 일부 선택적 요구 사항을 충족하지 않습니다. 원인: 일부 선택적 필요 조건이 충족되지 않았습니다. 자세한 내용은 로그를 참조하십시오. /tmp/GridSetupActions2020-01-12_06-34-17PM/gridSetupActions2020-01-12_06-34-17PM.log 작업: /tmp/GridSetupActions2020-01-12_06-34-17PM/gridSetupActions2020-01-12_06-34-17PM.log 로그에서 실패한 필요 조건 검사 목록을 확인하십시오. 로그 파일 또는 설치 설명서에서 필요 조건을 충족하는 적합한 구성을 찾아 수동으로 오류를 수정하십시오. 설치 세션 로그 이동 위치: /u01/app/oraInventory/logs/GridSetupActions2020-01-12_06-34-17PM
INS-13014 : root 계정 접속 정보를 입력하지 않아 OS 패키지 확인이 안되는 것으로 이미 runcluvfy.sh로 검증한 것이므로 무시함
INFO: [2020. 1. 12 오후 6:36:17] ------------------List of failed Tasks------------------ INFO: [2020. 1. 12 오후 6:36:17] ********************************************* INFO: [2020. 1. 12 오후 6:36:17] RPM Package Manager 데이터베이스: RPM Package Manager 데이터베이스 파일을 확인합니다. INFO: [2020. 1. 12 오후 6:36:17] Severity:INFORMATION INFO: [2020. 1. 12 오후 6:36:17] OverallStatus:INFORMATION INFO: [2020. 1. 12 오후 6:36:17] -----------------End of failed Tasks List----------------
C) Grid 설치
$GI_HOME/gridSetup.sh -silent -ignorePrereqFailure -responseFile ~/grid_install.rsp -waitForCompletion # $GI_HOME/gridSetup.sh -silent -ignorePrereqFailure -responseFile ~/grid_install.rsp -waitForCompletion -applyRU <RU 파일 압축 해제 경로>
INS-40109 : ORACLE_BASE 경로가 이미 생성되어 발생하는 경고이므로 무시함
INS-32047 : 검증 수행시 인벤토리 경로가 생성되어 발생하는 경고이므로 무시함
INS-13014 : root 계정 접속 정보를 입력하지 않아 OS 패키지 확인이 안되는 경고이므로 무시함
[+ASM1:/home/oracle]> $GI_HOME/gridSetup.sh -silent -responseFile ~/grid_install.rsp Oracle Grid Infrastructure 설정 마법사 실행 중... [WARNING] [INS-40109] 지정된 Oracle 기본 위치가 이 서버에서 비어 있지 않습니다. 작업: 빈 Oracle 기본 위치를 지정하십시오. [WARNING] [INS-32047] 중앙 인벤토리에 대해 지정된 위치(/u01/app/oraInventory)가 비어 있지 않습니다. 작업: 인벤토리에 빈 위치를 제공하는 것이 좋습니다. [WARNING] [INS-13014] 대상 환경이 일부 선택적 요구 사항을 충족하지 않습니다. 원인: 일부 선택적 필요 조건이 충족되지 않았습니다. 자세한 내용은 로그를 참조하십시오. gridSetupActions2020-01-12_06-38-06PM.log 작업: gridSetupActions2020-01-12_06-38-06PM.log 로그에서 실패한 필요 조건 검사 목록을 확인하십시오. 로그 파일 또는 설치 설명서에서 필요 조건을 충족하는 적합한 구성을 찾아 수동으로 오류를 수정하십시오. 이 세션에 대한 응답 파일을 다음에서 찾을 수 있습니다. /u01/app/19c/grid/install/response/grid_2020-01-12_06-38-06PM.rsp 다음 위치에서 이 설치 세션의 로그를 찾을 수 있습니다. /tmp/GridSetupActions2020-01-12_06-38-06PM/gridSetupActions2020-01-12_06-38-06PM.log 루트 사용자로 다음 스크립트를 실행합니다. 1. /u01/app/oraInventory/orainstRoot.sh 2. /u01/app/19c/grid/root.sh 다음 노드에서 /u01/app/oraInventory/orainstRoot.sh을(를) 실행하십시오. [rac1, rac2] 다음 노드에서 /u01/app/19c/grid/root.sh을(를) 실행하십시오. [rac1, rac2] 먼저 로컬 노드에서 스크립트를 실행하십시오. 성공적으로 완료된 후 모든 다른 노드에서 병렬로 스크립트를 시작할 수 있습니다. Successfully Setup Software with warning(s). 설치 사용자로서 다음 명령을 실행하여 구성을 완료합니다. /u01/app/19c/grid/gridSetup.sh -executeConfigTools -responseFile /home/oracle/grid_install.rsp [-silent] 설치 세션 로그 이동 위치: /u01/app/oraInventory/logs/GridSetupActions2020-01-12_06-38-06PM
D) root 스크립트 실행
/u01/app/oraInventory/orainstRoot.sh
[root@rac1 ~]# /u01/app/oraInventory/orainstRoot.sh 다음 권한 변경 중/u01/app/oraInventory. 그룹에 대한 읽기, 쓰기 권한을 추가하는 중입니다. 월드에 대한 읽기, 쓰기, 실행 권한을 제거하는 중입니다. 그룹 이름 변경 중 /u01/app/oraInventory 대상 oinstall. 스크립트 실행이 완료되었습니다.
[root@rac2 ~]# /u01/app/oraInventory/orainstRoot.sh 다음 권한 변경 중/u01/app/oraInventory. 그룹에 대한 읽기, 쓰기 권한을 추가하는 중입니다. 월드에 대한 읽기, 쓰기, 실행 권한을 제거하는 중입니다. 그룹 이름 변경 중 /u01/app/oraInventory 대상 oinstall. 스크립트 실행이 완료되었습니다.
/u01/app/19c/grid/root.sh
[root@rac1 ~]# /u01/app/19c/grid/root.sh Check /u01/app/19c/grid/install/root_rac1_2020-01-12_18-48-29-247263312.log for the output of root script
[root@rac2 ~]# /u01/app/19c/grid/root.sh Check /u01/app/19c/grid/install/root_rac2_2020-01-12_19-03-32-022178046.log for the output of root script
E) Grid 환경 구성
$GI_HOME/gridSetup.sh -executeConfigTools -responseFile /home/oracle/grid_install.rsp -silent
[+ASM1:/home/oracle]> $GI_HOME/gridSetup.sh -executeConfigTools -responseFile /home/oracle/grid_install.rsp -silent Oracle Grid Infrastructure 설정 마법사 실행 중... 다음 위치에서 이 세션의 로그를 찾을 수 있습니다. /u01/app/oraInventory/logs/GridSetupActions2020-01-12_07-15-03PM 다음 위치에서 이 설치 세션의 로그를 찾을 수 있습니다. /u01/app/oraInventory/logs/UpdateNodeList2020-01-12_07-15-03PM.log Successfully Configured Software.
F) Grid 설치 결과 확인
crsctl stat res -t
[+ASM1:/home/oracle]> 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 --------------------------------------------------------------------------------
3. ASM 디스크 그룹 생성
A) DATA, FRA 그룹 생성
asmca -silent -createDiskGroup -diskGroupName DATA -diskList /dev/oracleasm/disks/DATA1 -redundancy EXTERNAL asmca -silent -createDiskGroup -diskGroupName FRA -diskList /dev/oracleasm/disks/FRA1 -redundancy EXTERNAL
[+ASM1:/home/oracle]> asmca -silent -createDiskGroup -diskGroupName DATA -diskList /dev/oracleasm/disks/DATA1 -redundancy EXTERNAL [INFO] [DBT-30001] 디스크 그룹이 성공적으로 생성되었습니다. 자세한 내용은 /u01/app/oracle/cfgtoollogs/asmca/asmca-200112오후075759.log을(를) 확인하십시오. [+ASM1:/home/oracle]> asmca -silent -createDiskGroup -diskGroupName FRA -diskList /dev/oracleasm/disks/FRA1 -redundancy EXTERNAL [INFO] [DBT-30001] 디스크 그룹이 성공적으로 생성되었습니다. 자세한 내용은 /u01/app/oracle/cfgtoollogs/asmca/asmca-200112오후075904.log을(를) 확인하십시오.
B) 디스크 그룹 생성 결과 확인
crsctl stat res -t
[+ASM1:/home/oracle]> 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 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 --------------------------------------------------------------------------------
{}
VII. Database 소프트웨어 설치
1. DB 설치 준비
A) DB 설치 파일 압축 해제
mkdir -p $DB_HOME unzip LINUX.X64_193000_db_home.zip -d $DB_HOME
[racdb1:/home/oracle]> mkdir -p $DB_HOME [racdb1:/home/oracle]> unzip /mnt/LINUX.X64_193000_db_home.zip -d $DB_HOME
B) OPatch 업데이트
$GI_HOME/OPatch/opatch version mv $GI_HOME/OPatch $GI_HOME/OPatch.old unzip <zip 파일이 있는 경로>/p6880880_190000_Linux-x86-64.zip -d $GI_HOME chown -R oracle:oinstall $GI_HOME/OPatch $GI_HOME/OPatch/opatch version
C) Response 파일 생성
cat > ~/db_install.rsp oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_HOME=/u01/app/oracle/product/19c/db_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=oper oracle.install.db.OSBACKUPDBA_GROUP=backupdba oracle.install.db.OSDGDBA_GROUP=dgdba oracle.install.db.OSKMDBA_GROUP=kmdba oracle.install.db.OSRACDBA_GROUP=racdba oracle.install.db.rootconfig.executeRootScript=false oracle.install.db.CLUSTER_NODES=rac1,rac2 <ctrl+C>
[racdb1:/home/oracle]> cat > ~/db_install.rsp oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_HOME=/u01/app/oracle/product/19c/db_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=oper oracle.install.db.OSBACKUPDBA_GROUP=backupdba oracle.install.db.OSDGDBA_GROUP=dgdba oracle.install.db.OSKMDBA_GROUP=kmdba oracle.install.db.OSRACDBA_GROUP=racdba oracle.install.db.rootconfig.executeRootScript=false oracle.install.db.CLUSTER_NODES=rac1,rac2 ^C
2. DB 설치
A) DB 설치 전 검증
$DB_HOME/runInstaller -silent -responseFile ~/db_install.rsp -executePrereqs # $DB_HOME/runInstaller -silent -responseFile ~/db_install.rsp -executePrereqs -applyRU <RU 파일 압축 해제 경로>
[racdb1:/home/oracle]> $DB_HOME/runInstaller -silent -responseFile ~/db_install.rsp -executePrereqs Oracle Database 설정 마법사 실행 중... 필요 조건 검사가 성공적으로 실행되었습니다.
B) DB 설치
$DB_HOME/runInstaller -silent -responseFile ~/db_install.rsp -waitForCompletion # $DB_HOME/runInstaller -silent -responseFile ~/db_install.rsp -waitForCompletion -applyRU <RU 파일 압축 해제 경로>
[racdb1:/home/oracle]> $DB_HOME/runInstaller -silent -responseFile ~/db_install.rsp -waitForCompletion Oracle Database 설정 마법사 실행 중... 이 세션에 대한 응답 파일을 다음에서 찾을 수 있습니다. /u01/app/oracle/product/19c/db_1/install/response/db_2020-01-12_08-03-41PM.rsp 다음 위치에서 이 설치 세션의 로그를 찾을 수 있습니다. /u01/app/oraInventory/logs/InstallActions2020-01-12_08-03-41PM/installActions2020-01-12_08-03-41PM.log 루트 사용자로 다음 스크립트를 실행합니다. 1. /u01/app/oracle/product/19c/db_1/root.sh 다음 노드에서 /u01/app/oracle/product/19c/db_1/root.sh을(를) 실행하십시오. [rac1, rac2] Successfully Setup Software.
C) root 스크립트 실행
/u01/app/oracle/product/19c/db_1/root.sh
[root@rac1 ~]# /u01/app/oracle/product/19c/db_1/root.sh Check /u01/app/oracle/product/19c/db_1/install/root_rac1_2020-01-12_20-13-47-866499373.log for the output of root script
[root@rac2 ~]# /u01/app/oracle/product/19c/db_1/root.sh Check /u01/app/oracle/product/19c/db_1/install/root_rac2_2020-01-12_20-14-03-990106027.log for the output of root script
{}
VIII. 데이터베이스 생성
{}
1. 준비 작업
A) DB 생성 스크립트 생성
dbca -silent -generateScripts -gdbName <글로벌DB명> -templateName New_Database.dbt -scriptDest <스크립트 저장 경로> -createAsContainerDatabase <CDB 여부> -databaseConfigType <DB 타입> -nodelist <쉼표로 구분한 구성할 노드 목록> -memoryMgmtType <메모리 관리 타입> -totalMemory <DB에 할당할 메모리 크기(MB)> -characterSet <문자셋> -nationalCharacterSet <National 문자셋> -storageType <스토리지 타입> -useOMF true <OMF 사용여부> -redoLogFileSize <Redo Log 크기(MB)> -databaseType <DB 용도> -datafileDestination <db_create_file_dest> -recoveryAreaDestination <db_recovery_file_dest> -recoveryAreaSize <FRA 영역 크기(MB)> -emConfiguration <EM 설정> -runCVUChecks <정기적인 클러스터 검증 수행 여부>
[racdb1:/home/oracle]> dbca -silent -generateScripts -gdbName racdb -templateName New_Database.dbt -scriptDest ~/dbca_scripts -createAsContainerDatabase false -databaseConfigType RAC -nodelist rac1,rac2 -memoryMgmtType AUTO_SGA -totalMemory 4000 -characterSet AL32UTF8 -nationalCharacterSet AL16UTF16 -storageType ASM -useOMF true -redoLogFileSize 200 -databaseType MULTIPURPOSE -datafileDestination +DATA -recoveryAreaDestination +FRA -recoveryAreaSize 20000 -emConfiguration none -runCVUChecks false DB 작업 준비 4% 완료 Oracle 인스턴스 생성 및 시작 중 5% 완료 6% 완료 8% 완료 데이터베이스 파일 생성 중 9% 완료 13% 완료 데이터 딕셔너리 뷰 생성 중 14% 완료 16% 완료 19% 완료 20% 완료 21% 완료 25% 완료 Oracle JVM 31% 완료 38% 완료 44% 완료 46% 완료 Oracle Text 48% 완료 50% 완료 Oracle Multimedia 63% 완료 Oracle OLAP 67% 완료 Oracle Spatial 68% 완료 75% 완료 클러스터 데이터베이스 뷰 생성 중 76% 완료 83% 완료 데이터베이스 생성 완료 중 85% 완료 86% 완료 88% 완료 사후 구성 작업 실행 중 100% 완료 스크립트 "/home/oracle/dbca_scripts" 생성을 성공했습니다. 자세한 내용은 로그 파일 "/u01/app/oracle/cfgtoollogs/dbca/racdb/racdb.log"을(를) 참조하십시오.
B) 스크립트 수정
nls_language="AMERICAN" # 변경 audit_trail=none # 변경 db_create_online_log_dest_1="+DATA" # 추가 db_create_online_log_dest_2="+FRA" #추가
############################################################################## # Copyright (c) 1991, 2013 by Oracle Corporation ############################################################################## ########################################### # NLS ########################################### nls_language="AMERICAN" nls_territory="KOREA" ########################################### # SGA Memory ########################################### sga_target=3000m ########################################### # Shared Server ########################################### dispatchers="(PROTOCOL=TCP) (SERVICE=racdbXDB)" ########################################### # Miscellaneous ########################################### compatible=19.0.0 diagnostic_dest=/u01/app/oracle ########################################### # Network Registration ########################################### local_listener=-oraagent-dummy- ########################################### # Database Identification ########################################### db_name="racdb" ########################################### # Security and Auditing ########################################### audit_file_dest="/u01/app/oracle/admin/racdb/adump" audit_trail=none remote_login_passwordfile=exclusive ########################################### # System Managed Undo and Rollback Segments ########################################### undo_tablespace=UNDOTBS1 ########################################### # Sort, Hash Joins, Bitmap Indexes ########################################### pga_aggregate_target=1000m ########################################### # Cache and I/O ########################################### db_block_size=8192 ########################################### # Cursors and Library Cache ########################################### open_cursors=300 ########################################### # Cluster Database ########################################### #cluster_database=true ########################################### # File Configuration ########################################### db_create_file_dest="+DATA" db_recovery_file_dest="+FRA" db_recovery_file_dest_size=20000m db_create_online_log_dest_1="+DATA" db_create_online_log_dest_2="+FRA" ########################################### # Processes and Sessions ########################################### processes=300 family:dw_helper.instance_mode=read-only racdb2.instance_number=2 racdb1.instance_number=1 racdb1.thread=1 racdb2.thread=2 racdb2.undo_tablespace=UNDOTBS2 racdb1.undo_tablespace=UNDOTBS1
#@/home/oracle/dbca_scripts/JServer.sql #@/home/oracle/dbca_scripts/context.sql #@/home/oracle/dbca_scripts/ordinst.sql #@/home/oracle/dbca_scripts/interMedia.sql #@/home/oracle/dbca_scripts/cwmlite.sql #@/home/oracle/dbca_scripts/spatial.sql
set verify off ACCEPT sysPassword CHAR PROMPT 'Enter new password for SYS: ' HIDE ACCEPT systemPassword CHAR PROMPT 'Enter new password for SYSTEM: ' HIDE host /u01/app/oracle/product/19c/db_1/bin/srvctl add database -d racdb -pwfile +DATA/RACDB/orapwracdb -o /u01/app/oracle/product/19c/db_1 -n racdb -a "DATA,FRA" host /u01/app/oracle/product/19c/db_1/bin/srvctl add instance -d racdb -i racdb1 -n rac1 host /u01/app/oracle/product/19c/db_1/bin/srvctl add instance -d racdb -i racdb2 -n rac2 host /u01/app/oracle/product/19c/db_1/bin/srvctl disable database -d racdb host /u01/app/oracle/product/19c/db_1/bin/orapwd file=+DATA/RACDB/orapwracdb force=y format=12 dbuniquename=racdb host /u01/app/19c/grid/bin/setasmgidwrap o=/u01/app/oracle/product/19c/db_1/bin/oracle @/home/oracle/dbca_scripts/CreateDB.sql @/home/oracle/dbca_scripts/CreateDBFiles.sql @/home/oracle/dbca_scripts/CreateDBCatalog.sql @/home/oracle/dbca_scripts/JServer.sql #@/home/oracle/dbca_scripts/context.sql #@/home/oracle/dbca_scripts/ordinst.sql #@/home/oracle/dbca_scripts/interMedia.sql #@/home/oracle/dbca_scripts/cwmlite.sql #@/home/oracle/dbca_scripts/spatial.sql @/home/oracle/dbca_scripts/CreateClustDBViews.sql @/home/oracle/dbca_scripts/lockAccount.sql @/home/oracle/dbca_scripts/postDBCreation.sql
2. DB 생성
A) 스크립트 실행
./<인스턴스 명>.sh
2번 노드 먼저 수행 : dump 파일 경로와 파라미터 파일 생성
[racdb2:/home/oracle]> cd dbca_scripts/ [racdb2:/home/oracle/dbca_scripts]> ./racdb2.sh
1번 노드 마지막 수행 : dump 파일 경로와 파라미터 파일 생성 후 database 생성
[racdb1:/home/oracle]> cd dbca_scripts/ [racdb1:/home/oracle/dbca_scripts]> ./racdb1.sh Is the script run on all the remote nodes? [y/n] (n) y SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 14 14:44:15 2020 Version 19.5.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected. Diskgroup altered. Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.5.0.0.0 SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 14 14:44:18 2020 Version 19.5.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Enter new password for SYS: Enter new password for SYSTEM: Enter password for SYS: Connected to an idle instance. SQL> spool /home/oracle/dbca_scripts/CreateDB.log append SQL> startup nomount pfile="/home/oracle/dbca_scripts/init.ora"; ORACLE instance started. Total System Global Area 3154113400 bytes Fixed Size 8901496 bytes Variable Size 637534208 bytes Database Buffers 2499805184 bytes Redo Buffers 7872512 bytes SQL> CREATE DATABASE "racdb" 2 MAXINSTANCES 32 3 MAXLOGHISTORY 1 4 MAXLOGFILES 192 5 MAXLOGMEMBERS 3 6 MAXDATAFILES 1024 7 DATAFILE SIZE 700M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED 8 EXTENT MANAGEMENT LOCAL 9 SYSAUX DATAFILE SIZE 550M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED 10 SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE SIZE 20M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED 11 SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED 12 CHARACTER SET AL32UTF8 13 NATIONAL CHARACTER SET AL16UTF16 14 LOGFILE GROUP 1 SIZE 200M, 15 GROUP 2 SIZE 200M 16 USER SYS IDENTIFIED BY "&&sysPassword" USER SYSTEM IDENTIFIED BY "&&systemPassword"; Database created. << 중략 >> SQL> select comp_id, status from dba_registry; COMP_ID STATUS ------------------------------ -------------------------------------------- CATALOG VALID CATPROC VALID RAC VALID JAVAVM VALID XML VALID CATJAVA VALID XDB VALID OWM VALID 8 rows selected. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> host /u01/app/oracle/product/19c/db_1/bin/srvctl enable database -d racdb; SQL> host /u01/app/oracle/product/19c/db_1/bin/srvctl start database -d racdb; SQL> connect "SYS"/"&&sysPassword" as SYSDBA Connected. SQL> spool off SQL> exit; Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.5.0.0.0
B) 결과 확인
crsctl stat res -t
[racdb1:/home/oracle]> crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE ONLINE rac1 STABLE ONLINE ONLINE rac2 STABLE ora.chad ONLINE ONLINE rac1 STABLE ONLINE ONLINE rac2 STABLE ora.net1.network ONLINE ONLINE rac1 STABLE ONLINE ONLINE rac2 STABLE ora.ons ONLINE ONLINE rac1 STABLE ONLINE ONLINE rac2 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup) 1 ONLINE ONLINE rac1 STABLE 2 ONLINE ONLINE rac2 STABLE 3 ONLINE OFFLINE STABLE ora.CRS.dg(ora.asmgroup) 1 ONLINE ONLINE rac1 STABLE 2 ONLINE ONLINE rac2 STABLE 3 OFFLINE OFFLINE STABLE ora.DATA.dg(ora.asmgroup) 1 ONLINE ONLINE rac1 STABLE 2 ONLINE ONLINE rac2 STABLE 3 OFFLINE OFFLINE STABLE ora.FRA.dg(ora.asmgroup) 1 ONLINE ONLINE rac1 STABLE 2 ONLINE ONLINE rac2 STABLE 3 OFFLINE OFFLINE STABLE ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE rac2 STABLE ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE rac1 STABLE ora.LISTENER_SCAN3.lsnr 1 ONLINE ONLINE rac1 STABLE ora.asm(ora.asmgroup) 1 ONLINE ONLINE rac1 Started,STABLE 2 ONLINE ONLINE rac2 Started,STABLE 3 OFFLINE OFFLINE STABLE ora.asmnet1.asmnetwork(ora.asmgroup) 1 ONLINE ONLINE rac1 STABLE 2 ONLINE ONLINE rac2 STABLE 3 OFFLINE OFFLINE STABLE ora.cvu 1 ONLINE ONLINE rac1 STABLE ora.qosmserver 1 ONLINE ONLINE rac1 STABLE ora.rac1.vip 1 ONLINE ONLINE rac1 STABLE ora.rac2.vip 1 ONLINE ONLINE rac2 STABLE ora.racdb.db 1 ONLINE ONLINE rac1 Open,HOME=/u01/app/o racle/product/19c/db _1,STABLE 2 ONLINE ONLINE rac2 Open,HOME=/u01/app/o racle/product/19c/db _1,STABLE ora.scan1.vip 1 ONLINE ONLINE rac2 STABLE ora.scan2.vip 1 ONLINE ONLINE rac1 STABLE ora.scan3.vip 1 ONLINE ONLINE rac1 STABLE --------------------------------------------------------------------------------
{}
1 개의 댓글
윤병훈
https://hiteshgondalia.wordpress.com/2016/02/24/kfod-utility/