Oracle/설치

[oracle] Redhat AS4+ vmware server +oracle 10gr2=oracle 10g RAC

inspitus 2007. 5. 8. 01:22

DBA: Linux

VMware Server를 이용하여 Oracle Enterprise Linux 기반 Oracle RAC 10g 설치하기


저자 ? Vincent Chan

가상 머신 테크놀로지를 이용하여 Oracle Enterprise Linux 운영 체제에 테스트용 Oracle Real Application Cluster 10g Release 2를 설치하는 방법을 설명합니다.

게시일: 2007 1

작년 10월 오라클 오픈월드 2006 행사에서, Red Hat Linux를 위한 엔터프라이즈급 기술 지원 서비스인 Oracle Unbreakable Linux 프로그램이 발표된 바 있습니다. Red Hat Advanced Server Release 4(Update 4)를 기반으로 하는 오라클의 독자적인 Enterprise Linux 운영체제가 무료 다운로드 버전으로 공개되었습니다.

그 결과로, 전혀 비용을 들이지 않고도 VMware Server(VMware의 무료 가상화 소프트웨어)를 이용하여 일반 가정용 컴퓨터에 Red Hat Advanced Server 기반 Oracle Real Application Clusters (RAC) 10g 환경을 구현할 수 있게 되었습니다.

VMware Server는 하나의 물리적 머신에서 여러 개의 운영 체제를 동시에 실행할 수 있게 합니다. 각각의 가상 머신은 별도의 운영체제와 디스크, 프로세서, 메모리 등의 가상 컴포넌트를 갖습니다. 가상화 테크놀로지는 하나의 물리적 서버에서 다른 데이터 또는 소프트웨어에 영향을 주지 않고 개발/테스트 작업을 수행하기 위한 용도로 활용되고 있습니다. VMware 소프트웨어는 특히 개발/테스트 과정의 총소유비용을 절감하고 애플리케이션 개발 기간을 단축할 수 있는 솔루션으로 각광받고 있습니다.

본 가이드에서는 Enterprise Linux VMware Server를 기반으로 실행되는 2 노드 구성의 Oracle RAC 10g Release 2 환경을 설치하고 구성하는 방법을 설명하고 있습니다. 이 가이드는 교육/테스트용으로만 활용할 수 있으며, 오라클 및 다른 어떤 벤더도 이러한 구성에 대한 기술 지원을 제공하지 않고 있음을 참고하시기 바랍니다.

가이드의 목차가 아래와 같습니다:

 

  1. 하드웨어 요구사항 개요
  2. 번째 가상 머신의 구성
  3. 번째 가상 머신에 Enterprise Linux 설치하기
  4. 번째 가상 머신의 생성 설정
  5. Oracle Automatic Storage Management (ASM) 설정
  6. Oracle Cluster File System(OCFS2) 설정
  7. Oracle Clusterware 설치
  8. Oracle Database 10g Release 2 설치
  9. RAC 데이터베이스 환경 확인
  10. Transparent Application Failover(TAF) 테스트
  11. 데이터베이스 백업 복구
  12. Oracle Enterprise Manager(OEM) 데이터베이스 콘솔 사용
  13. 알려진 이슈

1. 하드웨어 요구사항 및 개요

본 가이드에서는 32 비트 게스트 Linux 운영 체제를 설치하여 사용합니다. 64 비트 게스트 운영 체제는 아래와 같은 64 비트 프로세서가 설치된 호스트 머신 환경만을 지원합니다:

  • AMD Athlon 64, revision D 이상
  • AMD Opteron, revision E 이상
  • AMD Turion 64, revision E 이상
  • AMD Sempron, 64 비트 지원 revision D 이상 또는 Intel EM64T VT 지원 프로세서

64 비트 운영 체제를 설치하여 사용하고자 하는 경우, 시스템의 프로세서가 위 조건을 만족하는지 먼저 확인하시기 바랍니다. BIOS에서 Virtualization Technology(VT)가 활성화되어 있는지 확인해야 합니다. 일부 메인보드 제조업체의 경우 이 필드를 디폴트 설정에서 비활성화해 놓고 있기도 합니다. 프로세서 호환성에 대한 보다 자세한 정보는 이곳에서 확인하실 수 있습니다.
프로세서의 지원 여부를 확인하려면 VMware의 프로세서 점검 호환성 툴을 다운로드하시기 바랍니다.

각 가상 머신에 최소 700 MB의 메모리와 30 GB의 디스크 공간을 할당합니다.

운영 체제 환경의 개요가 아래와 같습니다:

호스트 네임

OS

프로세서

메모리

디스크

네트워크 카드

pacu

Windows XP Professional Service Pack 2 (32-bit)

Intel Pentium 4 550, 3.4MHz, HT

2 GB DDR2 SDRAM, 533 MHz

250 GB, Ultra ATA/133, 7200 RPM

Intel Pro/1000 MT

게스트 운영 체제 환경의 개요가 아래와 같습니다:

호스트 네임

OS

프로세서

메모리

rac1

Oracle Enterprise Linux 4 (32-bit)

1

700 MB

rac2

Oracle Enterprise Linux 4 (32-bit)

1

700 MB

가상 디스크 레이아웃의 개요가 아래와 같습니다:

호스트 가상 디스크

게스트 가상 디스크

가상 디바이스 노드

사이즈 (MB)

설명

d:\vm\rac\localdisk.vmdk

/dev/sda1
/dev/sda2
/dev/sda3

SCSI 0:0

20

“/” 마운트포인트
스왑 공간
오라클 바이너리

d:\vm\rac\sharedstorage\ocfs2disk.vmdk

/dev/sdb

SCSI 1:0

512

OCFS2 디스크

d:\vm\rac\sharedstorage\asmdisk1.vmdk

/dev/sdc

SCSI 1:1

3072

ASM disk group 1

d:\vm\rac\sharedstorage\asmdisk2.vmdk

/dev/sdd

SCSI 1:2

3072

ASM disk group 1

d:\vm\rac\sharedstorage\asmdisk3.vmdk

/dev/sde

SCSI 1:3

2048

ASM 플래시 복구 영역

(공유 스토리지를 설정하기 위해서는, 게스트 OS가 공유 스토리지와 동일한 SCSI 버스를 공유하고 있지 않아야 합니다. 게스트 OS를 위해서는 SCSI0, 공유 디스크를 위해서는 SCSI1을 사용하도록 합니다.)

RAC 데이터베이스 환경의 개요가 아래와 같습니다:

호스트 네임

ASM 인스턴스 네임

RAC 인스턴스 네임

데이터베이스 네임

데이터베이스 파일 스토리지

OCR & Voting Disk

rac1

+ASM1

devdb1

devdb

ASM

OCFS2

rac2

+ASM2

devdb2

devdb

ASM

OCFS2

이중화 구성을 위해 각 노드에 Oracle Home을 설치해야 합니다. ASM Oracle RAC 인스턴스는 각 노드의 동일한 Oracle Home을 공유합니다.

2. 첫 번째 가상 머신의 구성

첫 번째 가상 머신의 생성/설정을 위해 디스크, 프로세서와 같은 가상 하드웨어 디바이스를 추가합니다. 설치 작업을 시작하기 전에, 가상 머신과 공유 스토리지를 위치시킬 윈도우즈 폴더를 생성합니다.

D:\>mkdir vm\rac\rac1

D:\>mkdir vm\rac\rac2

D:\>mkdir vm\rac\sharedstorage

데스크탑의 VMware Server 아이콘을 더블 클릭하여 애플리케이션을 실행합니다:

  1. Ctrl-N을 눌러 새로운 가상 머신을 생성합니다.
  2. New Virtual Machine Wizard: Next를 클릭합니다.
  3. Select the Appropriate Configuration:
    1. Virtual machine configuration: Custom을 선택합니다.
  4. Select a Guest Operating System:
    1. Guest operating system: Linux를 선택합니다.
    2. Version: Red Hat Enterprise Linux 4를 선택합니다.
  5. Name the Virtual Machine:
    1. Virtual machine name: “rac1”을 입력합니다.
    2. Location: “d:\vm\rac\rac1.”을 입력합니다.
  6. Set Access Rights:
    1. Access rights: Make this virtual machine private를 선택합니다.
  7. Startup / Shutdown Options:
    1. Virtual machine account: User that powers on the virtual machine을 선택합니다.
  8. Processor Configuration:
    1. Processors: One을 선택합니다.
  9. Memory for the Virtual Machine:
    1. Memory: 700MB를 선택합니다.
  10. Network Type:
    1. Network connection: Use bridged networking을 선택합니다.
  11. Select I/O Adapter Types:
    1. I/O adapter types: LSI Logic을 선택합니다.
  12. Select a Disk:
    1. Disk: Create a new virtual disk를 선택합니다.
  13. Select a Disk Type:
    1. Virtual Disk Type: SCSI (Recommended)를 선택합니다.
  14. Specify Disk Capacity:
    1. Disk capacity: “20GB.”를 입력합니다.
    2. Allocate all disk space now의 선택을 해제합니다. 공간을 절약할 생각이라면, 굳이 지금 모든 디스크 공간을 할당할 필요가 없습니다.
  15. Specify Disk File:
    1. Disk file: “localdisk.vmdk.”를 입력합니다.
    2. Finish를 클릭합니다.

16 - 24 번 과정을 반복하여 4 개의 가상 SCSI 하드 디스크를 생성합니다 - ocfs2disk.vmdk (512MB), asmdisk1.vmdk (3GB), asmdisk2.vmdk (3GB), asmdisk3.vmdk (2GB).

  1. VMware Server Console: Edit virtual machine settings를 클릭합니다.
  2. Virtual Machine Settings: Add를 클릭합니다.
  3. Add Hardware Wizard: Next를 클릭합니다.
  4. Hardware Type:
    1. Hardware types: Hard Disk를 선택합니다.
  5. Select a Disk:
    1. Disk: Create a new virtual disk을 선택합니다.
  6. Select a Disk Type:
    1. Virtual Disk Type: SCSI (Recommended)을 선택합니다.
  7. Specify Disk Capacity:
    1. Disk capacity: “0.5GB.”을 입력합니다.
    2. Allocate all disk space now을 선택합니다. 공간을 절약할 생각이라면, 굳이 지금 모든 디스크 공간을 할당할 필요가 없습니다. 하지만 성능 문제를 고려하여, 각각의 가상 공유 디스크에 디스크 공간을 미리 할당해 주는 것이 바람직합니다. 흔한 일은 아니지만 오라클 데이터베이스 생성 과정에서, 또는 데이터베이스에 DML 작업이 과도하게 발생하여 공유 디스크의 사이즈가 급격히 증가하는 경우, 가상 머신의 동작이 잠시 멈추는 상황이 발생할 수도 있습니다.
  8. Specify Disk File:
    1. Disk file: “d:\vm\rac\sharedstorage\ocfs2disk.vmdk.”를 입력합니다.
    2. Advanced를 클릭합니다.
  9. Add Hardware Wizard:
    1. Virtual device node: SCSI 1:0을 선택합니다.
    2. Mode: 모든 공유 디스크에 대해 Independent, Persistent를 선택합니다.
    3. Finish를 클릭합니다.

마지막으로, 사설 인터커넥트를 위한 가상 네트워크 카드를 추가하고 플로피 드라이브를 제거합니다.

  1. VMware Server Console: dit virtual machine settings를 클릭합니다.
  2. Virtual Machine Settings: Add를 클릭합니다.
  3. Add Hardware Wizard: Next를 클릭합니다.
  4. Hardware Type:
    1. Hardware types: Ethernet Adapter.
  5. Network Type:
    1. Host-only: A private network shared with the host
    2. Finish를 클릭합니다.
  6. Virtual Machine Settings:
    1. Floppy를 선택하고 Remove를 클릭합니다.
  7. Virtual Machine Settings: OK를 클릭합니다.

가상 머신 설정 파일의 수정: 두 대의 가상 RAC 노드 간에 디스크를 공유하기 위해서는 추가로 매개변수를 설정해 주어야 합니다. "d:\vm\rac\rac1\Red Hat Enterprise Linux 4.vmx" 파일을 열고 아래 굵은 글씨체로 표시된 매개변수들을 추가해 줍니다.

config.version = "8"

virtualHW.version = "4"

scsi0.present = "TRUE"

scsi0.virtualDev = "lsilogic"

memsize = "700"

scsi0:0.present = "TRUE"

scsi0:0.fileName = "localdisk.vmdk"

ide1:0.present = "TRUE"

ide1:0.fileName = "auto detect"

ide1:0.deviceType = "cdrom-raw"

floppy0.fileName = "A:"

Ethernet0.present = "TRUE"

displayName = "rac1"

guestOS = "rhel4"

priority.grabbed = "normal"

priority.ungrabbed = "normal"

 

disk.locking = "FALSE"

diskLib.dataCacheMaxSize = "0"

scsi1.sharedBus = "virtual"

 

scsi1.present = "TRUE"

scsi1:0.present = "TRUE"

scsi1:0.fileName = "D:\vm\rac\sharedstorage\ocfs2disk.vmdk"

scsi1:0.mode = "independent-persistent"

scsi1:0.deviceType = "disk"

scsi1:1.present = "TRUE"

scsi1:1.fileName = "D:\vm\rac\sharedstorage\asmdisk1.vmdk"

scsi1:1.mode = "independent-persistent"

scsi1:1.deviceType = "disk"

scsi1:2.present = "TRUE"

scsi1:2.fileName = "D:\vm\rac\sharedstorage\asmdisk2.vmdk"

scsi1:2.mode = "independent-persistent"

scsi1:2.deviceType = "disk"

scsi1:3.present = "TRUE"

scsi1:3.fileName = "D:\vm\rac\sharedstorage\asmdisk3.vmdk"

scsi1:3.mode = "independent-persistent"

scsi1:3.deviceType = "disk"

scsi1.virtualDev = "lsilogic"

ide1:0.autodetect = "TRUE"

floppy0.present = "FALSE"

Ethernet1.present = "TRUE"

Ethernet1.connectionType = "hostonly"

3. 첫 번째 가상 머신에 Enterprise Linux 설치하기

오라클 웹사이트에서 Enterprise Linux를 다운로드하고 파일 압축을 풉니다:

  • Enterprise-R4-U4-i386-disc1.iso
  • Enterprise-R4-U4-i386-disc2.iso
  • Enterprise-R4-U4-i386-disc3.iso
  • Enterprise-R4-U4-i386-disc4.iso
  1. VMware Server 콘솔에서 오른쪽 패널의 CD-ROM 디바이스를 더블 클릭하고 disk 1을 위한 ISO 이미지(Enterprise-R4-U4-i386-disc1.iso)를 선택합니다.
  2. VMware Server console:
    • Start this virtual machine을 클릭합니다.
  3. Enter를 눌러 그래픽 모드에서 설치하도록 선택합니다.
  4. 미디어 테스트를 생략하고 설치를 시작합니다.
  5. Welcome to enterprise Linux: Next를 클릭합니다.
  6. Language Selection: <사용할 언어를 선택합니다.>
  7. Keyboard Configuration: <사용할 키보드를 선택합니다>
  8. Installation Type: Custom.
  9. Disk Partitioning Setup: Manually partition with Disk Druid.
    • Warning: Yes를 클릭하여 모든 디바이스(sda, sdb, sdc, sdd, sde)를 초기화합니다.
  10. Disk Setup: /dev/sda를 더블 클릭하여 sda 드라이브에 마운트 포인트(/, /u01)와 스왑 공간을 위한 디스크 공간을 할당합니다. OCFS2, ASM을 위한 드라이브 설정은 뒷부분에서 수행하게 됩니다.
    • Add Partition:
      • Mount Point: /
      • File System Type: ext3
      • Start Cylinder: 1
      • End Cylinder: 910
      • File System Type: Swap
      • Start Cylinder: 911
      • End Cylinder: 1170
      • Mount Point: /u01
      • File System Type: ext3
      • Start Cylinder: 1171
      • End Cylinder: 2610

  1. Boot Loader Configuration: 디폴트 /dev/sda1만을 선택하고 나머지는 선택되지 않은 상태로 둡니다.
  2. Network Configuration:
    1. Network Devices
      • eth0을 선택합니다.
        1. Configure Using DHCP의 선택을 해제합니다.
        2. Activate on boot을 선택합니다.
        3. IP Address: “192.168.2.131.”을 입력합니다.
        4. Netmask: “255.255.255.0.”을 입력합니다.
      • eth1을 선택합니다.
        1. Configure Using DHCP의 선택을 해제합니다.
        2. Activate on boot을 선택합니다.
        3. IP Address: “10.10.10.31.”을 입력합니다.
        4. Netmask: “255.255.255.0.”을 입력합니다.
    2. Hostname
      • manually를 선택하고 “rac1.mycorpdomain.com.”을 입력합니다.
    3. Miscellaneous Settings
      • Gateway: “192.168.2.1.”을 입력합니다.
      • Primary DNS: <옵션>
      • Secondary DNS: <옵션>
  3. Firewall Configuration:
    1. No Firewall을 선택합니다. 방화벽이 활성화된 경우, ocfs2 파일 시스템을 마운트하는 과정에서 “mount.ocfs2: Transport endpoint is not connected while mounting” 에러가 발생할 수 있습니다.
    2. Enable SELinux?: Active.
  4. Warning – No Firewall: Proceed를 클릭합니다.
  5. Additional Language Support: <사용할 언어를 선택합니다>.
  6. Time Zone Selection: <표준 시간대를 선택합니다>
  7. Set Root Password: <root 패스워드를 입력합니다>
  8. Package Group Selection:
    1. X Window System을 선택합니다.
    2. GNOME Desktop Environment를 선택합니다.
    3. Editors를 선택합니다.
      • Details를 클릭하고 사용할 텍스트 편집기를 선택합니다.
    4. Graphical Internet을 선택합니다.
    5. Text-based Internet을 선택합니다.
    6. Office/Productivity를 선택합니다.
    7. Sound and Video를 선택합니다.
    8. Graphics를 선택합니다.
    9. Server Configuration Tools를 선택합니다.
    10. FTP Server를 선택합니다.
    11. Legacy Network Server를 선택합니다.
      • Details를 클릭합니다.
        1. rsh-server를 선택합니다.
        2. Sstrong>telnet-server를 선택합니다.
    12. Development Tools를 선택합니다.
    13. Legacy Software Development를 선택합니다.
    14. Administration Tools를 선택합니다.
    15. System Tools를 선택합니다.
      • Details를 클릭합니다. 디폴트로 선택된 패키지와 별도로 아래 패키지를 선택합니다.
        1. ocfs-2-2.6.9-42.0.0.0.1EL(UP 커널을 위한 드라이버)을 선택하거나, 또는 ocfs-2-2.6.9-42.0.0.0.1ELsmp(SMP 커널을 위한 드라이버)를 선택합니다.
        2. ocfs2-tools를 선택합니다.
        3. ocfs2console을 선택합니다.
        4. oracle oracleasm-2.6.9-42.0.0.0.1EL(UP 커널을 위한 드라이버)를 선택하거나, 또는 oracleasm-2.6.9-42.0.0.0.1ELsmp(SMP 커널을 위한 드라이버)를 선택합니다.
        5. sysstat을 선택합니다.
    16. Printing Support를 선택합니다.
  9. About to Install: Next를 클릭합니다.
  10. Required Install Media: Continue를 클릭합니다.
  11. Change CD-ROM: VMware Server 콘솔에서 Ctrl-D를 눌러 Virtual Machine Settings를 실행합니다. CD-ROM 디바이스를 클릭하고 disk 2를 위한 ISO 이미지(Enterprise-R4-U4-i386-disc2.iso)를 선택하고, 다시 disk3을 위한 ISO 이미지(Enterprise-R4-U4-i386-disc3.iso)를 선택합니다.
  12. 설치 작업이 종료된 후,
    1. VMware Server 콘솔에서 Ctrl-D를 눌러 Virtual Machine Settings를 실행합니다. CD-ROM 디바이스를 클릭하고 Use physical drive를 클릭합니다.
    2. Reboot를 클릭합니다.
  13. Welcome: Next를 클릭합니다.
  14. License Agreement: Yes, I agree to the License Agreement를 선택합니다.
  15. Date and Time: 날짜와 시간을 설정합니다.
  16. Display: <원하는 해상도를 선택합니다>
  17. System User: 항목을 빈 칸으로 남겨두고 Next를 클릭합니다.
  18. Additional CDs: Next를 클릭합니다.
  19. Finish Setup: Next를 클릭합니다.

축하합니다. 이것으로 VMware Server Enterprise Linux를 설치하는 작업을 완료하였습니다!

VMware Tools설치. VMware Tools는 호스트 머신과 게스트 머신 간의 시간을 동기화하기 위해 사용됩니다.

VMware 콘솔에서 root 사용자로 로그인합니다.

  1. VM을 클릭한 후 Install VMware Tools를 선택합니다.
  2. rac1 – Virtual Machine: Install을 클릭합니다.
  3. 데스크탑의 VMware Tools 아이콘을 더블 클릭하여 애플리케이션을 실행합니다.
  4. cdrom: VMwareTools-1.0.1-29996.i386.rpm을 더블 클릭합니다.

  1. Completed System Preparation: Continue를 클릭합니다.
  2. 터미널을 열고 vmware-config-tools.pl을 실행합니다.
    • 원하는 디스플레이 사이즈를 입력합니다

게스트 OS와 호스트 OS의 시간 동기화. Oracle Clusterware Oracle Database 소프트웨어를 설치하는 과정에서 오라클 인스톨러는 먼저 로컬 노드에 소프트웨어를 설치한 후 원격 노드에 소프트웨어를 카피하는 작업을 수행합니다. 양쪽 RAC 노드의 날짜와 시간이 동기화되지 않은 경우 아래와 같은 에러가 발생할 수도 있습니다.

"/bin/tar: ./inventory/Components21/oracle.ordim.server/10.2.0.1.0: time

stamp  2006-11-04 06:24:04 is 25 s in the future"

따라서 Oracle RAC 설치를 수행하기 전에, 가상 머신과 호스트 머신의 시간을 동기화해 주어야 합니다. root 사용자로 로그인하여 아래 작업을 실행하여 시간을 동기화합니다.

  1. “vmware-toolbox”를 실행하여 VMware Tools Properties 윈도우를 엽니다. Options 탭에서 Time synchronization between the virtual machine and the host operating system을 선택합니다. tools.syncTime = "TRUE" 매개변수가 가상 머신 설정 파일(d:\vm\rac\rac1\Red Hat Enterprise Linux 4.vmx)에 추가된 것을 확인할 수 있을 것입니다.
  2. 2. "/boot/grub/grub.conf" 파일을 편집하여 kernel /boot/ 라인에 "clock=pit nosmp noapic nolapic" 옵션을 추가합니다. 이제 양쪽 커널에 옵션을 추가하는 작업을 완료했습니다. 변경 작업은 현재 사용 중인 커널에 대해서만 수행해 주면 됩니다.

3.  #boot=/dev/sda

4.  default=0

5.  timeout=5

6.  splashimage=(hd0,0)/boot/grub/splash.xpm.gz

7.  hiddenmenu

8.  title Enterprise (2.6.9-42.0.0.0.1.ELsmp)

9.          root (hd0,0)

10.        kernel /boot/vmlinuz-2.6.9-42.0.0.0.1.ELsmp ro

11.root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic

12.        initrd /boot/initrd-2.6.9-42.0.0.0.1.ELsmp.img

13.title Enterprise-up (2.6.9-42.0.0.0.1.EL)

14.        root (hd0,0)

15.        kernel /boot/vmlinuz-2.6.9-42.0.0.0.1.EL ro root=LABEL=/

16.rhgb quiet clock=pit nosmp noapic nolapic

17.        initrd /boot/initrd-2.6.9-42.0.0.0.1.EL.img

  1. rac1을 리부트합니다.

# reboot

오라클 사용자의 생성 root 사용자로 로그인하여 아래와 같이 실행합니다:

# groupadd oinstall

# groupadd dba

# mkdir -p /export/home/oracle /ocfs

# useradd -d /export/home/oracle -g oinstall -G dba -s /bin/ksh oracle

# chown oracle:dba /export/home/oracle /u01

# passwd oracle

New Password:

Re-enter new Password:

passwd: password successfully changed for oracle

오라클 사용자 환경 파일의 생성.

/export/home/oracle/.profile

export PS1="`/bin/hostname -s`-> "

export EDITOR=vi

export ORACLE_SID=devdb1

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/bin:

/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin

umask 022

파일시스템 디렉토리 구조의 생성. oracle 사용자로 로그인하여 아래와 같이 실행합니다:

rac1-> mkdir $ORACLE_BASE/admin

rac1-> mkdir $ORACLE_HOME

rac1-> mkdir $ORA_CRS_HOME

rac1-> mkdir -p /u01/oradata/devdb

oracle 사용자의 Shell Limit 설정. 텍스트 편집기를 사용하여 아래 라인을 /etc/security/limits.conf, /etc/pam.d/login, /etc/profile에 추가합니다. 보다 상세한 정보는 제품 문서에서 확인하실 수 있습니다.

/etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

/etc/pam.d/login

session required /lib/security/pam_limits.so

/etc/profile

if [ $USER = "oracle" ]; then

        if [ $SHELL = "/bin/ksh" ]; then

               ulimit -p 16384

               ulimit -n 65536

        else

               ulimit -u 16384 -n 65536

        fi

fi

Enterprise Linux 소프트웨어 패키지의 설치. 오라클 소프트웨어 설치를 위해 추가해 주어야 하는 패키지가 아래와 같습니다. Enterprise Linux 64 비트 버전을 설치한 경우에는, 인스톨러가 이 패키지를 이미 설치한 상태이어야 합니다.

  • libaio-0.3.105-2.i386.rpm
  • openmotif21-2.1.30-11.RHEL4.6.i386.rpm

root 사용자로 로그인하여 ISO CD에서 패키지를 추출하고 아래 커맨드를 실행합니다.

# ls

libaio-0.3.105-2.i386.rpm  openmotif21-2.1.30-11.RHEL4.6.i386.rpm

#

# rpm -Uvh *.rpm

warning: libaio-0.3.105-2.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516

Preparing...               

########################################### [100%]

   1:openmotif21           

########################################### [ 50%]

   2:libaio                

########################################### [100%]

커널 매개변수 설정. 텍스트 편집기를 사용하여 /etc/sysctl.conf에 아래 라인을 추가합니다. 변경 사항을 즉시 적용하기 위해 "/sbin/sysctl -p"를 실행합니다.

# more  /etc/sysctl.conf

kernel.shmall                = 2097152

kernel.shmmax                = 2147483648

kernel.shmmni                = 4096

kernel.sem                   = 250 32000 100 128

fs.file-max                  = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default        = 1048576

net.core.rmem_max            = 1048576

net.core.wmem_default        = 262144

net.core.wmem_max            = 262144

/etc/hosts 파일의 수정.

# more /etc/hosts

127.0.0.1               localhost

192.168.2.131           rac1.mycorpdomain.com        rac1

192.168.2.31            rac1-vip.mycorpdomain.com    rac1-vip

10.10.10.31             rac1-priv.mycorpdomain.com   rac1-priv

192.168.2.132           rac2.mycorpdomain.com        rac2

192.168.2.32            rac2-vip.mycorpdomain.com    rac2-vip

10.10.10.32             rac2-priv.mycorpdomain.com   rac2-priv

hangcheck-timer 커널 모듈의 설정. hangcheck timer 커널 모듈은 시스템의 상태를 모니터링하고 장애가 발생한 RAC 노드를 재시작합니다. 노드의 장애 상황을 파악하기 위해 사용되는 두 가지 매개변수로 hangcheck_tick(시스템 모니터링 빈도 정의) hangcheck_margin(RAC 노드의 리셋을 수행하기 위한 최대 지연 허용 시간)이 있습니다.

/etc/modprobe.conf 파일에 아래 라인을 추가하여 hangcheck 커널 모듈 매개변수를 설정해 줍니다.

/etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

모듈을 즉시 로드하기 위해 "modprobe -v hangcheck-timer" 명령을 실행합니다.

OCFS2, Oracle ASM을 위한 디스크 파티션 생성. OCFS2(/dev/sdb) Oracle ASM(/dev/sdc, /dev/sdd, /dev/sde)을 위한 로우 디스크를 생성합니다.

rac1에서 root 사용자로 로그인하여 아래와 같이 실행합니다:

# fdisk /dev/sdb

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-512, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-512, default 512):

Using default value 512

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

# fdisk /dev/sdc

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-391, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-391, default 391):

Using default value 391

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

# fdisk /dev/sdd

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-391, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-391, default 391):

Using default value 391

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

# fdisk /dev/sde

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-261, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):

Using default value 261

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1         910     7309543+  83  Linux

/dev/sda2             911        1170     2088450   82  Linux swap

/dev/sda3            1171        2610    11566800   83  Linux

 

Disk /dev/sdb: 536 MB, 536870912 bytes

64 heads, 32 sectors/track, 512 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         512      524272   83  Linux

 

Disk /dev/sdc: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1               1         391     3140676   83  Linux

 

Disk /dev/sdd: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdd1               1         391     3140676   83  Linux

 

Disk /dev/sde: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sde1               1         261     2096451   83  Linux

oracleasmlib 패키지 설치. OTN에서 ASM 라이브러리를 다운로드하고 root 사용자로 ASM RPM을 설치합니다.

 # rpm -Uvh oracleasmlib-2.0.2-1.i386.rpm

Preparing...               

########################################### [100%]

   1:oracleasmlib          

########################################### [100%]

이 단계에서, 아래와 같은 ASM 패키지가 설치된 상태이어야 합니다.

[root@rac1 swdl]# rpm -qa | grep oracleasm

oracleasm-support-2.0.3-2

oracleasm-2.6.9-42.0.0.0.1.ELsmp-2.0.3-2

oracleasmlib-2.0.2-1

ASM 디스크를 위한 로우 디바이스 매핑. 로우 디바이스 매핑(raw device mapping)은 표준 Linux I/O를 이용하여 ASM 디스크를 생성하는 경우에만 필요합니다. ASM 디스크를 생성하는 또 다른 방법으로 오라클이 제공하는 ASM 라이브러리 드라이버를 이용할 수도 있습니다. ASM 라이브러리 드라이버를 이용하여 ASM 디스크를 설정하는 방법은 뒷부분에서 설명합니다.

아래 작업을 수행하여 로우 디바이스를 앞에서 생성한 공유 파티션에 매핑합니다. 로우 디바이스는 클러스터 노드가 부팅될 때마다 블록 디바이스에 바인딩되어야 합니다.

/etc/sysconfig/rawdevices 파일에 아래 라인을 추가합니다.

/etc/sysconfig/rawdevices

/dev/raw/raw1 /dev/sdc1

/dev/raw/raw2 /dev/sdd1

/dev/raw/raw3 /dev/sde1

매핑 설정을 즉시 적용하려면, root 사용자로 로그인하여 아래 커맨드를 실행합니다:

# /sbin/service rawdevices restart

Assigning devices:

           /dev/raw/raw1  -->   /dev/sdc1

/dev/raw/raw1:  bound to major 8, minor 33

           /dev/raw/raw2  -->   /dev/sdd1

/dev/raw/raw2:  bound to major 8, minor 49

           /dev/raw/raw3  -->   /dev/sde1

/dev/raw/raw3:  bound to major 8, minor 65

done

 

# chown oracle:dba /dev/raw/raw[1-3]

# chmod 660 /dev/raw/raw[1-3]

# ls -lat /dev/raw/raw*

crw-rw----  1 oracle dba 162, 3 Nov  4 07:04 /dev/raw/raw3

crw-rw----  1 oracle dba 162, 2 Nov  4 07:04 /dev/raw/raw2

crw-rw----  1 oracle dba 162, 1 Nov  4 07:04 /dev/raw/raw1

oracle 사용자로 로그인하여 아래와 같이 실행합니다:

rac1-> ln -sf /dev/raw/raw1 /u01/oradata/devdb/asmdisk1

rac1-> ln -sf /dev/raw/raw2 /u01/oradata/devdb/asmdisk2

rac1-> ln -sf /dev/raw/raw3 /u01/oradata/devdb/asmdisk3

/etc/udev/permissions.d/50-udev.permissions 수정 로우 디바이스는 부팅 시점에 리매핑 됩니다. 디폴트 설정에서 로우 디바이스의 오너십은 부팅 시점에 root 사용자에게 귀속됩니다. 하지만 oracle 사용자에게 오너십이 귀속되지 않는 경우, ASM이 공유 파티션에 접근할 때 문제가 발생할 수 있습니다. /etc/udev/permissions.d/50-udev.permissions 파일의 “raw/*:root:disk:0660” 라인을 주석 처리하고 새로운 라인 “raw/*:oracle:dba:0660”을 추가합니다.

/etc/udev/permissions.d/50-udev.permissions

# raw devices

ram*:root:disk:0660

#raw/*:root:disk:0660

raw/*:oracle:dba:0660

4. 두 번째 가상 머신의 생성 및 설정

두 번째 가상 머신을 생성하기 위해, 첫 번째 가상 머신을 셧다운하고, d:\vm\rac\rac1의 모든 파일을 d:\vm\rac\rac2로 복사한 다음 몇 가지 설정을 변경해 줍니다.

네트워크 설정 변경.

  1. rac1에서 root 사용자로 로그인한 후,
    " # shutdown ?h now"
    를 실행합니다.
  2. 호스트 시스템에서 rac1 폴더의 모든 파일을 rac2로 복사합니다.
    D:\>copy d:\vm\rac\rac1 d:\vm\rac\rac2
  3. VMware Server 콘솔에서 Ctrl-O를 눌러 두 번째 가상 머신, d:\rac\rac2\Red Hat Enterprise Linux 4.vmx를 엽니다.
  4. VMware Server console:
    • o 가상 머신의 이름을 rac1에서 rac2로 변경합니다. rac1 탭을 마우스 오른쪽 버튼으로 클릭하고 Settings를 선택합니다.
      • Options탭을 선택합니다.
        1. Virtual machine name: Virtual machine name: “rac2"
        를 입력합니다.

o    Start this virtual machine를 클릭하여 (rac1이 셧다운된 상태에서) rac2를 시작합니다.

o    rac2 – Virtaul Machine: Create a new identifier를 클릭합니다.

  1. 5. root 사용자로 로그인한 상태에서 system-config-network를 실행하여 네트워크 설정을 변경합니다.

IP Address: 각각의 이더넷 디바이스를 더블 클릭하고 아래 표를 참고하여 변경 작업을 수행합니다.

디바이스

IP 주소

서브넷 마스크

디폴트 게이트웨이 주소

eth0

192.168.2.132

255.255.255.0

192.168.2.1

eth1

10.10.10.32

255.255.255.0

<공란으로 비워 둠>

MAC Address: Hardware Device탭으로 이동하여 각 이더넷 디바이스의 새로운 MAC 어드레스를 조회합니다.

Hostname and DNS: 아래 표를 참고하여 DNS 탭의 항목을 변경하고 Ctrl-S를 눌러 저장합니다.

Hostname

Primary DNS

Secondary DNS

DNS search path

rac2.mycorpdomain.com

DNS IP 주소를 입력하거나 공란으로 비워 둡니다.

DNS IP 주소를 입력하거나 공란으로 비워 둡니다.

디폴트 설정을 승인하거나 공란으로 비워 둡니다.

마지막으로, 각 이더넷 디바이스를 활성화합니다.

/etc/hosts 파일 수정. /etc/hosts 파일에 아래 항목을 추가합니다.

127.0.0.1 localhost

VIPCA
Oracle Clusterware 소프트웨어 설치 과정에서 루프백 주소를 사용하려 시도하게 됩니다.

/export/home/oracle/.profile 변경. ORACLE_SID 값을 devdb2로 변경합니다.

SSH를 이용한 user equivalence의 설정. Cluster Ready Services(CRS) RAC 설치 과정에서, Oracle Universal Installer(OUI) oracle 사용자로 (패스워드를 별도로 입력하지 않고) 모든 RAC 노드에 소프트웨어를 복사할 수 있어야 합니다. Oracle 10g에서는 rsh 대신 ssh를 이용하여 이 작업을 수행할 수 있습니다.

user equivalence를 설정하기 위해, oracle 사용자를 위한 퍼블릿/프라이빗 키를 양쪽 노드에 생성해 줍니다. rac1을 시작한 후, 양쪽 노드에서 아래와 같이 작업을 수행해 줍니다.
먼저 rac1에서 아래와 같이 작업합니다:

rac1-> mkdir ~/.ssh

rac1-> chmod 700 ~/.ssh

rac1-> ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/export/home/oracle/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /export/home/oracle/.ssh/id_rsa.

Your public key has been saved in /export/home/oracle/.ssh/id_rsa.pub.

The key fingerprint is:

87:54:4f:92:ba:ed:7b:51:5d:1d:59:5b:f9:44:da:b6 oracle@rac1.mycorpdomain.com

rac1-> ssh-keygen -t dsa

Generating public/private dsa key pair.

Enter file in which to save the key (/export/home/oracle/.ssh/id_dsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /export/home/oracle/.ssh/id_dsa.

Your public key has been saved in /export/home/oracle/.ssh/id_dsa.pub.

The key fingerprint is:

31:76:96:e6:fc:b7:25:04:fd:70:42:04:1f:fc:9a:26 oracle@rac1.mycorpdomain.com

다음으로 rac2에서 아래와 같이 작업합니다:

rac2-> mkdir ~/.ssh

rac2-> chmod 700 ~/.ssh

rac2-> ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/export/home/oracle/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /export/home/oracle/.ssh/id_rsa.

Your public key has been saved in /export/home/oracle/.ssh/id_rsa.pub.

The key fingerprint is:

29:5a:35:ac:0a:03:2c:38:22:3c:95:5d:68:aa:56:66 oracle@rac2.mycorpdomain.com

rac2-> ssh-keygen -t dsa

Generating public/private dsa key pair.

Enter file in which to save the key (/export/home/oracle/.ssh/id_dsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /export/home/oracle/.ssh/id_dsa.

Your public key has been saved in /export/home/oracle/.ssh/id_dsa.pub.

The key fingerprint is:

4c:b2:5a:8d:56:0f:dc:7b:bc:e0:cd:3b:8e:b9:5c:7c oracle@rac2.mycorpdomain.com

rac1에서 아래와 같이 작업합니다:

rac1-> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

rac1-> cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

rac1-> ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

The authenticity of host 'rac2 (192.168.2.132)' can't be established.

RSA key fingerprint is 63:d3:52:d4:4d:e2:cb:ac:8d:4a:66:9f:f1:ab:28:1f.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'rac2,192.168.2.132' (RSA) to the list of known hosts.

oracle@rac2's password:

rac1-> ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

oracle@rac2's password:

rac1-> scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys

oracle@rac2's password:

authorized_keys                           100% 1716     1.7KB/s   00:00

각 노드의 연결을 테스트합니다. 아래 명령을 두 번째 실행했을 때 패스워드를 묻는 프롬프트가 뜨지 않음을 확인합니다.

ssh rac1 date

ssh rac2 date

ssh rac1-priv date

ssh rac2-priv date

ssh rac1.mycorpdomain.com date

ssh rac2.mycorpdomain.com date

ssh rac1-priv.mycorpdomain.com date

ssh rac2-priv.mycorpdomain.com date

5. Oracle Automatic Storage Management (ASM) 설정

Oracle ASM은 오라클 데이터베이스와 긴밀하게 통합되어 있으며 오라클의 데이터베이스 관리 툴과 연동합니다. Oracle ASM은 데이터베이스 스토리지 관리 업무를 단순화하고 로우 디스크 I/O 성능을 개선하는 효과를 제공합니다.

ASMLib 설정. root 사용자로 로그인하여 양쪽 노드에서 ASMLib을 설정해 줍니다.

# /etc/init.d/oracleasm configure

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  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 []: dba

Start Oracle ASM library driver on boot (y/n) [n]: y

Fix permissions of Oracle ASM disks on boot (y/n) [y]: y

Writing Oracle ASM library driver configuration:           [  OK  ]

Loading module "oracleasm":                                [  OK  ]

Mounting ASMlib driver filesystem:                         [  OK  ]

Scanning system for ASM disks:                             [  OK  ]

ASM 디스크의 생성. root 사용자로 두 노드 중 하나에서 ASM 디스크를 생성합니다.

# /etc/init.d/oracleasm createdisk VOL1 /dev/sdc1

Marking disk "/dev/sdc1" as an ASM disk:                   [  OK  ]

# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd1

Marking disk "/dev/sdd1" as an ASM disk:                   [  OK  ]

# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1

Marking disk "/dev/sde1" as an ASM disk:                   [  OK  ]

Verify that the ASM disks are visible from every node.

# /etc/init.d/oracleasm scandisks

Scanning system for ASM disks:                      [  OK  ]

# /etc/init.d/oracleasm listdisks

VOL1

VOL2

VOL3

VOL4

6. Oracle Cluster File System(OCFS2) 설정

OCFS2는 오라클이 개발한 범용 클러스터 파일 시스템으로 Enterprise Linux 커널과 통합되어 있습니다. OCFS2는 전체 노드가 클러스터 파일 시스템에 동시 접근하는 것을 가능하게 하며, 로우 디바이스 관리의 필요성을 제거합니다. 본 가이드에서는 OCFS2 파일 시스템에 OCR Voting Disk를 위치시키는 방법을 사용합니다. OCFS2에 대한 자세한 정보는 OCFS2 사용자 가이드에서 확인하실 수 있습니다.

Enterprise Linux 설치 과정에서 이미 OCFS2 RPM이 설치되었을 것입니다. 양쪽 노드에 RPM이 선택되었는지 확인합니다.

rac1-> rpm -qa | grep ocfs

ocfs2-tools-1.2.2-2

ocfs2console-1.2.2-2

ocfs2-2.6.9-42.0.0.0.1.ELsmp-1.2.3-2

OCFS2 설정 파일의 생성. root 사용자로 로그인하여 아래와 같이 실행합니다:

# ocfs2console

  1. OCFS2 Console: Cluster, Configure Nodes를 선택합니다.
  2. “The cluster stack has been started”: Close를 클릭합니다.
  3. Node Configuration: Add를 클릭합니다.
  4. Add Node: 아래 노드를 추가한 후 Apply를 클릭합니다.
    • Name: rac1
    • IP Address: 192.168.2.131
    • IP Port: 7777
    • Name: rac2
    • IP Address: 192.168.2.132
    • IP Port: 7777
  5. 5. 생성된 설정 파일의 내용을 확인합니다.

6.  # more /etc/ocfs2/cluster.conf

7.  node:

8.          ip_port = 7777

9.          ip_address = 192.168.2.131

10.        number = 0

11.        name = rac1

12.        cluster = ocfs2

13. 

14.node:

15.        ip_port = 7777

16.        ip_address = 192.168.2.132

17.        number = 1

18.        name = rac2

19.        cluster = ocfs2

20. 

21.cluster:

22.        node_count = 2

23.        name = ocfs2

  1. 24. 설정 파일을 rac2로 복사합니다. 위에서 설명한 과정을 rac2에서 재실행하거나, 또는 rac1 OCFS2 콘솔에서 Cluster, Propagate Configuration을 선택하여 설정 파일을 rac2로 복사할 수 있습니다.

CO2CB 드라이버 설정. O2CB는 노드와 클러스터 파일 시스템 간의 커뮤니케이션을 관리하는 일련의 클러스터링 서비스로 구성됩니다. 각 서비스에 대한 설명이 아래와 같습니다:

  • NM: Node Manager ? cluster.conf에 설정된 모든 노드의 상태를 추적
  • HB: Heartbeat 서비스 ? 노드가 클러스터에 가입/탈퇴하는 경우 업/다운 통보를 전달
  • TCP: 노드 간의 커뮤니케이션을 처리
  • DLM: Distributed Lock Manager ? , 락의 소유자 및 상태 정보를 추적
  • CONFIGFS: 사용자 공간(/config)에 마운트되는 구성 파일 시스템
  • DLMFS: 커널 스페이스 DLM을 위한 사용자 공간 인터페이스

양쪽 노드에 아래 작업을 수행하여 부팅 시 O2CB가 실행되도록 설정해 줍니다.

heartbeat dead threshold를 묻는 프롬프트에서 7 이상의 값을 입력하여 낮은 성능의 IDE 디스크 드라이브로 인해 노드 크래시가 발생하는 것을 방지해 주어야 합니다. heartbeat dead threshold fence time을 계산하기 위한 변수로 활용됩니다.

Fence time (seconds) = (heartbeat dead threshold -1) * 2

본 가이드의 구성에서는 120 초의 fence time이면 충분합니다. heartbeat dead threshold 값은 양쪽 노드에 동일하게 설정되어야 합니다.

root 사용자로 로그인하여 아래와 같이 실행합니다:

# /etc/init.d/o2cb unload

Stopping O2CB cluster ocfs2: OK

Unmounting ocfs2_dlmfs filesystem: OK

Unloading module "ocfs2_dlmfs": OK

Unmounting configfs filesystem: OK

Unloading module "configfs": OK

 

# /etc/init.d/o2cb configure

Configuring the O2CB driver.

 

This will configure the on-boot properties of the O2CB driver.

The following questions will determine whether the driver is loaded on

boot.  The current values will be shown in brackets ('[]').  Hitting

 without typing an answer will keep that current value.  Ctrl-C

will abort.

 

Load O2CB driver on boot (y/n) [y]: y

Cluster to start on boot (Enter "none" to clear) [ocfs2]:

Specify heartbeat dead threshold (>=7) [7]: 61

Writing O2CB configuration: OK

Loading module "configfs": OK

Mounting configfs filesystem at /config: OK

Loading module "ocfs2_nodemanager": OK

Loading module "ocfs2_dlm": OK

Loading module "ocfs2_dlmfs": OK

Mounting ocfs2_dlmfs filesystem at /dlm: OK

Starting O2CB cluster ocfs2: OK

파일 시스템의 포맷. 파일 시스템의 포맷, 마운팅을 수행하기 전에, OC2B가 양쪽 노드에서 온라인 상태인지 확인합니다. O2CB heartbeat는 파일 시스템이 마운트되기 전까지 활성화되지 않습니다.

# /etc/init.d/o2cb status

Module "configfs": Loaded

Filesystem "configfs": Mounted

Module "ocfs2_nodemanager": Loaded

Module "ocfs2_dlm": Loaded

Module "ocfs2_dlmfs": Loaded

Filesystem "ocfs2_dlmfs": Mounted

Checking O2CB cluster ocfs2: Online

Checking O2CB heartbeat: Not active

파일 시스템 포맷 작업은 두 노드 중 하나에서만 수행합니다. root 사용자로 rac1에 로그인하여 아래와 같이 실행합니다:

# ocfs2console

  1. OCFS2 Console: Tasks, Format을 선택합니다.
  2. Format:
    • Available devices: /dev/sdb1
    • Volume label: oracle
    • Cluster size: Auto
    • Number of node slots: 4
    • Block size: Auto
  3. OCFS2 Console: CTRL-Q를 눌러 종료합니다.

파일 시스템의 마운트. 파일 시스템을 마운트하기 위해, 양쪽 노드에서 아래와 같이 명령을 실행합니다.

# mount -t ocfs2 -o datavolume,nointr /dev/sdb1 /ocfs

부팅 시에 파일 시스템이 마운트되도록, 양쪽 노드의 /etc/fstab에 아래 라인을 추가해 줍니다.

/etc/fstab

/dev/sdb1 /ocfs ocfs2 _netdev,datavolume,nointr 0 0

Oracle Clusterware 디렉토리 생성. OCFS2 파일 시스템에 OCR, Voting Disk가 위치할 디렉토리를 생성합니다.

rac1에서 아래와 같이 작업합니다:

# mkdir /ocfs/clusterware

# chown -R oracle:dba /ocfs

이것으로 OCFS2의 셋업 과정을 완료하였습니다. 양쪽 노드의 공유 클러스터 파일 시스템에서 파일 읽기/쓰기를 수행할 수 있는지 확인합니다.

7. Oracle Clusterware 설치

다운로드를 완료한 후, rac1 oracle 사용자로 로그인하여 아래와 같이 실행합니다:

rac1-> /u01/staging/clusterware/runInstaller

  1. Welcome: Next를 클릭합니다.
  2. Specify Inventory directory and credentials:
    • Enter the full path of the inventory directory: /u01/app/oracle/oraInventory.
    • Specify Operating System group name: oinstall.
  3. Specify Home Details:
    • Name: OraCrs10g_home
    • /u01/app/oracle/product/10.2.0/crs_1
  4. Product-Specific Prerequisite Checks:
    • 물리적 메모리 요구사항에 관련한 경고를 무시합니다.
  5. Specify Cluster Configuration: Add를 클릭합니다.
    • Public Node Name: rac2.mycorpdomain.com
    • Private Node Name: rac2-priv.mycorpdomain.com
    • Virtual Host Name: rac2-vip.mycorpdomain.com
  6. Specify Network Interface Usage:
    • Interface Name: eth0
    • Subnet: 192.168.2.0
    • Interface Type: Public
    • Interface Name: eth1
    • Subnet: 10.10.10.0
    • Interface Type: Private
  7. Specify Oracle Cluster Registry (OCR) Location: External Redundancy를 선택합니다.
    구성의 단순화를 위해, 본 가이드에서는 OCR을 미러링하지 않는 것으로 합니다. 실제 운영 환경에서는 OCR 디스크의 가용성 개선을 위해 멀티플렉싱을 사용해야 합니다.
    • Specify OCR Location: /ocfs/clusterware/ocr
  8. Specify Voting Disk Location: External Redundancy를 선택합니다.
    구성의 단순화를 위해, 본 가이드에서는 Voting Disk를 미러링하지 않는 것으로 합니다.
    • Voting Disk Location: /ocfs/clusterware/votingdisk
  9. Summary: Install을 클릭합니다.
  10. Execute Configuration scripts: root 사용자로 로그인하여 아래 스크립트를 한 번에 하나씩 실행합니다. 현재 실행 중인 스크립트가 완료되기 전까지 다음 스크립트를 실행하지 않도록 주의합니다.
    • Execute /u01/app/oracle/oraInventory/orainstRoot.sh on rac1.
    • Execute /u01/app/oracle/oraInventory/orainstRoot.sh on rac2.
    • Execute /u01/app/oracle/product/10.2.0/crs_1/root.sh on rac1.
    • Execute /u01/app/oracle/product/10.2.0/crs_1/root.sh on rac2.


rac2
root.sh 스크립트는 VIPCA를 자동으로 호출하지만, "The given interface(s), "eth0" is not public. Public interfaces should be used to configure virtual IPs" 에러와 함께 실패합니다. 퍼블릭 인터페이스에 사설 IP 주소(192.168.x.x)가 사용되고 있기 때문에 Oracle Cluster Verification Utility(CVU)가 적절한 퍼블릭 인터페이스를 찾을 수 없는 것입니다. 이 문제를 해결하려면 VIPCA를 수동으로 실행해야 합니다.

  1. 11. root 사용자로 로그인하여 두 번째 노드에서 VIPCA를 수동으로 실행합니다.
    # /u01/app/oracle/product/10.2.0/crs_1/bin/vipca
  2. Welcome: Next를 클릭합니다.
  3. Network Interfaces: eth0를 선택합니다.
  4. Virtual IPs for cluster nodes:
    • Node name: rac1
    • IP Alias Name: rac1-vip
    • IP address: 192.168.2.31
    • Subnet Mask: 255.255.255.0
    • Node name: rac2
    • IP Alias Name: rac2-vip
    • IP address: 192.168.2.32
    • Subnet Mask: 255.255.255.0
  5. Summary: Finish를 클릭합니다.

  1. Configuration Assistant Progress Dialog: 설정을 완료한 후 OK를 클릭합니다.
  2. Configuration Results: Exit를 클릭합니다.
  3. rac1 Execute Configuration 스크립트 스크린으로 돌아가 OK를 클릭합니다.

  1. 19. Configuration Assistants: 모든 점검이 성공적으로 완료되었는지 확인합니다. OUI Clusterware 설치가 완료된 후 사후 점검 작업을 수행합니다. CVU가 실패한 경우 문제를 해결하고 다시 oracle 사용자로 아래 명령을 재실행합니다:

20.rac1-> /u01/app/oracle/product/10.2.0/crs_1/bin/cluvfy stage

21.-post crsinst -n rac1,rac2

22. 

23.Performing post-checks for cluster services setup

24. 

25.Checking node reachability...

26.Node reachability check passed from node "rac1".

27. 

28.Checking user equivalence...

29.User equivalence check passed for user "oracle".

30. 

31.Checking Cluster manager integrity...

32. 

33.Checking CSS daemon...

34.Daemon status check passed for "CSS daemon".

35. 

36.Cluster manager integrity check passed.

37. 

38.Checking cluster integrity...

39. 

40.Cluster integrity check passed

41. 

42.Checking OCR integrity...

43. 

44.Checking the absence of a non-clustered configuration...

45.All nodes free of non-clustered, local-only configurations.

46. 

47.Uniqueness check for OCR device passed.

48. 

49.Checking the version of OCR...

50.OCR of correct Version "2" exists.

51. 

52.Checking data integrity of OCR...

53.Data integrity check for OCR passed.

54. 

55.OCR integrity check passed.

56. 

57.Checking CRS integrity...

58. 

59.Checking daemon liveness...

60.Liveness check passed for "CRS daemon".

61. 

62.Checking daemon liveness...

63.Liveness check passed for "CSS daemon".

64. 

65.Checking daemon liveness...

66.Liveness check passed for "EVM daemon".

67. 

68.Checking CRS health...

69.CRS health check passed.

70. 

71.CRS integrity check passed.

72. 

73.Checking node application existence...

74. 

75.Checking existence of VIP node application (required)

76.Check passed.

77. 

78.Checking existence of ONS node application (optional)

79.Check passed.

80. 

81.Checking existence of GSD node application (optional)

82.Check passed.

83. 

84.Post-check for cluster services setup was successful.

  1. End of Installation: Exit를 클릭합니다.

8. Oracle Database 10g Release 2 설치

다운로드를 완료한 후, rac1 oracle 사용자로 로그인하여 아래와 같이 실행합니다:

rac1-> /u01/staging/database/runInstaller

  1. Welcome: Next를 클릭합니다.
  2. Select Installation Type:
    • Enterprise Edition을 선택합니다.
  3. Specify Home Details:
    • Name: OraDb10g_home1
    • Path: /u01/app/oracle/product/10.2.0/db_1
  4. Specify Hardware Cluster Installation Mode:
    • Cluster Installation을 선택합니다.
    • Select All을 클릭합니다.
  5. Product-Specific Prerequisite Checks:
    • 물리적 메모리 요구사항에 관련한 경고를 무시합니다.
  6. Select Configuration Option:
    • Create a Database를 선택합니다.
  7. Select Database Configuration:
    • Advanced를 선택합니다.
  8. Summary: Install을 클릭합니다.
  9. Database Templates:
    • General Purpose를 선택합니다.
  10. Database identification:
    • Global Database Name: devdb
    • SID Prefix: devdb
  11. Management Options:
    • Configure the Database with Enterprise Manager를 선택합니다.
  12. Database Credentials:
    • “Use the Same Password for All Accounts”를 선택합니다.
  13. Storage Options:
    • Automatic Storage Management (ASM)을 선택합니다.
  14. Create ASM Instance:
    • SYS password: <SYS 패스워드를 입력합니다>.
    • Create initialization parameter file (IFILE)을 선택합니다.
  15. ASM Disk Groups:
    • Create New를 클릭합니다.
  16. Create Disk Group:
    두 개의 디스크 그룹(DG1, RECOVERYDEST)을 생성합니다.
    • Disk Group Name: DG1
    • Normal redundancy를 선택합니다.
    • Disk Path, ORCL:VOL1, ORCL:VOL2를 선택합니다. 표준 Linux I/O를 이용하여 ASM 디스크를 설정한 경우, /u01/oradata/devdb/asmdisk1 /u01/oradata/devdb/asmdisk2를 선택해 주어야 합니다.
    • OK를 클릭합니다.

o    Disk Group Name: RECOVERYDEST.

o    External redundancy를 선택합니다.

o    Disk Path, ORCL:VOL3을 선택합니다. 표준 Linux I/O를 이용하여 ASM 디스크를 설정한 경우, /u01/oradata/devdb/asmdisk3을 선택해 주어야 합니다.

o    OK를 클릭합니다.

  1. ASM Disk Groups: Next를 클릭합니다.

  1. Database File Locations:
    • Use Oracle-Managed Files를 선택합니다.
      • Database Area: +DG1
  2. Recovery Configuration:
    • Specify Flash Recovery Area를 선택합니다.
      • Flash Recovery Area: +RECOVERYDEST
      • Flash Recovery Area Size: 1500M
    • Enable Archiving를 선택합니다.
  3. Database Content:
    • 샘플 스키마를 선택 또는 해제합니다.
  4. Database Services:
    • Next를 클릭합니다. 나중에 DBCA 또는 srvctl을 이용하여 서비스를 추가로 생성, 변경할 수 있습니다.
  5. Initialization Parameters:
    • Custom를 선택합니다.
      • Shared Memory Management: Automatic
      • SGA Size: 200MB
      • PGA Size: 25MB
    • b. 필요에 따라 나머지 매개변수를 변경해 줍니다.
  6. Database Storage: Next를 클릭합니다.
  7. Creation Options:
    • Create Database를 선택합니다.
    • Finish를 클릭합니다.
  8. Summary: Click on OK.
  9. Database Configuration Assistant: Exit를 클릭합니다.

  1. Execute Configuration scripts: root 사용자로 로그인하여 아래 스크립트를 실행합니다.
    • rac1에서 /u01/app/oracle/product/10.2.0/db_1/root.sh 스크립트를 실행합니다.
    • rac2에서 /u01/app/oracle/product/10.2.0/db_1/root.sh 스크립트를 실행합니다.
  2. rac1 Execute Configuration 스크립트 스크린으로 돌아가 OK를 클릭합니다.
  3. End of Installation: Exit를 클릭합니다.

축하합니다. 이것으로 Enterprise Linux Oracle RAC Database 10g를 설치하는 작업을 완료하였습니다!

9. RAC 데이터베이스 환경 확인

이제 가상 환경에 2 노드 RAC 데이터베이스를 성공적으로 설치하였습니다. 잠시 시간을 내어 설치된 환경을 둘러 보기로 합시다.

애플리케이션 리소스의 상태 확인

rac1-> crs_stat -t

Name           Type           Target    State     Host

------------------------------------------------------------

ora.devdb.db   application    ONLINE    ONLINE    rac1

ora....b1.inst application    ONLINE    ONLINE    rac1

ora....b2.inst application    ONLINE    ONLINE    rac2

ora....SM1.asm application    ONLINE    ONLINE    rac1

ora....C1.lsnr application    ONLINE    ONLINE    rac1

ora.rac1.gsd   application    ONLINE    ONLINE    rac1

ora.rac1.ons   application    ONLINE    ONLINE    rac1

ora.rac1.vip   application    ONLINE    ONLINE    rac1

ora....SM2.asm application    ONLINE    ONLINE    rac2

ora....C2.lsnr application    ONLINE    ONLINE    rac2

ora.rac2.gsd   application    ONLINE    ONLINE    rac2

ora.rac2.ons   application    ONLINE    ONLINE    rac2

ora.rac2.vip   application    ONLINE    ONLINE    rac2

 

rac1-> srvctl status nodeapps -n rac1

VIP is running on node: rac1

GSD is running on node: rac1

Listener is running on node: rac1

ONS daemon is running on node: rac1

       

rac1-> srvctl status nodeapps -n rac2

VIP is running on node: rac2

GSD is running on node: rac2

Listener is running on node: rac2

ONS daemon is running on node: rac2

 

rac1-> srvctl status asm -n rac1

ASM instance +ASM1 is running on node rac1.

 

rac1-> srvctl status asm -n rac2

ASM instance +ASM2 is running on node rac2.  

 

rac1-> srvctl status database -d devdb

Instance devdb1 is running on node rac1

Instance devdb2 is running on node rac2

 

rac1-> srvctl status service -d devdb

rac1->

Oracle Clusterware의 상태 확인.

rac1-> crsctl check crs

CSS appears healthy

CRS appears healthy

EVM appears healthy

 

rac2-> crsctl check crs

CSS appears healthy

CRS appears healthy

EVM appears healthy

커맨드 라인에서 crsctl를 실행하여 사용 가능한 옵션을 확인합니다.

RAC 인스턴스 목록 확인.

SQL> select

  2  instance_name,

  3  host_name,

  4  archiver,

  5  thread#,

  6  status

  7  from gv$instance;

 

INSTANCE_NAME  HOST_NAME             ARCHIVE  THREAD# STATUS

-------------- --------------------- ------- -------- ------

devdb1         rac1.mycorpdomain.com STARTED        1 OPEN

devdb2         rac2.mycorpdomain.com STARTED        2 OPEN

연결 테스트.

각 노드의 인스턴스와 서비스에 연결할 수 있는지 확인합니다.

sqlplus system@devdb1

sqlplus system@devdb2

sqlplus system@devdb

데이터베이스 설정의 확인.

rac1-> export ORACLE_SID=devdb1

rac1-> sqlplus / as sysdba

 

SQL> show sga

 

Total System Global Area  209715200 bytes

Fixed Size                  1218556 bytes

Variable Size             104859652 bytes

Database Buffers          100663296 bytes

Redo Buffers                2973696 bytes

 

 

SQL> select file_name,bytes/1024/1024 from dba_data_files;

 

FILE_NAME                                   BYTES/1024/1024

------------------------------------------- ---------------

+DG1/devdb/datafile/users.259.606468449                   5

+DG1/devdb/datafile/sysaux.257.606468447                240

+DG1/devdb/datafile/undotbs1.258.606468449               30

+DG1/devdb/datafile/system.256.606468445                480

+DG1/devdb/datafile/undotbs2.264.606468677               25

       

 

        SQL> select

          2  group#,

          3  type,

          4  member,

          5  is_recovery_dest_file

          6  from v$logfile

          7  order by group#;

 

GROUP# TYPE    MEMBER                                              IS_

------ ------- --------------------------------------------------- ---

     1 ONLINE  +RECOVERYDEST/devdb/onlinelog/group_1.257.606468581 YES

     1 ONLINE  +DG1/devdb/onlinelog/group_1.261.606468575          NO

     2 ONLINE  +RECOVERYDEST/devdb/onlinelog/group_2.258.606468589 YES

     2 ONLINE  +DG1/devdb/onlinelog/group_2.262.606468583          NO

     3 ONLINE  +DG1/devdb/onlinelog/group_3.265.606468865          NO

     3 ONLINE  +RECOVERYDEST/devdb/onlinelog/group_3.259.606468875 YES

     4 ONLINE  +DG1/devdb/onlinelog/group_4.266.606468879          NO

     4 ONLINE  +RECOVERYDEST/devdb/onlinelog/group_4.260.606468887 YES

 

 

rac1-> export ORACLE_SID=+ASM1

rac1-> sqlplus / as sysdba

 

SQL> show sga

 

Total System Global Area   92274688 bytes

Fixed Size                  1217884 bytes

Variable Size              65890980 bytes

ASM Cache                  25165824 bytes

 

 

SQL> show parameter asm_disk

 

NAME                           TYPE        VALUE

------------------------------ ----------- ------------------------

asm_diskgroups                 string      DG1, RECOVERYDEST

asm_diskstring                 string

 

 

SQL> select

  2  group_number,

  3  name,

  4  allocation_unit_size alloc_unit_size,

  5  state,

  6  type,

  7  total_mb,

  8  usable_file_mb

  9  from v$asm_diskgroup;

 

                       ALLOC                        USABLE

 GROUP                  UNIT                 TOTAL    FILE

NUMBER NAME             SIZE STATE   TYPE       MB      MB

------ ------------ -------- ------- ------ ------ -------

     1 DG1           1048576 MOUNTED NORMAL   6134    1868

     2 RECOVERYDEST  1048576 MOUNTED EXTERN   2047    1713

 

 

SQL> select

  2  name,

  3  path,

  4  header_status,

  5  total_mb free_mb,

  6  trunc(bytes_read/1024/1024) read_mb,

  7  trunc(bytes_written/1024/1024) write_mb

  8  from v$asm_disk;

 

NAME  PATH       HEADER_STATU    FREE_MB    READ_MB   WRITE_MB

----- ---------- ------------ ---------- ---------- ----------

VOL1  ORCL:VOL1  MEMBER             3067        229       1242

VOL2  ORCL:VOL2  MEMBER             3067        164       1242

VOL3  ORCL:VOL3  MEMBER             2047         11        354

테이블스페이스 생성.

SQL> connect system/oracle@devdb

Connected.

SQL> create tablespace test_d datafile '+DG1' size 10M;

 

Tablespace created.

 

SQL> select

  2  file_name,

  3  tablespace_name,

  4  bytes

  5  from dba_data_files

  6  where tablespace_name='TEST_D';

 

FILE_NAME                                TABLESPACE_NAME      BYTES

---------------------------------------- --------------- ----------

+DG1/devdb/datafile/test_d.269.606473423 TEST_D            10485760

온라인 리두 로그파일 그룹 생성.

SQL> connect system/oracle@devdb

Connected.

SQL> alter database add logfile thread 1 group 5 size 50M;

 

Database altered.

 

SQL> alter database add logfile thread 2 group 6 size 50M;

 

Database altered.

 

SQL> select

  2  group#,

  3  thread#,

  4  bytes,

  5  members,

  6  status

  7  from v$log;

 

    GROUP#    THREAD#      BYTES    MEMBERS STATUS

---------- ---------- ---------- ---------- ----------------

         1          1   52428800          2 CURRENT

         2          1   52428800          2 INACTIVE

         3          2   52428800          2 ACTIVE

         4          2   52428800          2 CURRENT

         5          1   52428800          2 UNUSED

         6          2   52428800          2 UNUSED

 

SQL> select

          2  group#,

          3  type,

          4  member,

          5  is_recovery_dest_file

          6  from v$logfile

          7  where group# in (5,6)

          8  order by group#;

 

GROUP# TYPE    MEMBER                                               IS_

------ ------- ---------------------------------------------------- ---

     5 ONLINE  +DG1/devdb/onlinelog/group_5.271.606473683           NO

     5 ONLINE  +RECOVERYDEST/devdb/onlinelog/group_5.261.606473691  YES

     6 ONLINE  +DG1/devdb/onlinelog/group_6.272.606473697           NO

     6 ONLINE  +RECOVERYDEST/devdb/onlinelog/group_6.262.606473703  YES

플래시 복구 영역의 공간 사용 현황 점검.

SQL> select * from v$recovery_file_dest;

 

NAME          SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

------------- ----------- ---------- ----------------- ---------------

+RECOVERYDEST  1572864000  331366400                 0               7

 

 

SQL> select * from v$flash_recovery_area_usage;

 

FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES

------------ ------------------ ------------------------- ---------------

CONTROLFILE                 .97                         0               1

ONLINELOG                    20                         0               6

ARCHIVELOG                    0                         0               0

BACKUPPIECE                   0                         0               0

IMAGECOPY                     0                         0               0

FLASHBACKLOG                  0                         0               0

애플리케이션 리소스의 시작/중단.

아래 작업을 수행하여 개별 애플리케이션 리소스를 시작/중단해 봅니다.

srvctl start nodeapps -n <node1 hostname>

srvctl start nodeapps -n <node2 hostname>

srvctl start asm -n <node1 hostname>

srvctl start asm -n <node2 hostname>

srvctl start database -d <database name>

srvctl start service -d <database name> -s <service name>

crs_stat -t

 

srvctl stop service -d <database name> -s <service name>

srvctl stop database -d <database name>

srvctl stop asm -n <node1 hostname>

srvctl stop asm -n <node2 hostname>

srvctl stop nodeapps -n <node1 hostname>

srvctl stop nodeapps -n <node2 hostname>

crs_stat -t

 

10. Transparent Application Failover(TAF) 테스트

Oracle TAF는 데이터베이스 연결에 장애가 발생한 경우 클러스터의 다른 노드로 재연결하기 위한 페일오버 메커니즘을 제공합니다. 페일오버 과정은 사용자 관점에서 투명하게 수행됩니다. 오라클은 페일오버된 인스턴스에서 쿼리를 재실행하고 결과를 사용자에게 반환합니다.

새로운 데이터베이스 서비스의 생성. 먼저 CRM이라는 이름의 새로운 서비스를 생성해 봅시다. 데이터베이스 서비스는 DBCA 또는 srvctl 유틸리티를 이용하여 생성할 수 있습니다. 여기에서는 DBCA를 사용해서 devdb1 CRM 서비스를 생성해 보겠습니다.

 

Service Name

Database Name

Preferred Instance

Available Instance

TAF Policy

CRM

devdb

devdb1

devdb2

BASIC

oracle 사용자로 rac1에 로그인하여 아래와 같이 실행합니다:

rac1-> dbca

  1. Welcome: Oracle Real Application Clusters database를 선택합니다.
  2. Operations: Services Management를 선택합니다.
  3. List of cluster databases: Next를 클릭합니다.
  4. Database Services: strong>Add를 클릭합니다.
    • Add a Service: “CRM”을 입력합니다.
      • devdb1 Preferred instance로 선택합니다.
      • devdb2 Available instance로 선택합니다.
      • TAF Policy: Basic을 선택합니다.
    • Finish를 클릭합니다.

  1. Database Configuration Assistant: No를 클릭하여 종료합니다.

Database Configuration Assistant tnsnames.ora 파일에 아래 CRM 서비스 네임 엔트리를 생성합니다:

CRM =

          (DESCRIPTION =

            (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))

            (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))

            (LOAD_BALANCE = yes)

            (CONNECT_DATA =

        (SERVER = DEDICATED)

        (SERVICE_NAME = CRM)

        (FAILOVER_MODE =

                 (TYPE = SELECT)

                 (METHOD = BASIC)

                 (RETRIES = 180)

                 (DELAY = 5)

        )

            )

          )

 

 

SQL> connect system/oracle@devdb1

        Connected.

        SQL> show parameter service

 

NAME                           TYPE        VALUE

------------------------------ ----------- ------------------------

service_names                  string      devdb, CRM

 

 

SQL> connect system/oracle@devdb2

        Connected.

        SQL> show parameter service

 

NAME                           TYPE        VALUE

------------------------------ ----------- ------------------------

service_names                  string      devdb

CRM 서비스를 이용하여 첫 번째 세션에 연결. failover_type failover_mode의 반환 결과가 'NONE'인 경우, CRM 서비스가 tnsnames.ora에 올바르게 설정되었는지 확인합니다.

SQL> connect system/oracle@crm

Connected.

SQL> select

  2  instance_number instance#,

  3  instance_name,

  4  host_name,

  5  status

  6  from v$instance;

 

 INSTANCE# INSTANCE_NAME    HOST_NAME             STATUS

---------- ---------------- --------------------- ------------

         1 devdb1           rac1.mycorpdomain.com OPEN

 

 

SQL> select

  2  failover_type,

  3  failover_method,

  4  failed_over

  5  from v$session

  6  where username='SYSTEM';

 

FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER

------------- --------------- ----------------

SELECT        BASIC           NO

다른 세션에서 인스턴스를 셧다운. CRM 인스턴스에 sys 사용자로 연결한 후 인스턴스를 셧다운합니다.

rac1-> export ORACLE_SID=devdb1

rac1-> sqlplus / as sysdba

 

SQL> select

  2  instance_number instance#,

  3  instance_name,

  4  host_name,

  5  status

  6  from v$instance;

 

 

 INSTANCE# INSTANCE_NAME    HOST_NAME             STATUS

---------- ---------------- --------------------- ------------

         1 devdb1           rac1.mycorpdomain.com OPEN

 

SQL> shutdown abort;

ORACLE instance shut down.

세션이 페일오버 되었는지 확인. 동일한 CRM 세션에서 아래 쿼리를 실행하여 세션이 다른 인스턴스로 페일오버 되었는지 확인합니다.

SQL> select

  2  instance_number instance#,

  3  instance_name,

  4  host_name,

  5  status

  6  from v$instance;

 

 

INSTANCE# INSTANCE_NAME    HOST_NAME             STATUS

---------- ---------------- --------------------- ------------

         2 devdb2           rac2.mycorpdomain.com OPEN

 

 

SQL> select

  2  failover_type,

  3  failover_method,

  4  failed_over

  5  from v$session

  6  where username='SYSTEM';

 

 

FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER

------------- --------------- ----------------

SELECT        BASIC           YES

CRM 서비스를 preferred instance로 페일백. devdb1이 다시 시작된 이후에도 CRM 서비스는 preferred instance로 페일백 처리되지 않습니다. 따라서 수동으로 서비스를 devdb1으로 이전해 주어야 합니다.

rac1-> export ORACLE_SID=devdb1

rac1-> sqlplus / as sysdba

 

SQL> startup

ORACLE instance started.

 

Total System Global Area  209715200 bytes

Fixed Size                  1218556 bytes

Variable Size             104859652 bytes

Database Buffers          100663296 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

SQL> show parameter service

 

NAME                           TYPE        VALUE

------------------------------ ----------- ------------------------

service_names                  string      devdb

 

 

rac2-> export ORACLE_SID=devdb2

rac2-> sqlplus / as sysdba

 

SQL> show parameter service

 

NAME                           TYPE        VALUE

------------------------------ ----------- ------------------------

service_names                  string      devdb, CRM

 

 

rac1-> srvctl relocate service -d devdb -s crm -i devdb2 -t devdb1

 

 

SQL> connect system/oracle@devdb1

Connected.

SQL> show parameter service

 

NAME                           TYPE        VALUE

------------------------------ ----------- ------------------------

service_names                  string      devdb, CRM

 

 

SQL> connect system/oracle@devdb2

Connected.

SQL> show parameter service

 

NAME                           TYPE        VALUE

------------------------------ ----------- ------------------------

service_names                  string      devdb

11. 데이터베이스 백업 및 복구

Oracle Recovery Manager(RMAN)을 이용하여 Oracle RAC 데이터베이스를 백업/복구하는 방법은 싱글 인스턴스 데이터베이스의 경우와 동일합니다.

이번 섹션에서는 아주 간단한 백업/복구 시나리오를 실행해 보기로 합니다:

1. 전체 데이터베이스 백업 수행.
2. test_d
테이블스페이스에 mytable 테이블을 생성.
3. t1
시점에 mytable에 첫 번째 레코드를 삽입.
4. t2
시점에 두 번째 레코드를 mytable에 삽입.
5. t3
시점에 mytable을 드롭.
6. test_d
테이블스페이스의 포인트--타임 복구 수행.
7.
복구 결과 검증.

전체 데이터베이스 백업 수행.

rac1-> rman nocatalog target /

 

Recovery Manager: Release 10.2.0.1.0 - Production on Mon Nov 13 18:15:09 2006

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

connected to target database: DEVDB (DBID=511198553)

using target database control file instead of recovery catalog

 

RMAN> configure controlfile autobackup on;

 

RMAN> backup database plus archivelog delete input;

test_d 테이블스페이스에 mytable 테이블을 생성.

19:01:56 SQL> connect system/oracle@devdb2

Connected.

19:02:01 SQL> create table mytable (col1 number) tablespace test_d;

 

Table created.

t1 시점에 mytable에 첫 번째 레코드를 삽입.

19:02:50 SQL> insert into mytable values (1);

 

1 row created.

 

19:02:59 SQL> commit;

 

Commit complete.

t2 시점에 mytable에 두 번째 레코드를 삽입.

19:04:41 SQL> insert into mytable values (2);

 

1 row created.

 

19:04:46 SQL> commit;

 

Commit complete.

t3 시점에 mytable을 드롭.

19:05:09 SQL> drop table mytable;

 

Table dropped.

test_d 테이블스페이스의 포인트--타임 복구 수행.

보조 데이터베이스를 위한 보조 디렉토리를 생성합니다.

rac1-> mkdir /u01/app/oracle/aux

 

 

RMAN> recover tablespace test_d

2> until time "to_date('13-NOV-2006 19:03:10','DD-MON-YYYY HH24:MI:SS')"

3> auxiliary destination '/u01/app/oracle/aux';

 

RMAN> backup tablespace test_d;

 

RMAN> sql 'alter tablespace test_d online';

복구 결과 검증.

19:15:09 SQL> connect system/oracle@devdb2

Connected.

19:15:16 SQL> select * from mytable;

 

      COL1

----------

         1

12. Oracle Enterprise Manager (OEM) 데이터베이스 콘솔 사용

Oracle Enterprise Manager Database Console은 클러스터 데이터베이스 환경의 운영 및 관리를 위한 통합적, 포괄적인 GUI 인터페이스를 제공합니다. 관리자는 콘솔을 통해 거의 모든 운영 업무를 수행할 수 있습니다.

Database Console에 접근하려면, 웹 브라우저를 열고 아래 URL을 입력합니다.
sysman
계정으로 로그인한 후 데이터베이스 설치 과정에서 설정한 패스워드를 입력합니다.

http://rac1:1158/em

Database Console의 시작/중단.

rac1-> emctl stop dbconsole

TZ set to US/Eastern

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved.

http://rac1.mycorpdomain.com:1158/em/console/aboutApplication

Stopping Oracle Enterprise Manager 10g Database Control ...

 ...  Stopped.

       

        rac1-> emctl start dbconsole

TZ set to US/Eastern

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved.

http://rac1.mycorpdomain.com:1158/em/console/aboutApplication

Starting Oracle Enterprise Manager 10g Database Control

................... started.

------------------------------------------------------------------

Logs are generated in directory

/u01/app/oracle/product/10.2.0/db_1/rac1_devdb1/sysman/log

Database Console의 상태 확인.

rac1-> emctl status dbconsole

TZ set to US/Eastern

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved.

http://rac1.mycorpdomain.com:1158/em/console/aboutApplication

Oracle Enterprise Manager 10g is running.

------------------------------------------------------------------

Logs are generated in directory

/u01/app/oracle/product/10.2.0/db_1/rac1_devdb1/sysman/log

 

rac1-> emctl status agent

TZ set to US/Eastern

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved.

---------------------------------------------------------------

Agent Version     : 10.1.0.4.1

OMS Version       : 10.1.0.4.0

Protocol Version  : 10.1.0.2.0

Agent Home        : /u01/app/oracle/product/10.2.0/db_1/rac1_devdb1

Agent binaries    : /u01/app/oracle/product/10.2.0/db_1

Agent Process ID  : 10263

Parent Process ID : 8171

Agent URL         : http://rac1.mycorpdomain.com:3938/emd/main

Started at        : 2006-11-12 08:10:01

Started by user   : oracle

Last Reload       : 2006-11-12 08:20:33

Last successful upload                       : 2006-11-12 08:41:53

Total Megabytes of XML files uploaded so far :     4.88

Number of XML files pending upload           :        0

Size of XML files pending upload(MB)         :     0.00

Available disk space on upload filesystem    :    71.53%

---------------------------------------------------------------

Agent is Running and Ready

13. 알려진 이슈

알려진 이슈와 그 해결 방법이 아래와 같습니다.

문제 1: 이더넷 디바이스가 활성화되지 않는 경우.
에러 메시지 ? “Cannot activate network device eth0! Device eth0 has different MAC address than expected, ignoring.”

해결 방법:
“ifconfig”
에 의해 확인된 MAC 어드레스가 /etc/sysconfig/network-scripts/ifcfg-eth0과 일치하지 않아 생기는 문제입니다. 새로운 MAC 어드레스로 파일을 업데이트하거나 system-config-network 툴을 이용하여 새로운 MAC 어드레스를 조회하는 방법으로 문제를 해결합니다.

 

문제 2: OCFS2 설정 파일을 생성할 수 없는 경우.
에러 메시지 ? “Could not start cluster stack. This must be resolved before any OCFS2 filesystem can be mounted” (OCFS2 설정 파일을 생성하는 시점에 발생)

해결 방법:
oracle
사용자가 아닌 root 사용자로 ocfs2console을 실행합니다.

 

문제 3: Oracle Clusterware 또는 Oracle Database 소프트웨어를 원격 노드에 설치할 수 없는 경우.
에러 메시지 ? “ /bin/tar: ./inventory/Components21/oracle.ordim.server/10.2.0.1.0: time stamp 2006-11-04 06:24:04 is 25 s in the future” (Oracle Clusterware 소프트웨어 설치 과정에서 발생)

해결 방법:
VMware Tools
를 설치하고 /boot/grub/grub.conf 파일에 “clock=pit nosmp noapic nolapic” 옵션을 추가하여 게스트 OS와 호스트 OS의 시간을 동기화합니다. 자세한 방법은 섹션 3을 참고하십시오.

 

문제 4: OCFS2 파일 시스템을 마운트할 수 없는 경우.
에러 메시지 ? “mount.ocfs2: Transport endpoint is not connected while mounting” (ocfs2 파일 시스템의 마운트를 시도하는 시점에 발생)

해결 방법:
/usr/bin/system-config-securitylevel
을 실행하여 방화벽을 비활성화합니다.

 

문제 5: ONS 리소스를 시작할 수 없는 경우.
에러 메시지 ? “CRS-0215: Could not start resource ?ora.rac2.ons’” (VIPCA ONS 애플리케이션 리소스를 시작하는 시점에 발생)

해결 방법:
ONS
localhost에 액세스하려 시도하지만 IP 주소를 찾을 수 없는 경우 발생하는 문제입니다. /etc/hosts 파일에 아래 항목을 추가합니다.

127.0.0.1 localhost

결론

이 가이드를 통해 VMware Server에서 오라클 데이터베이스 클러스터 환경을 구축하는 방법을 익히셨기를 바랍니다. 무료로 제공되는 소프트웨어를 활용하여 Enterprise Linux 기반 Oracle RAC 환경을 체험해 보십시오!


Vincent Chan (vkchan99@yahoo.com) MSD Inc의 선임 컨설턴트입니다. 빈센트는 Oracle Certified Master DBA 자격을 소유하고 있으며 오라클 솔루션의 설계에 관련하여 10여 년의 경력을 갖고 있습니다.