11gR2 Real Application Clusters(RAC) のインストール

本ページではVMwareを用いた11gR2 RAC(2node)のインストールの方法をまとめています。

1 構成・インストール前準備
2 Grid Infrastructureソフトウエアのインストール
3 データベースソフトウエアのインストール
4 データベースの作成
補足


構成

OS、アプリケーション
VMwareのバージョン VMware Server 2.0.1
ホストOS(VMwareを起動させている実OS) WindowsXp Professional x86(メモリ:3GB)
ゲストOS(VMware上のOS) CentOS5.4 x86(メモリ:1152MB※)  
※メモリが1GB未満だとインストールが失敗する可能性が高い為最低でも1.2GB以上、可能であればマニュアル記載の製品(Grid Infrastructure + RAC DB)動作要件の2.5GB以上割り当ててください。

注意
・メモリ、OSのディストリビューション、VMware上での稼動という3点でからサポート対象にはなりません。
・CentOSへRACのインストールを行った場合サポート対象OSではないためACFS関連のリソースがインストールされません。

ゲストOSのハードウエア構成
CPU 2 processors
Scsi DISK1(サイズ:8GB(※1)) OS用。パーティション分割しそれぞれswap領域、/boot、/ としてmount
Scsi DISK2(サイズ:8GB(※1)) Oracleのソフトウエア用。/appとしてmount
Scsi DISK3※2(サイズ:8GB) 共有ディスクとしてASM用ディスクとして使用
ネットワークアダプター1(eth0) パブリックLAN用。VMware上の接続形態は「Brigged」
ネットワークアダプター2(eth1) プライベートLAN用。VMware上の接続形態は「HostOnly」
VMwareの画面コピー
※1 このサイズだとかなりギリギリです。
  途中でインストールメディアを置く領域が足りなくなる可能性があるので12GB位にしたほうが無難です
※2 DISK3は全てのノードから参照させる必要があるため、この手順で仮想共有DISKとして構成します。

ゲストOSのネットワーク構成
・ドメイン名 localdomain
・DNSへの登録 しない
eth0 eth1
SCAN名 SCAN IP ホスト名 パブリックIP 仮想ホスト名 仮想IP プライベートホスト名 プライベートIP
cluster1 192.168.1.9
※
vm1 192.168.1.5 vip1 192.168.1.7 priv1 192.168.11.130
vm2 192.168.1.6 vip2 192.168.1.8 priv2 192.168.11.131
※SCANに関してはSCAN名に対して3つのIPアドレスをラウンド・ロビン方式でDNSに登録するのが推奨。
 (=SCAN名に対してpingを打つと1回目はIP1、2回目はIP2、3回目はIP3、4回目はIP1から結果が戻る)
 本ページの手順ではDNSに登録せずhostsにより単一のIPアドレスで名前解決していますが、
 DNSを設定してSCANを有効にするには「補足ページ」と「RACへの接続ページ」も合わせてご確認ください。

/etc/hosts
127.0.0.1      localhost.localdomain localhost
192.168.1.9    cluster1 cluster1.localdomain
192.168.1.5    vm1 vm1.localdomain
192.168.1.6    vm2 vm2.localdomain
192.168.1.7    vip1 vip1.localdomain
192.168.1.8    vip2 vip2.localdomain
192.168.11.130 priv1 priv1.localdomain
192.168.11.131 priv2 priv2.localdomain
※1 定義した全てのhost名はドメイン名で修飾された名前(FQDN)でもIPアドレスに変換できるように設定します。
  つまり、host名がvm1,ドメイン名がlocaldomainであった場合、「vm1」だけではなく「vm1.localdomain」も
  IPに解決できるようにhostsで定義します。
※2 ゲストOSのネットワークアダプター1はホストOSのNICをブリッジしてインターネットに接続させるため、
  ゲストOSのパブリックIPはホストOSのパブリックIPと同一ネットワークセグメント内のIPで定義します。
  (vipとSCAN IPも同一ネットワークセグメント上のIPで定義します)

ORACLEのインストール構成
ファイル 配置場所
Grid Infrastructureソフトウエア DISK2(ローカルディスク上の/app/11.2.0/grid配下)
Databaseソフトウエア DISK2(ローカルディスク上の/app/ora112/product/11.2.0/dbhome_1配下)
OCR、VOTING DISK DISK3(ASM)
制御ファイル、データファイル、REDOログ DISK3(ASM)

手順概要

No 作業対象 作業内容
1 ゲストOS1 ゲストOSのインストール
2 ゲストOS1 必須パッケージのインストール
3 ゲストOS1 サービスの停止と起動
4 ゲストOS1 ntpdをslewモードに変更
5 ゲストOS1 カーネルパラメータの設定
6 ゲストOS1 oracle用のOSユーザ及びOSグループの作成
7 ゲストOS1 リミット制限の設定
8 ゲストOS1 raw デバイスの定義
9 VMware ゲストOS1からゲストOS2を複製
10 VMware VMware上の仮想共有DISKの設定
11 ゲストOS1、2 ネットワーク及びホスト名の設定
12 ゲストOS1 Grid Infrastructureソフトウエアのインストール
13 ゲストOS1 Oracle データベースソフトウエアのインストール
14 ゲストOS1 DBCAによるデータベースの作成

手順詳細

ゲストOSのインストール
VMwareにてゲストOS1を上記ハードウエア構成と同じように構成します。
ゲストOS2については時間短縮のためゲストOS1のVMware構成ファイルをコピーして作成するので作成不要です

1. CentOS5.4のx86用のISOイメージをダウンロードします
 ISOイメージは各ミラーサイトからダウンロード可能です。

 ・ミラーサイト一覧
  http://isoredirect.centos.org/centos/5/isos/i386/

  今回は独立行政法人理化学研究所からダウンロードしました。
  http://ftp.riken.jp/Linux/centos/5.4/isos/i386/
  →CentOS-5.4-i386-bin-DVD.iso (約3.7GB)

2. ダウンロードしたISOイメージをVMware上のCD/DVDドライブに割り当てます

3. VMwareを起動するとインストールが始まります。
  DISK3はASMで利用するためRAWデバイスである必要がありますのでファイルシステムとしてフォーマットはしないでください

必須パッケージのインストール
CentOSはRHELから商用パッケージを除いてビルドしたディストリビューションであるため、 RHEL5用の必須パッケージをインストールすればよいと考えられるのでRHEL5の必須パッケージをインストールします。
RHEL5 x86環境の必須パッケージは以下の通りですがバージョンは厳密に一致している必要はなくこれより上位であれば問題ありません

マニュアル Grid Infrastructureインストレーション・ガイドfor Linux より抜粋
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
elfutils-libelf-devel-static-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
glibc-headers-2.5
kernel-headers-2.6.18
ksh-20060214
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.2
libgomp-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-devel-2.2.11

インストール方法は以下のいずれかが一般的です(いずれもrootで実行)。

・yum -y install <パッケージ名>
・rpm -ivh <パッケージ名>
・ランレベル5で起動し、デスクトップ画面からのGUI(ソフトウエアの追加/削除(パッケージマネージャー))

また、インストール済みパッケージは以下の結果より確認可能です。
# rpm -qa
本環境の実行結果

サービスの停止と起動
NetworkManagerデーモンが起動しているとネットワークインターフェースの挙動が怪しくなる為停止します。
(今回のテストにおいては突然IPが変わったりNICがダウンするといった事象が発生)
# chkconfig NetworkManager off
また、ntpdとrawdevicesサービスを起動するように設定します。(rawdeviceサービスはudevにてrawデバイスを定義するのであれば不要です。)
# chkconfig ntpd on
# chkconfig rawdevices on
現在の設定は以下で確認できます。
# chkconfig --list
本環境の実行結果

ntpdをslewモードに変更
ntpによる時刻補正方法にはstepモードとslewモードがあり以下の違いがあります。

・stepモード・・・一度に時刻を補正する
・slewモード・・・徐々に時刻を補正する

RAC環境ではslewモードである必要があるため/etc/sysconfig/ntpd を以下のように修正します。

OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
↓
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

カーネルパラメータの設定
以下の推奨パラメータを/etc/sysctl.confに追記します。なお、既に設定がされていて値が推奨値より大きいパラメータは追加不要です。
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586	
oracle用のOSユーザ及びOSグループの作成
今回はora112というOSユーザを使用してGrid Infrstructure、データベースをインストールすることとします。
なお、11.2からASMはgrid Infrastructureに含まれるようになったことに起因して ASMインスタンスの管理者グループはdbaではなくasmdbaグループに変更されていますので注意が必要です。
# groupadd oinstall
# groupadd dba
# groupadd asmdba
# useradd -g oinstall -G dba,asmdba ora112
# passwd ora112 --変更後パスワードを聞かれるのでパスワードを入力
リミット制限の設定
1. 次の行を/etc/security/limits.confファイルに追加します。
ora112 soft nproc 2047
ora112 hard nproc 16384
ora112 soft nofile 1024
ora112 hard nofile 65536
2. /etc/pam.d/loginに次の行が存在しない場合追加します。
session required pam_limits.so
3. 次の行を/etc/profileファイルに追加します。
if [ $USER = "ora112" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
  fi
fi	
raw デバイスの定義
DISK3(本環境では/dev/sdc)を2つのパーティション(/dev/sdc1,/dev/sdc1)に分割します。
# fdisk /dev/sdc
→n(領域の作成)→p(基本領域の作成)→領域番号:1、最初 シリンダ:1、サイズ:522(4GB)→w(書き込み)
→n(領域の作成)→p(基本領域の作成)→領域番号:2、最初 シリンダ:523、サイズ:522(4GB)→w(書き込み)
また、今回はASMLIBによるDISKのマーキングは行わないため OS起動時に自動的にこの二つのパーティションをrawデバイスとして認識させ、 rawデバイスは適切なオーナー(Grid Infrastructureのインストールユーザ、今回はora112)、 グループ(ASM管理グループ、今回はdba)、パーミッション(660)が設定される必要があります。
この対応のためudevのrawデバイスに対するルールを記載する/etc/udev/rules.d/60-raw.rulesを以下のように修正します。

/etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
#   ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
#   ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.

ACTION=="add",KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdc2", RUN+="/bin/raw /dev/raw/raw2 %N"
KERNEL=="raw1",OWNER="ora112",GROUP="oinstall",MODE="0660"
KERNEL=="raw2",OWNER="ora112",GROUP="oinstall",MODE="0660"
ゲストOS1からゲストOS2を複製
1. ゲストOS1を停止します。
2. VMwareの構成ファイルをディレクトリごと別のディレクトリにコピーします。
3. ゲストOS2のvmxファイル(ゲストOSを配置しているディレクトリにある拡張子がvmxのファイル)の
  displayNameパラメータを別名に修正します。
例)
displayName = "centOS5.4_1"
↓
displayName = "centOS5.4_2"
4. VMware管理画面の上部にあるツールバーの「Virtual Machine」→「Add Virtual Machine to Inventory」にて3.で修正したvmxファイルを読み込みゲストOS2を追加します。

VMware上の仮想共有DISKの設定
DISK3はASM用の領域として全てのノードから参照できなければならないため、本来であれば共有ディスクやNASストレージである必要があります。 今回は以下の手順でゲストOS2からDISK3を参照できるようにし、仮想共有DISKを構成します。

1. ゲストOS2の管理画面よりDISK3を削除します
2. ゲストOS2において「Add Hardware」→「Hard Disk」→「Use an Existing Virtual Disk」
  を選択し、locationにゲストOS1のDISK3を指定し追加します。
3. ゲストOS1と2両方のvmxファイルにて以下を追記します。
  なお、「0:2」の部分は一定ではなく異なる場合があるのでvmxファイル内のDISK3の定義と同じようにあわせます。

disk.locking="false"
diskLib.dataCacheMaxSize=0
diskLib.dataCacheMaxReadAheadSize=0
diskLib.dataCacheMinReadAheadSize=0
diskLib.dataCachePageSize=4096
diskLib.maxUnsyncedWrites=0
scsi0:2.shared = "true"
scsi0:2.writeThrough = "TRUE"
ネットワーク及びホスト名の設定
以下はゲストOS1、ゲストOS2両方で作業します

1. /etc/hostsを以下のように変更します。
127.0.0.1      localhost.localdomain localhost
192.168.1.9    cluster1 cluster1.localdomain
192.168.1.5    vm1 vm1.localdomain
192.168.1.6    vm2 vm2.localdomain
192.168.1.7    vip1 vip1.localdomain
192.168.1.8    vip2 vip2.localdomain
192.168.11.130 priv1 priv1.localdomain
192.168.11.131 priv2 priv2.localdomain
2. /etc/sysconfig/networkのホスト名の部分(以下の例ではvm1)を修正します。
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=vm1.localdomain		
3. /etc/sysconfig/network-scripts/ifcfg-eth[0|1]を修正してeth0とeth1のIPアドレスを特定の値に固定します。
  IPアドレスの値は上述の設定の通りに設定します

ゲストOS1の例)
[root@vm1 network-scripts]# cat ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=none
IPADDR=192.168.1.5
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
[root@vm1 network-scripts]# cat ifcfg-eth1
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth1
BOOTPROTO=none
IPADDR=192.168.11.130
NETMASK=255.255.255.0
NETWORK=192.168.11.0
BROADCAST=192.168.11.255
ONBOOT=yes
設定完了後OS再起動を行い、ifconfig -a の結果から意図したIPアドレスが登録されているか確認します。

1 構成・インストール前準備
2 Grid Infrastructureソフトウエアのインストール
3 データベースソフトウエアのインストール
4 データベースの作成
補足
 
★ORACLE案件承ります