| 페이지 1 페이지 2 페이지 3
Linux, iSCSI 환경에서 Oracle RAC 10g Release 2 클러스터 설치하기 (계속)
개발, 테스트 용도로만 사용할 수 있습니다. 운영 목적의 시스템에는 적용될 수 없습니다!
20.
Oracle 10g Clusterware 소프트웨어의 설치
클러스터의 Oracle RAC 노드 중 하나(linux1)에서만 아래 작업을 수행합니다! Oracle Universal Installer는 클러스터의 다른 노드에 Oracle Clusterware 소프트웨어를 자동으로 설치합니다
이제 시스템 환경에 “클러스터(Oracle Clusterware 소프트웨어)”를 설치할 준비가 완료되었습니다. 앞 섹션에서 linux1 노드에서 오라클 소프트웨어를 다운로드한 뒤 /u01/app/oracle/orainstall 디렉토리에 저장한 후 압축을 풀었습니다. 이제 이 노드에서 설치 작업을 진행하면 됩니다.
Oracle Clusterware의 설치 과정에서, RAC 클러스터에 참여하는 노드에 대한 질문이 제공됩니다. 실제 설치작업이 시작되면, 필요한 소프트웨어를 원격 액세스를 통해 섹션 14 (원격 액세스를 위한 RAC 노드의 설정)에서 설정한 모든 RAC 노드에 자동으로 복사할 것입니다.
그렇다면 Oracle Clusterware가 담당하는 역할은 무엇일까요? Oracle Clusterware는 RAC의 클러스터 및 데이터베이스 구성에 관련한 메타데이터와, 일부 시스템 관리 기능을 포함하고 있습니다. DBA는 Oracle CRS를 이용하여 오라클 인스턴스를 클러스터에 등록합니다. CRS는 (ping 시그널을 통해) 클러스터의 모든 노드에 “하트비트(heartbeat)” 메시지를 전송합니다. 노드가 하트비트 메시지의 수신에 실패하는 경우, (공유 디스크에 저장된) CRS 구성을 점검하여 실제 노드에 장애가 발생했는지, 아니면 네트워크에 장애가 발생했는지 판별합니다.
Oracle Clusterware를 설치하고 난 뒤, Oracle Universal Installer (OUI)를 사용하여 Oracle Database 10g 소프트웨어를 설치하게 됩니다. 이때 Oracle Universal Installer는 CRS가 설치된 노드를 자동으로 인식합니다. CRS 설치작업과 마찬가지로, Oracle 10g 데이터베이스 소프트웨어 역시 클러스터 노드 중 하나에만 설치됩니다. OUI는 RAC 클러스터의 다른 노드에 소프트웨어 패키지를 자동으로 복사합니다.
Oracle Clusterware 공유 파일
Oracle Clusterware가 사용하는 두 가지 공유 파일은 앞에서 생성한 OCFS2에 저장됩니다. 공유되는 두 가지 Oracle Clusterware 파일이 다음과 같습니다:
- Oracle Cluster Registry (OCR)
- 파일 1 : /u02/oradata/orcl/OCRFile
- 파일 2 : /u02/oradata/orcl/OCRFile_mirror
- 사이즈 : (2 * 100MB) = 200M
- CRS Voting Disk
- 파일 1 : /u02/oradata/orcl/CSSFile
- 파일 2 : /u02/oradata/orcl/CSSFile_mirror1
- 파일 3 : /u02/oradata/orcl/CSSFile_mirror2
- 사이즈 : (3 * 20MB) = 60MB
Note:두 가지 Clusterware 파일(OCR, Clusterware Voting Disk)에 대해 ASM을 적용하는 것은 현재로서는 불가능합니다. 이 파일은 오라클 인스턴스가 시작되기 전에 액세스 가능해야 하기 때문입니다. ASM을 사용하려면, 먼저 ASM 인스턴스가 실행되어야만 합니다.
하지만 두 파일을 OCFS2, 공유 로우 디바이스(shared raw device), 또는 써드-파티 클러스터 파일시스템에 저장하는 것은 가능합니다.
터미널 쉘 환경의 검증
OUI를 시작하기 전에, 먼저 root 계정으로 콘솔에서 xhost 커맨드를 실행하여 X Server 연결을 허용합니다. 그런 다음 oracle 사용자 계정으로 로그인합니다. 원격 클라이언트를 사용하여 설치를 진행하는 노드에 접근하는 경우(예: X Server가 설치된 워크스테이션에서 SSH/Telnet을 이용하여 linux1에 접근하는 경우) 로컬 워크스테이션을 참조하도록 DISPLAY 변수를 설정해야 합니다. 마지막으로, 클러스터의 모든 노드에 대해 원격 액세스 / user equivalence를 확인합니다.
X Server 액세스 환경의 검증
# hostname linux1 # xhost + access control disabled, clients can connect from any host
oracle 사용자 계정으로 로그인 한 후 DISPLAY 설정 (필요한 경우)
# su - oracle $ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE $ # NODE PERFORMING THE INSTALL $ DISPLAY=<your local workstation>:0.0 $ export DISPLAY
원격 액세스 / User Equivalence의 검증
OUI가 실행되는 서버에서 별도의 패스워드를 입력하지 않고도 다른 모든 서버에 대해 SSH(Secure Shell) 커맨드(ssh, scp) 또는 RSH(Remote Shell) 커맨드(rsh, rcp)를 실행할 수 있는지 확인합니다.
SSH(secure shell)을 사용하는 경우에는 OUI를 실행하기 전에 터미널 세션에 "user equivalence"를 활성화해야 합니다. 현재 터미널 쉘 세션에 대해 'user equivalence'를 활성화하려면 아래와 같이 실행하고 생성된 각 키를 위한 pass phrase가 입력될 수 있도록 합니다.
$ exec /usr/bin/ssh-agent $SHELL $ /usr/bin/ssh-add Enter passphrase for /u01/app/oracle/.ssh/id_rsa: xxxxx Identity added: /u01/app/oracle/.ssh/id_rsa (/u01/app/oracle/.ssh/id_rsa) Identity added: /u01/app/oracle/.ssh/id_dsa (/u01/app/oracle/.ssh/id_dsa) $ ssh linux1 "date;hostname" Wed Sep 13 18:27:17 EDT 2006 linux1 $ ssh linux2 "date;hostname" Wed Sep 13 18:28:00 EDT 2006 linux2
RSH(remote shell)을 사용하는 경우에는 user equivalence가 /etc/hosts.equiv 파일에 정의되며, 새로운 터미널 쉘 세션에 대해 기본적으로 활성화됩니다.
$ rsh linux1 "date;hostname" Tue Sep 12 12:37:17 EDT 2006 linux1 $ rsh linux2 "date;hostname" Tue Sep 12 12:38:00 EDT 2006 linux2
Cluster Ready Services의 설치
아래 명령을 실행하여 Oracle Clusterware를 설치합니다:
$ cd ~oracle $ /u01/app/oracle/orainstall/clusterware/runInstaller -ignoreSysPrereqs
| 스크린 이름 |
작업 내용 |
| Welcome Screen |
Next를 클릭합니다. |
| Specify Inventory directory and
credentials |
디폴트 값을 그대로 사용합니다:
Inventory directory:
/u01/app/oracle/oraInventory
Operating System group name:
dba |
| Specify Home Details |
ORACLE_HOME($ORA_CRS_HOME)의 Name과 Path를 다음과 같이 설정합니다:
Name: OraCrs10g_home
Path: /u01/app/oracle/product/crs |
| Product-Specific Prerequisite Checks |
인스톨러가 Oracle Cluster 소프트웨어의 설치 및 구성에 필요한 최소 요구사항을 검증하기 위해 몇 가지 점검 작업을 수행합니다. 점검 과정이 실패하는 경우, 체크박스를 클릭하는 방법으로 수작업 검증을 수행해 주어야 합니다. 필자의 경우 아무런 문제 없이 모든 점검 과정을 완료할 수 있었습니다.
Next를 클릭하여 다음 단계로 진행합니다. |
| Specify Cluster Configuration |
Cluster Name:
crs
| Public Node Name |
Private Node Name |
Virtual Node Name |
| linux1 |
linux1-priv |
linux1-vip |
| linux2 |
linux2-priv |
linux2-vip |
|
| Specify Network Interface Usage |
| Interface Name |
Subnet |
Interface Type |
| eth0 |
192.168.1.0 |
Public |
| eth1 |
192.168.2.0 |
Private |
|
| Specify OCR Location |
Oracle Database 10g Release 2 (10.2)부터 Oracle Clusterware는 미러 OCR 파일의 생성 기능을 추가하고 클러스터 안정성을 개선하였습니다. 본 문서에서는 디폴트 설정인 “Normal Redundancy”를 사용하여 COR 파일을 미러링하도록 선택합니다:
Specify OCR Location: /u02/oradata/orcl/OCRFile
Specify OCR Mirror Location: /u02/oradata/orcl/OCRFile_mirror |
| Specify Voting Disk Location |
Oracle Database 10g RAC Release 2 (10.2)부터, 다수의 Voting Disk를 지원하는 기능이 RAC, CSS에 추가되었습니다. Release 1(10.1)에서는 단 하나의 Voting Disk만을 설정할 수 있었습니다. Voting Disk를 추가로 설정하는 기능을 이용하면, 여러 개의 Voting Disk를 서로 독립된 물리적 디스크에 분산시킬 수 있습니다. 이 기능은 iSCSI 네트워크 프로토콜과 기타 NAS(Network Attached Storage) 스토리지 솔루션을 지원합니다. 여러 개의 Voting Disk를 동시에 사용하는 경우, 최소 3개의 Voting Disk가 필요함을 참고하십시오. 본 문서에서는 디폴트 설정인 “Normal Redundancy”를 사용하여 Voting Disk의 미러링을 수행하도록 선택합니다:
Voting Disk Location: /u02/oradata/orcl/CSSFile
Additional Voting Disk 1 Location: /u02/oradata/orcl/CSSFile_mirror1
Additional Voting Disk 2 Location: /u02/oradata/orcl/CSSFile_mirror2 |
| Summary |
Install을 눌러 설치 작업을 시작합니다! |
| Execute Configuration Scripts |
설치가 완료되면 orainstRoot.sh와 root.sh 스크립트를 실행하라는 프롬프트가 뜹니다. root 계정을 사용하여 RAC 클러스터의 각 노드에서 새로운 콘솔 윈도우를 엽니다.
RAC 클러스터의 모든 노드에서 /u01/app/oracle/oraInventory 디렉토리로 이동한 후 orainstRoot.sh을 실행합니다
RAC 클러스터의 각 노드에서 열린 콘솔 윈도우에 “root” 사용자 계정으로 로그인한 상태를 그대로 유지합니다.
/u01/app/oracle/product/crs 디렉토리로 이동하여 클러스터 각 노드의 root.sh 파일을 찾습니다. root.sh 파일을 실행합니다. 이 작업을 RAC 클러스터의 모든 노드에서 순차적으로 실행합니다.
root.sh 스크립트를 실행할 때 여러 가지 경고 메시지가 뜨겠지만, 무시해도 좋습니다.
root.sh 스크립트의 실행에는 다소 시간이 걸립니다 마지막 노드에서 root.sh를 실행하고 나면, 아래와 같은 critical error를 확인하게 됩니다:
...
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
linux1
linux2
CSS is active on all nodes.
Waiting for the Oracle CRSD and EVMD to start
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
The given
interface(s), "eth0" is not public. Public interfaces should be used to
configure virtual IPs.
이 문제는 Oracle 10.2.0.1에 한정된 문제(Metalink 문서 4437727)이며, 다음 단계로 진행하기 전에 해결하고 넘어가야 합니다. 가장 간단한 우회책은 에러가 발생한 마지막 노드에서 root 계정으로 vipca(GUI)를 재실행하는 것입니다. . vipca는 GUI이며, 따라서 DISPLAY 변수를 사용자의 X 서버 환경에 맞게 설정해 주어야 함을 참고하십시오:
# $ORA_CRS_HOME/bin/vipca
"VIP Configuration Assistant"에서 필자가 입력한 내용이 아래와 같습니다:
Welcome:Next를 클릭
Network interfaces:두 인터페이스(eth0, eth1)를 모두 선택
Virtual IPs for cluster notes:
Node
Name: linux1
IP
Alias Name: linux1-vip
IP
Address: 192.168.1.200
Subnet
Mask: 255.255.255.0
Node
Name: linux2
IP
Alias Name: linux2-vip
IP
Address: 192.168.1.201
Subnet
Mask: 255.255.255.0
Summary:Finish를 클릭
Configuration Assistant Progress Dialog:설정이 완료되면 OK를 클릭.
Configuration Results:Exit를 클릭
OUI로 돌아가서 "Execute Configuration scripts" 대화상자를 확인합니다. |
| End of installation |
설치가 완료되면 OUI를 종료합니다. |
Oracle Clusterware 설치 결과의 검증
Oracle Clusterware의 설치가 완료되면, 몇 가지 테스트를 통해 설치가 성공적으로 완료되었는지 점검합니다. RAC 클러스터의 모든 노드에 대해 아래 커맨드를 실행합니다.
클러스터 노드의 점검
$ /u01/app/oracle/product/crs/bin/olsnodes -n linux1 1 linux2 2
Oracle Clusterware Auto-Start 스크립트의 확인
$ ls -l /etc/init.d/init.* -r-xr-xr-x 1 root root 1951 Oct 4 14:21 /etc/init.d/init.crs* -r-xr-xr-x 1 root root 4714 Oct 4 14:21 /etc/init.d/init.crsd* -r-xr-xr-x 1 root root 35394 Oct 4 14:21 /etc/init.d/init.cssd* -r-xr-xr-x 1 root root 3190 Oct 4 14:21 /etc/init.d/init.evmd*
21.
Oracle Database 10g 소프트웨어의 설치
클러스터의 Oracle RAC 노드 중 하나(linux1)에서만 아래 작업을 수행합니다! Oracle Universal Installer는 클러스터의 다른 노드에 Oracle Database 소프트웨어를 자동으로 설치합니다
Oracle Clusterware 소프트웨어의 설치를 성공적으로 완료했다면, 다음은 Oracle Database 10g (10.2.0.1.0) RAC를 설치할 차례입니다.
본 구성 예제에서는 “Create Database” 옵션을 사용하지 않고, 그 대신 설치가 완료된 후 DBCA(Database Creation Assistant)를 이용하여 데이터베이스를 생성하는 방법을 사용합니다.
Oracle Clusterware 설치작업과 마찬가지로, Oracle 10g 데이터베이스 소프트웨어 설치 작업 역시 노드 중 하나에서만 실행됩니다. OUI는 RAC 클러스터의 다른 노드에 소프트웨어 패키지를 자동으로 복사합니다.
터미널 쉘 환경의 검증
앞 섹션(Oracle10g Clusterware 소프트웨어의 설치)에서 설명한 것처럼, Oracle Universal Installer를 실행하기 전에 모든 노드에 대해 원격 액세스 및 user equivalence를 설정해 주어야 합니다. 앞 섹션에서 사용한 것과 동일한 터미널 쉘 세션을 사용할 수 있으며, 같은 세션을 사용한 경우 아래의 작업(원격 액세스 설정 및 DISPLAY 변수 설정)을 수행할 필요가 없음을 참고하시기 바랍니다:
oracle 사용자 계정으로 로그인 한 후 DISPLAY 설정 (필요한 경우)
# su - oracle $ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE $ # NODE PERFORMING THE INSTALL $ DISPLAY=<your local workstation>:0.0 $ export DISPLAY
원격 액세스 / User Equivalence의 검증
OUI가 실행되는 서버에서 별도의 패스워드를 입력하지 않고도 다른 모든 서버에 대해 SSH(Secure Shell) 커맨드(ssh, scp) 또는 RSH(Remote Shell) 커맨드(rsh, rcp)를 실행할 수 있는지 확인합니다.
SSH(secure shell)을 사용하는 경우에는 OUI를 실행하기 전에 터미널 세션에 "user equivalence"를 활성화해야 합니다. 현재 터미널 쉘 세션에 대해 'user equivalence'를 활성화하려면 아래와 같이 실행하고 생성된 각 키를 위한 pass phrase가 입력될 수 있도록 합니다.
$ exec /usr/bin/ssh-agent $SHELL $ /usr/bin/ssh-add Enter passphrase for /u01/app/oracle/.ssh/id_rsa: xxxxx Identity added: /u01/app/oracle/.ssh/id_rsa (/u01/app/oracle/.ssh/id_rsa) Identity added: /u01/app/oracle/.ssh/id_dsa (/u01/app/oracle/.ssh/id_dsa) $ ssh linux1 "date;hostname" Wed Sep 13 18:27:17 EDT 2006 linux1 $ ssh linux2 "date;hostname" Wed Sep 13 18:28:00 EDT 2006 linux2
RSH(remote shell)을 사용하는 경우에는 user equivalence가 /etc/hosts.equiv 파일에 정의되며, 새로운 터미널 쉘 세션에 대해 기본적으로 활성화됩니다.
$ rsh linux1 "date;hostname" Tue Sep 12 12:37:17 EDT 2006 linux1 $ rsh linux2 "date;hostname" Tue Sep 12 12:38:00 EDT 2006 linux2
Oracle Cluster Verification Utility의 실행
오라클 데이터베이스 소프트웨어를 설치하기 전에, Cluster Verification Utility(CVU)를 이용하여 사전 점검 작업을 수행해야 합니다.
참고: CVU 설정 방법은 "Cluster Verification Utility 실행을 위한 사전 요구사항 섹션을 참고하시기 바랍니다.
$ cd /u01/app/oracle/orainstall/clusterware/cluvfy
$ ./runcluvfy.sh stage -pre dbinst -n linux1,linux2 -r 10gR2 -verbose
CVU 리포트를 검토합니다. CRS를 위한 사전 점검 작업 결과에서와 동일한 에러가 표시됨을 확인할 수 있습니다(VIP 인터페이스 설정 관련 에러, RHEL4 Update에 존재하지 않는 RPM 패키지 관련 에러 등). 이 두 가지 에러는 무시해도 좋습니다.
Oracle Database 10g Release 2 소프트웨어 설치
Oracle Database 10g Release 2 소프트웨어를 설치합니다:
$ cd ~oracle $ /u01/app/oracle/orainstall/database/runInstaller -ignoreSysPrereqs
| 스크린 이름 |
작업내용 |
| Welcome Screen |
Next를 클릭합니다. |
| Select Installation Type |
필자의 경우 Enterprise Edition 옵션을 선택하였습니다. |
| Specify Home Details |
ORACLE_HOME의 Name과 Path를 아래와 같이 설정합니다:
Name: OraDb10g_home1
Path: /u01/app/oracle/product/10.2.0/db_1 |
| Specify Hardware Cluster Installation
Mode |
Cluster Installation 옵션을 선택하고 모든 노드를 선택합니다. Select All을 클릭하여 모든 서버(linux1과 linux2)를 선택합니다.
만일 설치가 중단되고 RAC 노드 중 하나의 상태가 "Node not reachable"로 표시되는 경우, 다음과 같이 점검 작업을 수행합니다:
- 문제가 되는 노드에 Clusterware가 실행 중인지 확인합니다.
- 설치 작업을 수행하는 노드에서 문제가 되는 노드에 연결할 수 있는지 테스트합니다.
|
| Product-Specific
Prerequisite Checks |
인스톨러는 오라클 데이터베이스 소프트웨어의 설치 및 구성에 필요한 최소요구조건을 노드가 만족하는지 확인하는 일련의 점검 작업을 수행합니다. 점검 과정이 실패하는 경우, 체크박스를 클릭하는 방법으로 수작업 검증을 수행해 주어야 합니다.
Next를 클릭하여 다음 단계로 진행합니다. |
| Select Database Configuration |
"Install database software only" 옵션을 선택합니다.
클러스터 데이터베이스의 생성 작업은 DBCA를 사용하여 별도로 수행하기로 했음을 기억하시기 바랍니다. |
| Summary |
Install을 눌러 설치 작업을 시작합니다! |
| Root Script Window - Run root.sh |
설치가 완료되면, root.sh 스크립트를 실행하라는 메시지가 표시됩니다. RAC 클러스터의 모든 노드에서 root.sh을 실행하되 (데이터베이스 설치를 시작한 서버로부터 시작하여) 한 번에 하나씩 실행하도록 합니다.
먼저, Oracle 10g 데이터베이스 소프트웨어를 설치한 노드(linux1)에서 새로운 콘솔 창을 엽니다.
/u01/app/oracle/product/10.2.0/db_1 디렉토리로 이동하여 root.sh를 실행합니다.
root.sh 스크립트의 실행이 완료되면, OUI로 돌아가 "Execute Configuration scripts" 대화상자를 확인합니다 |
| End of installation |
설치가 완료되면 OUI를 종료합니다. |
22. Oracle 10g Companion CD 소프트웨어의 설치
클러스터의 Oracle RAC 노드 중 하나(linux1)에서만 아래 작업을 수행합니다! Oracle Universal Installer는 클러스터의 다른 노드에 Oracle10g Companion CD 소프트웨어를 자동으로 설치합니다.
Oracle Database 소프트웨어의 설치를 성공적으로 완료했다면, 다음은 Oracle Database 10g Release 2 Companion CD 소프트웨어(10.2.0.1.0)를 설치할 차례입니다.
이 작업은 필수적으로 요구되는 것은 아님을 참고하십시오. 본 구성 예제에서는 Java Virtual Machine(Java VM)과 Oracle interMedia를 사용하고 있기 때문에 Oracle Database 10g Companion CD를 설치하는 것입니다. 이때 설치 옵션으로는 “Oracle Database 10g Products”를 선택해야 합니다.
이 설치 옵션에는 Java 성능의 개선을 위한 NCOMP(Natively Compiled Java Libraries) 파일이 포함되어 있습니다. Java VM을 사용하는 데이터베이스에서 NCOMP 파일을 설치하지 않은 상태에서 패치를 적용하면 “ORA-29558:JAccelerator (NCOMP) not installed” 에러가 뜨게 됩니다. After successfully installing the Oracle Database
software, the next step is to install the Oracle 10g
Release 2 Companion CD software (10.2.0.1.0).
터미널 쉘 환경의 검증
앞 섹션(Oracle10g Database 소프트웨어의 설치)에서 설명한 것처럼, Oracle Universal Installer를 실행하기 전에 모든 노드에 대해 원격 액세스 및 user equivalence를 설정해 주어야 합니다. 앞 섹션에서 사용한 것과 동일한 터미널 쉘 세션을 사용할 수 있으며, 같은 세션을 사용한 경우 아래의 작업(원격 액세스 설정 및 DISPLAY 변수 설정)을 수행할 필요가 없음을 참고하시기 바랍니다:
oracle 사용자 계정으로 로그인 한 후 DISPLAY 설정 (필요한 경우)
# su - oracle $ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE $ # NODE PERFORMING THE INSTALL $ DISPLAY=<your local workstation>:0.0 $ export DISPLAY
원격 액세스 / User Equivalence의 검증
OUI가 실행되는 서버에서 별도의 패스워드를 입력하지 않고도 다른 모든 서버에 대해 SSH(Secure Shell) 커맨드(ssh, scp) 또는 RSH(Remote Shell) 커맨드(rsh, rcp)를 실행할 수 있는지 확인합니다.
SSH(secure shell)을 사용하는 경우에는 OUI를 실행하기 전에 터미널 세션에 "user equivalence"를 활성화해야 합니다. 현재 터미널 쉘 세션에 대해 'user equivalence'를 활성화하려면 아래와 같이 실행하고 생성된 각 키를 위한 pass phrase가 입력될 수 있도록 합니다.
$ exec /usr/bin/ssh-agent $SHELL $ /usr/bin/ssh-add Enter passphrase for /u01/app/oracle/.ssh/id_rsa: xxxxx Identity added: /u01/app/oracle/.ssh/id_rsa (/u01/app/oracle/.ssh/id_rsa) Identity added: /u01/app/oracle/.ssh/id_dsa (/u01/app/oracle/.ssh/id_dsa) $ ssh linux1 "date;hostname" Wed Sep 13 18:27:17 EDT 2006 linux1 $ ssh linux2 "date;hostname" Wed Sep 13 18:28:00 EDT 2006 linux2
RSH(remote shell)을 사용하는 경우에는 user equivalence가 /etc/hosts.equiv 파일에 정의되며, 새로운 터미널 쉘 세션에 대해 기본적으로 활성화됩니다.
$ rsh linux1 "date;hostname" Tue Sep 12 12:37:17 EDT 2006 linux1 $ rsh linux2 "date;hostname" Tue Sep 12 12:38:00 EDT 2006 linux2
Oracle10g Companion CD 소프트웨어 설치
아래와 같이 Oracle10g Companion CD 소프트웨어를 설치합니다:
$ cd ~oracle $ /u01/app/oracle/orainstall/companion/runInstaller -ignoreSysPrereqs
| 스크린 이름 |
작업 내용 |
| Welcome Screen |
Next를 클릭합니다. |
| Select a Product to Install |
"Oracle Database 10g Products 10.2.0.1.0" 옵션을 선택합니다. |
| Specify Home Details |
Oracle 10g Database 소프트웨어가 설치된 ORACLE_HOME의 이름과 위치를 입력합니다:
Name: OraDb10g_home1
Path: /u01/app/oracle/product/10.2.0/db_1 |
| Specify Hardware Cluster Installation
Mode |
클러스터의 모든 노드에 대해 Cluster 설치 옵션을 선택합니다. 디폴트 옵션을 그대로 사용하고 Next를 눌러 다음 단계로 진행합니다.
만일 설치가 중단되고 RAC 노드 중 하나의 상태가 "Node not reachable"로 표시되는 경우, 다음과 같이 점검 작업을 수행합니다:
- 문제가 되는 노드에 Clusterware가 실행 중인지 확인합니다.
- 설치 작업을 수행하는 노드에서 문제가 되는 노드에 연결할 수 있는지 테스트합니다.
|
| Product-Specific
Prerequisite Checks |
인스톨러는 Companion CD 소프트웨어의 설치 및 구성에 필요한 최소요구조건을 노드가 만족하는지 확인하는 일련의 점검 작업을 수행합니다. 점검 과정이 실패하는 경우, 체크박스를 클릭하는 방법으로 수작업 검증을 수행해 주어야 합니다. 필자의 경우 아무런 문제 없이 모든 점검 과정을 완료할 수 있었습니다.
Next를 클릭하여 다음 단계로 진행합니다. |
| Summary |
Install을 눌러 설치 작업을 시작합니다! |
| End of installation |
설치가 완료되면 OUI를 종료합니다. |
23.
TNS 리스너 프로세스 생성
클러스터의 Oracle RAC 노드 중 하나(linux1)에서만 아래 작업을 수행합니다! Network Configuration Assistant(NETCA)는 클러스터의 모든 노드에 대해 TNS listener의 설정 작업을 자동으로 수행합니다.
DBCA를 이용하여 클러스터 데이터베이스를 생성하려면, Oracle TNS Listener 프로세스가 RAC 클러스터의 모든 노드에서 실행 중이어야 합니다.
TNS Listener를 생성하는 작업은 클러스터 노드 중 하나에서만 수행됩니다. 모든 변경 내역은 클러스터의 다른 노드에 자동으로 복제됩니다. 본 구성 예제에서는 linux1 서버에서 Network Configuration Assistant (NETCA)를 실행하고 새로운 TNS listener 프로세스를 생성하고 로컬 액세스를 위한 노드를 설정하기로 합니다.
터미널 쉘 환경의 검증
앞 섹션(Oracle10g Companion CD 소프트웨어의 설치)에서 설명한 것처럼, Oracle Universal Installer를 실행하기 전에 모든 노드에 대해 원격 액세스 및 user equivalence를 설정해 주어야 합니다. 앞 섹션에서 사용한 것과 동일한 터미널 쉘 세션을 사용할 수 있으며, 같은 세션을 사용한 경우 아래의 작업(원격 액세스 설정 및 DISPLAY 변수 설정)을 수행할 필요가 없음을 참고하시기 바랍니다:
oracle 사용자 계정으로 로그인 한 후 DISPLAY 설정 (필요한 경우)
# su - oracle $ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE $ # NODE PERFORMING THE INSTALL $ DISPLAY=<your local workstation>:0.0 $ export DISPLAY
원격 액세스 / User Equivalence의 검증
OUI가 실행되는 서버에서 별도의 패스워드를 입력하지 않고도 다른 모든 서버에 대해 SecureSSH(Secure Shell) 커맨드(ssh, scp) 또는 RSH(Remote Shell) 커맨드(rsh, rcp)를 실행할 수 있는지 확인합니다.
SSH(secure shell)을 사용하는 경우에는 OUI를 실행하기 전에 터미널 세션에 "user equivalence"를 활성화해야 합니다. 현재 터미널 쉘 세션에 대해 'user equivalence'를 활성화하려면 아래와 같이 실행하고 생성된 각 키를 위한 pass phrase가 입력될 수 있도록 합니다.
$ exec /usr/bin/ssh-agent $SHELL $ /usr/bin/ssh-add Enter passphrase for /u01/app/oracle/.ssh/id_rsa: xxxxx Identity added: /u01/app/oracle/.ssh/id_rsa (/u01/app/oracle/.ssh/id_rsa) Identity added: /u01/app/oracle/.ssh/id_dsa (/u01/app/oracle/.ssh/id_dsa) $ ssh linux1 "date;hostname" Wed Sep 13 18:27:17 EDT 2006 linux1 $ ssh linux2 "date;hostname" Wed Sep 13 18:28:00 EDT 2006 linux2
RSH(remote shell)을 사용하는 경우에는 user equivalence가 /etc/hosts.equiv 파일에 정의되며, 새로운 터미널 쉘 세션에 대해 기본적으로 활성화됩니다.
$ rsh linux1 "date;hostname" Tue Sep 12 12:37:17 EDT 2006 linux1 $ rsh linux2 "date;hostname" Tue Sep 12 12:38:00 EDT 2006 linux2
Network Configuration Assistant의 실행
아래와 같이 NETCA를 실행합니다:
$ netca &
RAC 환경을 위한 새로운 Oracle 리스너를 생성하는 방법이 아래와 같습니다.
| 스크린 이름 |
작업 내용 |
Select the Type of Oracle
Net Services Configuration |
Cluster Configuration을 선택합니다. |
| Select the nodes to configure |
모든 노드(linux1, linux2)를 선택합니다. |
| Type of Configuration |
Listener configuration을 선택합니다. |
| Listener Configuration - Next 6 Screens |
Oracle Listener의 설정 방법은 일반적인 listener 설정 방법과 동일합니다. 아래 6개 항목에 대해 디폴트 매개변수를 그대로 사용합니다:
What do you want to do: Add
Listener name: LISTENER
Selected protocols: TCP
Port number: 1521
Configure another listener: No
Listener configuration complete!
[ Next ]
모든 과정이 완료되면 다시 Welcome (Type of Configuration) 스크린이 표시됩니다. |
| Type of Configuration |
Naming Methods configuration을 선택합니다. |
| Naming Methods Configuration |
아래와 같이 입력합니다:
Selected Naming Methods: Local
Naming
Naming Methods configuration complete!
[ Next ]
다시 Welcome (Type of Configuration) 스크린이 표시됩니다. |
| Type of Configuration |
Finish를 클릭하고 NETCA를 종료합니다. |
이제 RAC 클러스터의 모든 노드에서 Oracle TNS listener 프로세스가 실행되고 있음을 확인할 수 있습니다.
$ hostname linux1 $ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}' LISTENER_LINUX1===================== $ hostname linux2 $ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}' LISTENER_LINUX2
24. 오라클 클러스터 데이터베이스의 생성
클러스터의 Oracle RAC 노드 중 하나(linux1)에서만 데이터베이스 생성 작업을 수행합니다!
여기에서는 클러스터 데이터베이스 생성을 위해 DBCA를 사용하기로 합니다.
DBCA를 실행하기 전에, $ORACLE_HOME, $PATH 환경변수가 $ORACLE_BASE/product/10.2.0/db_1 환경으로 설정되었는지 확인합니다.
또 지금까지 설치한 모든 서비스(Oracle TNS listener, Clusterware 프로세스 등)가 정상적으로 실행 중인지 확인합니다.
터미널 쉘 환경의 검증
앞 섹션(TNS 리스너 소프트웨어의 설치)에서 설명한 것처럼, DBCA(Database Configuration Assistance)를 실행하기 전에 모든 노드에 대해 원격 액세스 및 user equivalence를 설정해 주어야 합니다. 앞 섹션에서 사용한 것과 동일한 터미널 쉘 세션을 사용할 수 있으며, 같은 세션을 사용한 경우 아래의 작업(원격 액세스 설정 및 DISPLAY 변수 설정)을 수행할 필요가 없음을 참고하시기 바랍니다:
oracle 사용자 계정으로 로그인 한 후 DISPLAY 설정 (필요한 경우)
# su - oracle $ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE $ # NODE PERFORMING THE INSTALL $ DISPLAY=<your local workstation>:0.0 $ export DISPLAY
원격 액세스 / User Equivalence의 검증
OUI가 실행되는 서버에서 별도의 패스워드를 입력하지 않고도 다른 모든 서버에 대해 SSH(Secure Shell) 커맨드(ssh, scp) 또는 RSH(Remote Shell) 커맨드(rsh, rcp)를 실행할 수 있는지 확인합니다.
SSH(secure shell)을 사용하는 경우에는 OUI를 실행하기 전에 터미널 세션에 "user equivalence"를 활성화해야 합니다. 현재 터미널 쉘 세션에 대해 'user equivalence'를 활성화하려면 아래와 같이 실행하고 생성된 각 키를 위한 pass phrase가 입력될 수 있도록 합니다.
$ exec /usr/bin/ssh-agent $SHELL $ /usr/bin/ssh-add Enter passphrase for /u01/app/oracle/.ssh/id_rsa: xxxxx Identity added: /u01/app/oracle/.ssh/id_rsa (/u01/app/oracle/.ssh/id_rsa) Identity added: /u01/app/oracle/.ssh/id_dsa (/u01/app/oracle/.ssh/id_dsa) $ ssh linux1 "date;hostname" Wed Sep 13 18:27:17 EDT 2006 linux1 $ ssh linux2 "date;hostname" Wed Sep 13 18:28:00 EDT 2006 linux2
RSH(remote shell)을 사용하는 경우에는 user equivalence가 /etc/hosts.equiv 파일에 정의되며, 새로운 터미널 쉘 세션에 대해 기본적으로 활성화됩니다.
$ rsh linux1 "date;hostname" Tue Sep 12 12:37:17 EDT 2006 linux1 $ rsh linux2 "date;hostname" Tue Sep 12 12:38:00 EDT 2006 linux2
Oracle Cluster Verification Utility의 실행
클러스터 데이터베이스를 생성하기 전에, Cluster Verification Utility(CVU)를 이용하여 사전 점검 작업을 수행해야 합니다.
참고: CVU 설정 방법은 "Cluster Verification Utility 실행을 위한 사전 요구사항 섹션을 참고하시기 바랍니다.
$ cd /u01/app/oracle/orainstall/clusterware/cluvfy
$ ./runcluvfy.sh stage -pre dbcfg -n linux1,linux2 -d ${ORACLE_HOME} -verbose
CVU 리포트를 검토합니다. CRS를 위한 사전 점검 작업 결과에서와 동일한 에러가 표시됨을 확인할 수 있습니다(VIP 인터페이스 설정 관련 에러, RHEL4 Update에 존재하지 않는 RPM 패키지 관련 에러 등). 이 에러 역시 무시해도 좋습니다.
클러스터 데이터베이스의 생성
아래와 같이 데이터베이스 생성 작업을 시작합니다:
$ dbca &
| 스크린 이름 |
작업 내용 |
| Welcome Screen |
"Oracle Real Application Clusters database"를 선택합니다. |
| Operations |
Create a Database를 선택합니다. |
| Node Selection |
Select All을 클릭하여 모든 서버(linux1과 linux2)를 선택합니다. |
| Database Templates |
Custom Database를 선택합니다. |
| Database Identification |
다음과 같이 입력합니다:
Global Database Name:
orcl.idevelopment.info
SID Prefix: orcl
필자의 경우 데이터베이스 도메인으로 idevelopment.info을 사용하였습니다. 도메인은 어떻게 설정하든 상관이 없습니다. 도메인이 반드시 DNS 도메인과 일치할 필요가 없음을 참고하시기 바랍니다. |
| Management Option |
디폴트 옵션을 그대로 사용합니다 ("Configure the Database with Enterprise Manager / Use Database Control for Database Management"). |
| Database Credentials |
필자의 경우 “Use the Same Password for All Accounts”을 선택하였습니다 패스워드를 2회 입력하되, 패스워드가 숫자로 시작되어서는 안 된다는 점에 유의하시기 바랍니다. |
| Storage Options |
본 구성 예제에서는 use Automatic Storage Management (ASM)을 선택하기로 합니다. |
| Create ASM Instance |
인스턴스에서 사용할 SYS 패스워드를 입력합니다.
Oracle10g Release 2부터는 ASM 인스턴스의 SPFILE(server parameter file)을 공유 디스크에 저장할 것을 요구하고 있습니다. "Create server parameter file (SPFILE)" 항목에서 OCFS2 파티션에 대한 디폴트 엔트리를 다음과 같이 수정합니다: /u02/oradata/orcl/dbs/spfile+ASM.ora. 다른 모든 옵션은 디폴트 값을 그대로 사용합니다.
다음으로 ASM 인스턴스를 생성하고 시작할 것인지 묻는 질문에 OK 버튼을 클릭하고 대화상자를 닫습니다.
OUI가 RAC 클러스터의 모든 노드에 대해 ASM 인스턴스를 생성하고 시작합니다.
|
| ASM Disk Groups |
Create New 버튼을 누릅니다. “Create Disk Group” 윈도우에 앞에서 ASMLib을 사용하여 설정한 4 개 볼륨이 표시됩니다
"Select Member Disks" 윈도우에 앞에서 설정한 볼륨이 아래와 같이 표시되지 않는 경우: (ORCL:VOL1, ORCL:VOL2, ORCL:VOL3, ORCL:VOL4) "Change Disk Discovery Path" 버튼을 클릭하고 "ORCL:VOL*"을 입력합니다.
필자의 경우 "Disk Group Name"으로 “ORCL_DATA1"을 사용하였습니다. "Select Member Disks" 윈도우에서 처음 두 개의 ASM 볼륨(ORCL:VOL1, ORCL:VOL2)을 선택합니다. "Redundancy" 세팅은 "Normal"로 설정합니다.
윈도우의 모든 설정값을 확인한 뒤 [OK] 버튼을 클릭합니다. 그러면 “ASM Disk Group Creation” 윈도우가 뜨게 됩니다. ASM Disk Group Creation 프로세스가 완료되면 다시 “ASM Disk Groups” 윈도우가 표시됩니다.
Create New 버튼을 다시 누릅니다. 두 번째 “Disk Group Name”으로는 "FLASH_RECOVERY_AREA"라는 문자열을 사용하였습니다 "Select Member Disks" 윈도우에서 나머지 두 개의 ASM 볼륨(ORCL:VOL3, ORCL:VOL4)을 선택합니다. "Redundancy" 세팅은 "Normal"로 설정합니다.
윈도우의 모든 설정값을 확인한 뒤 [OK] 버튼을 클릭합니다. 그러면 “ASM Disk Group Creation” 윈도우가 표시됩니다.
ASM Disk Group Creation 프로세스가 완료되면 다시 “ASM Disk Groups” 윈도우를 통해 생성된 두 개의 디스크 그룹이 표시됩니다. 새로 생성된 Disk Group Name "ORCL_DATA1"의 체크박스를 클릭하고 (이때 FLASH_RECOVERY_AREA가 선택되지 않았음을 확인합니다) [Next]를 클릭하여 다음 단계로 진행합니다. |
| Database File Locations |
필자의 경우 디폴트(Oracle Managed Files) 설정을 그대로 사용하였습니다:
Database Area: +ORCL_DATA1 |
| Recovery Configuration |
"Specify Flash Recovery Area" 옵션을 체크합니다.
Flash Recovery Area에 대해 [Browse] 버튼을 클릭하고 Disk Group Name을 “+FLASH_RECOVERY_AREA”로 설정합니다.
필자가 구성한 디스크 그룹의 사이즈는 118GB입니다. 필자는 117GB(117760 MB)의 Flash Recovery Area를 사용하였습니다. |
| Database Content |
필자의 경우 모든 Database Component(destination tablespace 포함)를 디폴트 값으로 설정하였습니다. 하지만 Sample Schemas를 선택해도 무방합니다 이 옵션은 Oracle Companion CD 소프트웨어가 설치된 경우에만 사용 가능합니다. |
| Database Services |
Add를 클릭하고 “Service Name”으로 orcltest를 입력합니다. 두 인스턴스 모두 “Preferred” 설정을 유지하고, “TAF Policy”의 경우 Basic을 선택합니다. |
| Initialization Parameters |
환경에 맞게 매개변수를 수정합니다. 필자의 경우 디폴트 값을 그대로 사용하였습니다. |
| Database Storage |
환경에 맞게 매개변수를 수정합니다. 필자의 경우 디폴트 값을 그대로 사용하였습니다. |
| Creation Options |
디폴트 옵션(Create Database)을 그대로 사용하고 Finish를 클릭하여 데이터베이스 생성 프로세스를 시작합니다.
“Summary” 스크린에서 OK를 클릭합니다. |
| End of Database Creation |
데이터베이스 생성이 완료되면 DBCA를 종료합니다.
DBCA를 종료하는 과정에서, 모든 오라클 인스턴스와 HA 서비스 “orcltest”를 시작한다는 메시지가 표시됩니다. 이 과정은 수 분이 걸릴 수도 있습니다. 모든 작업이 완료되면 윈도우와 대화상자가 사라집니다. |
DBCA의 실행을 완료하고 나면, 이제 Oracle RAC 클러스터가 정상적으로 실행됩니다!
orcltest 서비스의 생성
오라클 클러스터 데이터베이스를 생성하는 과정에서 TAF가 활성화된 데이터베이스에 연결하기 위해 “orcltest”라는 이름의 서비스를 추가하였습니다. 이 서비스는 tnsnames.ora 파일에 추가되었지만, 각 오라클 인스턴스에 서비스로서 업데이트되지는 않은 상태입니다.
아래 명령을 실행하여, orcltest 서비스가 성공적으로 추가되었는지 확인합니다:
SQL> show parameter service
NAME TYPE VALUE
-------------------- ----------- --------------------------------
service_names string orcl.idevelopment.info, orcltest
orcl.idevelopment.info에 대해서만 서비스가 정의되었다면, 양쪽 인스턴스에 서비스를 수동으로 추가해 주어야 합니다:
SQL> show parameter service
NAME TYPE VALUE
-------------------- ----------- --------------------------
service_names string orcl.idevelopment.info
SQL> alter system set service_names =
2 'orcl.idevelopment.info, orcltest.idevelopment.info' scope=both;
25.
설치 후 작업 - (선택 사항)
이 섹션에서는 Oracle 10g의 가용성과 데이터베이스 관리 환경을 개선하기 위해 수행할 수 있는 몇 가지 작업들을 소개하고 있습니다.
RAC 환경에서 아카이브 로그 활성화하기
단일 인스턴스 환경이든 클러스터 데이터베이스 환경이든, 오라클은 데이터베이스 블록에 대한 모든 변경 내역을 온라인 리두 로그 파일에 기록하고 관리합니다. Oracle RAC 환경에서, 각 인스턴스는 쓰레드(thread)라 불리는 별개의 온라인 리두 로그 파일을 가집니다. 각각의 오라클 인스턴스는 온라인 리두 로그를 순환적인 방식으로 사용합니다. 온라인 리두 로그가 꽉 차면, 오라클은 다음 파일로 이동합니다. 데이터베이스가 "Archive Log Mode"로 운영되는 경우, 오라클은 온라인 리두 로그 파일을 재활용하기 전에 사본을 생성합니다. 하나의 쓰레드는 최소한 2개의 온라인 리두 로그(또는 온라인 리두 로그 그룹)를 포함해야 합니다. 단일 인스턴스 구성의 경우도 마찬가지입니다. 하나의 인스턴스 역시 최소한 2개의 온라인 리두 로그(또는 온라인 리두 로그 그룹)를 포함해야 합니다.
온라인 리두 로그 파일의 크기는 다른 인스턴스의 리두 로그 사이즈와는 전혀 무관하게 설정됩니다. 대부분의 구성에서는 그 크기가 동일하지만, 각 노드의 워크로드 또는 백업/복구 요구 사항에 따라 크기가 달라질 수 있습니다. 각각의 인스턴스가 개별적으로 관리하는 온라인 리두 로그 파일에 대해 독자적인 읽기 접근 권한을 갖는다는 점도 알아둘 필요가 있습니다. 하지만 올바르게 설정된 RAC 환경에서 인스턴스 중 하나가 비정상적으로 종료된 경우, 다른 인스턴스에서 이 인스턴스의 온라인 리두 로그 파일을 읽어 올 수 있습니다. 따라서 온라인 리두 로그는 (데이터베이스 파일과 마찬가지로) 공유 스토리지 디바이스에 저장되어야 합니다.
앞에서 설명한 것처럼, 오라클은 온라인 리두 로그 파일을 순환적인 방식으로 사용합니다. 현재의 온라인 리두 로그가 꽉 차면, 오라클은 다음 파일로 이동합니다. DBA는 미디어 복구를 위해 데이터베이스를 "Archive Log Mode"로 설정하고 용량이 꽉 찬 온라인 리두 로그가 재활용되기 전에 사본을 생성할 수 있습니다. 이러한 프로세스를 "아카이빙"이라 부릅니다.
Database Configuration Assistant(DBCA)를 이용하면 새로운 데이터베이스를 아카이브 로그 모드로 설정할 수 있습니다. 하지만 대부분의 DBA들은 초기 데이터베이스 생성 과정에서 이 옵션을 선택하지 않습니다. 데이터베이스를 아카이브 로그 모드로 전환하는 방법은 아주 간단합니다. 하지만 이 과정에서 아주 잠시 동안 데이터베이스의 접근이 중단됩니다. Oracle RAC 노드 중 하나에서 아래의 작업을 수행하여 RAC 데이터베이스를 아카이브 로그 모드로 설정합니다. 본 예제에서는 orc11 인스턴스를 실행하는 linux1에서 작업을 수행하기로 합니다.
- 노드 중 하나(예: linux1)에 로그인한 후 현재 인스턴스에서 cluster_database를 FALSE로 설정하여 클러스터 인스턴스 매개변수를 비활성화합니다.
$ sqlplus "/ as sysdba"
SQL> alter system set cluster_database=false scope=spfile sid='orcl1';
- 클러스터 데이터베이스에 접근하는 모든 인스턴스들을 셧다운 처리합니다
$ srvctl stop database -d orcl
- 로컬 인스턴스를 사용해서 데이터베이스를 마운틴 합니다:
$ sqlplus "/ as sysdba"
SQL> startup mount
- 아카이빙을 활성화합니다:
SQL> alter database archivelog;
- 현재 인스턴스에서 인스턴스 매개변수 cluster_database를 TRUE로 설정하여 클러스터링 지원 기능을 다시 활성화합니다.
SQL> alter system set cluster_database=true scope=spfile sid='orcl1';
- 로컬 인스턴스를 셧다운 합니다:
SQL> shutdown immediate
- srvctl을 실행하여 전체 인스턴스를 다시 시작합니다:
$ srvctl start database -d orcl
- (선택 사항) srvctl:을 사용하여 서비스(예: TAF)를 다시 시작합니다
$ srvctl start service -d orcl
- 로컬 인스턴스에 로그인하여 Archive Log Mode가 활성화되었는지 확인합니다:
$ sqlplus "/ as sysdba"
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 83
Next log sequence to archive 84
Current log sequence 84
Archive Log Mode를 활성화하고 나면, RAC 구성의 각 인스턴스는 자동으로 리두 로그를 아카이브 처리합니다!
커스텀 오라클 데이터베이스 스크립트의 다운로드 및 설치
DBA들은 오라클의 데이터 딕셔너리 뷰와 다이내믹 성능 뷰에 의존하여 지원 및 관리 업무를 수행합니다. 이러한 뷰들이 데이터베이스에 관련한 중요 정보들을 쉽고 간단하게 확인하는데 도움이 되는 것은 분명하지만, SQL 스크립트를 함께 활용함으로써 보다 빠르고 정확하게 필요한 정보를 확인할 수 있을 것입니다.
이 섹션에서는 공간 관리, 성능, 백업, 보안, 세션 관리 등에 활용 가능한 여러 가지 Oracle DBA 스크립트들을 다운로드하고 설치합니다. 오라클 DBA 스크립트 아카이브는 다음 링크에서 다운로드할 수 있습니다: http://www.idevelopment.info/data/Oracle/DBA_scripts/common.zip oracle 사용자 계정으로 common.zip 아카이브를 클러스터 내 각 노드의 $ORACLE_BASE 디렉토리에 다운로드합니다. 본 예제에서는 common.zip 아카이브를 /u01/app/oracle로 복사합니다. 다음으로 아카이브 파일의 압축을 $ORACLE_BASE 디렉토리에 풉니다.
oracle 계정 권한으로 클러스터의 모든 노드에서 아래 작업을 실행합니다:
$ mv common.zip /u01/app/oracle
$ cd /u01/app/oracle
$ unzip common.zip
마지막으로 현재 UNIX 쉘의 환경 변수를 검증(또는 설정)하여, 오라클 SQL 스크립트가 어느 디렉토리에서든 SQL*Plus를 통해 실행될 수 있는지 확인합니다. UNIX 환경에서는 아래의 환경 변수가 로그인 쉘 스크립트에 포함됩니다:
ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_PATH
ORACLE_PATH 환경 변수는 oracle 사용자 계정을 위한 로그인 스크립트 생성섹션에서 생성된 .bash_profile 로그인 스크립트에 이미 설정되어 있을 것입니다.
Oracle DBA 스크립트의 압축을 풀고 UNIX 환경 변수($ORACLE_PATH)를 설정했다면, 이제 SQL*Plus에 로그인하여 $ORACLE_BASE/common/oracle/sql에 저장된 SQL 스크립트를 실행할 수 있습니다. 예를 들어, DBA 사용자로 오라클 데이터베이스에 로그인한 상태에서 테이블스페이스 정보를 조회하는 방법이 아래와 같습니다:
SQL> @dba_tablespaces
Status Tablespace Name TS Type Ext. Mgt. Seg. Mgt. Tablespace Size Used (in bytes) Pct. Used
--------- --------------- ------------ ---------- --------- ------------------ ------------------ ---------
ONLINE UNDOTBS1 UNDO LOCAL MANUAL 1,283,457,024 9,043,968 1
ONLINE SYSAUX PERMANENT LOCAL AUTO 524,288,000 378,732,544 72
ONLINE USERS PERMANENT LOCAL AUTO 2,147,483,648 321,257,472 15
ONLINE SYSTEM PERMANENT LOCAL MANUAL 838,860,800 505,544,704 60
ONLINE INDX PERMANENT LOCAL AUTO 1,073,741,824 65,536 0
ONLINE UNDOTBS2 UNDO LOCAL MANUAL 1,283,457,024 22,282,240 2
ONLINE TEMP TEMPORARY LOCAL MANUAL 1,073,741,824 92,274,688 9
------------------ ------------------ ---------
avg 23
sum 8,225,030,144 1,329,201,152
7 rows selected.
SQL*Plus에 로그인한 상태에서 사용 가능한 모든 오라클 DBA 스크립트의 목록을 확인하려면 help.sql 스크립트를 실행합니다:
SQL> @help.sql
========================================
Automatic Shared Memory Management
========================================
asmm_components.sql
========================================
Automatic Storage Management
========================================
asm_alias.sql
asm_clients.sql
asm_diskgroups.sql
asm_disks.sql
asm_disks_perf.sql
asm_drop_files.sql
asm_files.sql
asm_files2.sql
asm_templates.sql
< --- SNIP --- >
perf_top_sql_by_buffer_gets.sql
perf_top_sql_by_disk_reads.sql
========================================
Workspace Manager
========================================
wm_create_workspace.sql
wm_disable_versioning.sql
wm_enable_versioning.sql
wm_freeze_workspace.sql
wm_get_workspace.sql
wm_goto_workspace.sql
wm_merge_workspace.sql
wm_refresh_workspace.sql
wm_remove_workspace.sql
wm_unfreeze_workspace.sql
wm_workspaces.sql
공유 오라클 패스워드 파일의 생성
이번 섹션에서는 오라클 클러스터 데이터베이스의 모든 인스턴스들이 공유하는 오라클 패스워드 파일을 설정합니다. 데이터베이스의 패스워드 파일은 각 인스턴스별로 $ORACLE_HOME/dbs/orapw 디렉토리에 위치하며 이 파일에는 SYSDBA 권한을 갖는 모든 데이터베이스 사용자의 목록이 저장되어 있습니다. 데이터베이스 사용자가 SYSDBA 역할을 할당 받은 경우, 인스턴스는 사용자가 로그인한 인스턴스의 데이터베이스 패스워드 파일에 이 기록을 저장합니다. 그렇다면 클러스터의 다른 인스턴스에서는 어떻게 되는 것일까요? 다른 인스턴스의 데이터베이스 패스워드 파일은 업데이트 되지 않으며, 따라서 SYSDBA 역할을 할당 받은 사용자의 정보가 저장되지 않습니다. 따라서 RMAN과 같은 프로그램에서 SYSDBA 권한을 부여 받은 사용자가 로그인을 시도하더라도, 다른 인스턴스에서는 로그인을 실패하게 됩니다.
이러한 문제를 해결하는 가장 일반적인 방법은 공유 클러스터 파일 시스템에서 데이터베이스 패스워드 파일을 생성하고, 각각의 인스턴스에서 심볼릭 링크로 참조하도록 하는 것입니다. 본 문서의 예제 환경에서는 Oracle Clustered File System(OCFS2)를 사용하고 있으므로, OCFS2에 데이터베이스 패스워드 파일을 저장하는 방법을 사용해야 할 것입니다.
이 섹션에서는 ASM 인스턴스를 위한 오라클 패스워드 파일도 함께 생성됩니다.
- /u02/oradata/orcl에 마운트된 클러스터 파일 시스템에 데이터베이스 패스워드 디렉토리를 생성합니다. 클러스터의 노드 중 하나(linux1)에서 oracle 사용자로 아래 명령을 실행합니다:
$ mkdir -p /u02/oradata/orcl/dbs
- 클러스터의 노드 중 하나(linux1)에서 데이터베이스 패스워드 파일을 클러스터 파일 시스템의 데이터베이스 패스워드 디렉토리로 이동합니다. 가장 최근에 SYSDBA 권한 설정이 변경된 데이터베이스 패스워드 파일을 가진 노드를 선택합니다. 대부분의 상황에서는 이것이 큰 문제가 되지 않습니다. 설사 누락된 부분이 있다 하더라도 해당 사용자에게 SYSDBA 역할을 쉽게 할당해 줄 수 있기 때문입니다. (그리고 어차피 새롭게 설치한 시스템이기 때문에 SYSDBA 사용자가 추가되었을 가능성도 없습니다.) 아래 작업을 수행하는 동안 데이터베이스 서버를 셧다운 할 필요는 없습니다. linux1 서버에서 oracle 사용자 계정으로 아래와 같이 실행합니다:
$ mv $ORACLE_HOME/dbs/orapw+ASM1 /u02/oradata/orcl/dbs/orapw+ASM
$ mv $ORACLE_HOME/dbs/orapworcl1 /u02/oradata/orcl/dbs/orapworcl
$ ln -s /u02/oradata/orcl/dbs/orapw+ASM $ORACLE_HOME/dbs/orapw+ASM1
$ ln -s /u02/oradata/orcl/dbs/orapworcl $ORACLE_HOME/dbs/orapworcl1
- 클러스터의 두 번째 노드(linux2)에서 아래와 같이 실행합니다:
$ rm $ORACLE_HOME/dbs/orapw+ASM2
$ rm $ORACLE_HOME/dbs/orapworcl2
$ ln -s /u02/oradata/orcl/dbs/orapw+ASM $ORACLE_HOME/dbs/orapw+ASM2
$ ln -s /u02/oradata/orcl/dbs/orapworcl $ORACLE_HOME/dbs/orapworcl2
이제 사용자에게 SYSDBA 역할이 할당되면, 다른 인스턴스들도 업데이트된 패스워드 파일을 공유하게 됩니다.
SQL> GRANT sysdba TO scott;
26.
TNS 네트워킹 파일의 검증
클러스터의 모든 Oracle RAC 노드에 대해 TNS 네트워킹 파일을 설정해 주어야 합니다!
listener.ora
클러스터 환경에서 TNS listener 구성 파일(listener.ora)을 설정하는 방법에 대해서는 이미 섹션 23에서 설명했습니다. 생성된 listener.ora 파일에 대해 별도의 수정 작업은 필요하지 않습니다.
여러분이 참고하실 수 있도록, linux1 서버의 listener.ora 파일 복사본을 가이드의 support 파일에 포함시켜 놓았습니다. 또 오라클에 의해 자동 설정된 tnsnames.ora(Transparent Application Failover(TAF)의 테스트에 사용됩니다) 파일의 복사본도 함께 포함시켜 두었습니다. 이 파일 역시 클러스터의 모든 노드에서 설정되어야 합니다.
클러스터 데이터베이스에 액세스해야 하는 다른 클라이언트에 관련한 항목도 이 파일에 포함시킬 수 있습니다.
외부 클라이언트로부터 클러스터 데이터베이스에 연결하기
이 과정은 반드시 필요한 것은 아니지만, 여기에서는 TNS 파일이 올바르게 설정되었는지 확인하기 위한 목적에서 설명하기로 합니다. 오라클이 설치된 다른 머신(예: 네트워크에 연결된 Windows 머신)을 이용하여 클러스터 데이터베이스의 양쪽 노드에 TNS 엔트리를 (tnsnames.ora 파일에) 추가합니다.
참고: 연결하려는 머신에서 listener.ora, tnsnames.ora 파일에 정의된 그대로 호스트 네임 확인(name resolve)이 가능한지 확인합니다. 예제 구성에서는, 연결하려는 머신에서 로컬 hosts 파일 또는 DNS를 통해 아래의 호스트 네임에 연결할 수 있어야 합니다:
192.168.1.100 linux1
192.168.1.101 linux2
192.168.1.200 linux1-vip
192.168.1.201 linux2-vip
그런 다음, tnsnames.ora 파일에 정의된 service name을 사용하여 클러스터 데이터베이스에 연결할 수 있는지 테스트합니다:
C:\> sqlplus system/manager@orcl2
C:\> sqlplus system/manager@orcl1
C:\> sqlplus system/manager@orcl_taf
C:\> sqlplus system/manager@orcl
27.
테이블스페이스의 생성 변경
클러스터 데이터베이스를 생성하는 과정에서 모든 테이블스페이스를 디폴트 크기로 설정해 두었습니다. 공유 스토리지에 대용량 드라이브를 사용하는 경우라면, 테스트 데이터베이스의 크기를 늘려 잡아야 할 수도 있을 것입니다.
테스트 데이터베이스의 테이블 스페이스를 생성/변경하기 위한 SQL 명령이 아래와 같습니다. 본 문서에서 사용된 데이터베이스 파일명(OMF 파일)이 여러분이 생성한 오라클 환경과 다를 수 있음을 명심하시기 바랍니다. 환경에 필요한 파일명을 확인하기 위한 쿼리가 아래와 같습니다:
SQL> select tablespace_name, file_name
2 from dba_data_files
3 union
4 select tablespace_name, file_name
5 from dba_temp_files;
TABLESPACE_NAME FILE_NAME
--------------- --------------------------------------------------
EXAMPLE +ORCL_DATA1/orcl/datafile/example.257.570913311
INDX +ORCL_DATA1/orcl/datafile/indx.270.570920045
SYSAUX +ORCL_DATA1/orcl/datafile/sysaux.260.570913287
SYSTEM +ORCL_DATA1/orcl/datafile/system.262.570913215
TEMP +ORCL_DATA1/orcl/tempfile/temp.258.570913303
UNDOTBS1 +ORCL_DATA1/orcl/datafile/undotbs1.261.570913263
UNDOTBS2 +ORCL_DATA1/orcl/datafile/undotbs2.265.570913331
USERS +ORCL_DATA1/orcl/datafile/users.264.570913355
$ sqlplus "/ as sysdba"
SQL> create user scott identified by tiger default tablespace users;
SQL> grant dba, resource, connect to scott;
SQL> alter database datafile '+ORCL_DATA1/orcl/datafile/users.264.570913355' resize 1024m;
SQL> alter tablespace users add datafile '+ORCL_DATA1' size 1024m autoextend off;
SQL> create tablespace indx datafile '+ORCL_DATA1' size 1024m
2 autoextend on next 50m maxsize unlimited
3 extent management local autoallocate
4 segment space management auto;
SQL> alter database datafile '+ORCL_DATA1/orcl/datafile/system.262.570913215' resize 800m;
SQL> alter database datafile '+ORCL_DATA1/orcl/datafile/sysaux.260.570913287' resize 500m;
SQL> alter tablespace undotbs1 add datafile '+ORCL_DATA1' size 1024m
2 autoextend on next 50m maxsize 2048m;
SQL> alter tablespace undotbs2 add datafile '+ORCL_DATA1' size 1024m
2 autoextend on next 50m maxsize 2048m;
SQL> alter database tempfile '+ORCL_DATA1/orcl/tempfile/temp.258.570913303' resize 1024m;
필자가 테스트 데이터베이스 환경을 위해 정의한 테이블스페이스의 설정 정보가 아래와 같습니다:
Status Tablespace Name TS Type Ext. Mgt. Seg. Mgt. Tablespace Size Used (in bytes) Pct. Used
--------- --------------- ------------ ---------- --------- ------------------ ------------------ ---------
ONLINE UNDOTBS1 UNDO LOCAL MANUAL 1,283,457,024 85,065,728 7
ONLINE SYSAUX PERMANENT LOCAL AUTO 524,288,000 275,906,560 53
ONLINE USERS PERMANENT LOCAL AUTO 2,147,483,648 131,072 0
ONLINE SYSTEM PERMANENT LOCAL MANUAL 838,860,800 500,301,824 60
ONLINE EXAMPLE PERMANENT LOCAL AUTO 157,286,400 83,820,544 53
ONLINE INDX PERMANENT LOCAL AUTO 1,073,741,824 65,536 0
ONLINE UNDOTBS2 UNDO LOCAL MANUAL 1,283,457,024 3,801,088 0
ONLINE TEMP TEMPORARY LOCAL MANUAL 1,073,741,824 27,262,976 3
------------------ ------------------ ---------
avg 22
sum 8,382,316,544 976,355,328
8 rows selected.
28.
RAC 클러스터 및 데이터베이스 설정의 검증
클러스터의 모든 Oracle RAC 노드에서 RAC 검증 작업을 수행해야 합니다! 하지만 본 문서에서는 linux1서버에서만 점검 작업을 수행하기로 합니다. .
이 섹션에서는 srvctl 커맨드와 SQL 쿼리를 사용하여 Oracle RAC 10g 구성을 검증하는 방법을 설명합니다.
SRVCTL을 위해 정의된 다섯 가지 노드-레벨 (node-level) 작업이 아래와 같습니다:
- 노드-레벨 애플리케이션의 추가 및 삭제
- 노드-레벨 애플리케이션 관련 환경변수의 설정 및 해제
- 노드 애플리케이션의 관리
- ASM 인스턴스의 관리
- 프로그램 그룹의 시작 및 중단 (가상 IP 주소, 리스너, Oracle Notification Services, Oracle Enterprise Manager 에이전트 등).
모든 인스턴스 및 서비스의 상태 확인
$ srvctl status database -d orcl
Instance orcl1 is running on node linux1
Instance orcl2 is running on node linux2
단일 인스턴스의 상태 확인
$ srvctl status instance -d orcl -i orcl2
Instance orcl2 is running on node linux2
데이터베이스의 named service 글로벌 상태 확인
$ srvctl status service -d orcl -s orcltest
Service orcltest is running on instance(s) orcl2, orcl1
특정 노드의 노드 애플리케이션 상태 확인
$ srvctl status nodeapps -n linux1
VIP is running on node: linux1
GSD is running on node: linux1
Listener is running on node: linux1
ONS daemon is running on node: linux1
ASM 인스턴스의 상태 확인
$ srvctl status asm -n linux1
ASM instance +ASM1 is running on node linux1.
구성된 데이터베이스의 목록 확인
$ srvctl config database
orcl
RAC 데이터베이스의 설정 확인
$ srvctl config database -d orcl
linux1 orcl1 /u01/app/oracle/product/10.2.0/db_1
linux2 orcl2 /u01/app/oracle/product/10.2.0/db_1
특정 클러스터 데이터베이스에 관련된 모든 서비스를 확인
$ srvctl config service -d orcl
orcltest PREF: orcl2 orcl1 AVAIL:
노드 애플리케이션의 설정 확인 - (VIP, GSD, ONS, Listener 등)
$ srvctl config nodeapps -n linux1 -a -g -s -l
VIP exists.: /linux1-vip/192.168.1.200/255.255.255.0/eth0:eth1
GSD exists.
ONS daemon exists.
Listener exists.
ASM 인스턴스의 설정 확인
$ srvctl config asm -n linux1
+ASM1 /u01/app/oracle/product/10.2.0/db_1
클러스터에서 실행 중인 모든 인스턴스 확인
SELECT
inst_id
, instance_number inst_no
, instance_name inst_name
, parallel
, status
, database_status db_status
, active_state state
, host_name host
FROM gv$instance
ORDER BY inst_id;
INST_ID INST_NO INST_NAME PAR STATUS DB_STATUS STATE HOST
-------- -------- ---------- --- ------- ------------ --------- -------
1 1 orcl1 YES OPEN ACTIVE NORMAL linux1
2 2 orcl2 YES OPEN ACTIVE NORMAL linux2
디스크 그룹에 포함된 모든 데이터 파일 확인
select name from v$datafile
union
select member from v$logfile
union
select name from v$controlfile
union
select name from v$tempfile;
NAME
-------------------------------------------
+FLASH_RECOVERY_AREA/orcl/controlfile/current.258.570913191
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_1.257.570913201
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_2.256.570913211
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_3.259.570918285
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_4.260.570918295
+ORCL_DATA1/orcl/controlfile/current.259.570913189
+ORCL_DATA1/orcl/datafile/example.257.570913311
+ORCL_DATA1/orcl/datafile/indx.270.570920045
+ORCL_DATA1/orcl/datafile/sysaux.260.570913287
+ORCL_DATA1/orcl/datafile/system.262.570913215
+ORCL_DATA1/orcl/datafile/undotbs1.261.570913263
+ORCL_DATA1/orcl/datafile/undotbs1.271.570920865
+ORCL_DATA1/orcl/datafile/undotbs2.265.570913331
+ORCL_DATA1/orcl/datafile/undotbs2.272.570921065
+ORCL_DATA1/orcl/datafile/users.264.570913355
+ORCL_DATA1/orcl/datafile/users.269.570919829
+ORCL_DATA1/orcl/onlinelog/group_1.256.570913195
+ORCL_DATA1/orcl/onlinelog/group_2.263.570913205
+ORCL_DATA1/orcl/onlinelog/group_3.266.570918279
+ORCL_DATA1/orcl/onlinelog/group_4.267.570918289
+ORCL_DATA1/orcl/tempfile/temp.258.570913303
21 rows selected.
'ORCL_DATA1' 디스크 그룹에 포함된 모든 ASM 디스크 확인
SELECT path
FROM v$asm_disk
WHERE group_number IN (select group_number
from v$asm_diskgroup
where name = 'ORCL_DATA1');
PATH
----------------------------------
ORCL:VOL1
ORCL:VOL2
29.
클러스터의 시작 / 종료
이것으로 Oracle RAC 10g의 설치 및 설정 작업을 모두 완료하였습니다.
이 시점에서 여러분은 이렇게 질문할 지도 모릅니다. “다 좋은데, 서비스를 어떻게 시작하고 종료하나요?” 이 가이드의 설명대로 작업을 완료하였다면 모든 서비스(Clusterware, 오라클 인스턴스, Enterprise Manager Database Console)는 Linux 노드가 리부트 될 때 자동으로 시작됩니다.
하지만 수동으로 노드를 셧다운하고 다시 시작해야 할 경우도 있습니다. 또는 Enterprise Manager가 실행되고 있지 않음을 확인하고, 이를 시작해야 할 수 있습니다. 이 섹션에서는 SRVCTL 커맨드를 사용하여 클러스터 환경을 시작하고 종료하는 방법을 설명합니다.
먼저 oracle UNIX 계정으로 로그인하였는지 확인합니다. 이 섹션에서 설명되는 모든 커맨드는 linux1에서 실행되는 것으로 가정합니다:
# su - oracle $ hostname linux1
Oracle RAC 10g 환경의 종료
가장 먼저 오라클 인스턴스를 종료합니다. 인스턴스와 관련 서비스가 종료된 이후에 ASM 인스턴스를 종료합니다. 마지막으로 노드 애플리케이션(Virtual IP, GSD, TNS Listener, ONS)을 종료합니다.
$ export ORACLE_SID=orcl1
$ emctl stop dbconsole
$ srvctl stop instance -d orcl -i orcl1
$ srvctl stop asm -n linux1
$ srvctl stop nodeapps -n linux1
Oracle RAC 10g 환경의 시작
먼저 노드 애플리케이션(Virtual IP, GSD, TNS Listener, ONS)을 시작합니다. 노드 애플리케이션이 성공적으로 실행되었다면, ASM 인스턴스를 시작합니다. 마지막으로, 오라클 인스턴스와 관련 서비스, Enterprise Manager Database 콘솔을 시작합니다.
$ export ORACLE_SID=orcl1
$ srvctl start nodeapps -n linux1
$ srvctl start asm -n linux1
$ srvctl start instance -d orcl -i orcl1
$ emctl start dbconsole
SRVCTL을 이용한 전체 인스턴스의 시작/종료
모든 인스턴스와 서비스를 동시에 시작/종료하는 방법이 아래와 같습니다.
$ srvctl start database -d orcl
$ srvctl stop database -d orcl
30.
Transparent Application Failover (TAF)
기업이 엔터프라이즈 애플리케이션에 99.99% (또는 99.999%)의 가용성 수준을 요구하는 것은 드문 일이 아닙니다. 1 년 동안 5 시간 이내의 다운타임을 보장하려면 얼마나 많은 노력이 필요할 것인지 생각해 보십시오. 고가용성 요구사항을 만족하기 위해서는, 특정 시스템에 장애가 발생하는 경우 자동으로 페일오버를 수행하기 위한 메커니즘이 기본적으로 필요합니다. Oracle RAC 10g는 오라클 데이터베이스에 대해 매우 뛰어난 수준의 페일오버 메커니즘을 제공하는 솔루션입니다. Oracle RAC 10g는 클러스터 환경에서 지속적인 가용성을 제공하는데 필요한 모든 컴포넌트를 제공하고 있습니다. 클러스터 내의 특정 시스템에 장애가 발생하면, 사용자의 연결은 자동으로 다른 시스템에 자동으로 페일오버 됩니다.
페일오버 프로세싱에 관련한 Oracle RAC 10g의 핵심 컴포넌트로 Transparent Application Failover (TAF) 옵션을 들 수 있습니다. 장애가 발생한 시스템의 모든 데이터베이스 연결 및 프로세스는 클러스터 내의 다른 노드를 통해 재연결되며, 이 과정은 사용자 관점에서 볼 때 완전히 투명한 형태로 진행됩니다.
이번 섹션에서는 TAF가 Oracle RAC 10g에서 동작하는 원리를 간단하게 예시하고 있습니다. Oracle RAC 10g의 페일오버를 제대로 설명하려면 별도의 문서를 따로 작성해야 할 것입니다. 여기에서는 개론적인 지식만을 제공하는 것을 목적으로 합니다.
TAF는 OCI 라이브러리를 통해 자동적으로 수행됩니다. 따라서 TAF를 사용하기 위해 애플리케이션 (클라이언트) 코드를 변경할 필요는 없습니다. 하지만 Oracle TNS 파일(tnsnames.ora) 파일에 몇 가지 설정 작업이 필요합니다. (Java 씬 클라이언트의 경우 아직까지는 tnsnames.ora에 접근하기 위한 기능이 제공되지 않기 때문에 TAF에 참여할 수 없습니다.)
tnsnames.ora 파일의 설정
TAF의 실행을 테스트하기 전에, “non-RAC” 클라이언트 머신의 tnsnames.or |