ドーモ、読者=サン。さくらい(@sakutomo0615)です。
それではサクサクとOS周りの設定を進めて行きましょう。
- RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。①事前準備編
- RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。②OSインストール編
- RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。③クラスタ用の設定
- RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。④2号機側と共有ディスクの設定
- RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。⑤Oracle Gridのインストール
- RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。⑥Oracle Databaseのインストールと作成
Contents
内部ネットワーク用NICの追加
Oracle RACのインターコネクト(内部通信)用のNICを追加する作業です。

VirtualBox内のDB1号機(rac11g1)を右クリックして、設定を開きます。

アダプター1(外部通信用)をブリッジアダプターに変更します。

アダプター2のタブを開き、『ネットワークアダプターを有効化』にチェックを入れて、割り当てを『内部ネットワーク』に設定します。
設定が終わったら、OKボタンでウィンドウが閉じます。
クラスタ用共有ディスクの追加
クラスタ構成なので、DB1号機とDB2号機の双方からアクセスできる共有ディスクが必要ですので、ここで作成します。
ディスク | 容量 | 仮想ディスクの名前 | 用途 |
/dev/sdc | 10GB(固定) | oradata_disk01 | Oracle DATA用 |
/dev/sdd | 10GB(固定) | oradata_disk02 | Oracle DATA用 |
ここではこれら2つのディスクを共有ディスクとして作成します。

仮想ディスクファイルを格納するフォルダを作ります。今回は共有ディスク用にshareddiskと言うフォルダを作りました。

Virtual Box上で仮想ホストのDB1号機(rac11g1)を選択して、設定を開きます。ストレージメニューを開くとコントローラーが2つありますので、コントローラーSATAのところの+ボタンをクリックしましょう。

『新規ディスクの作成』をクリック

仮想HDDのファイルタイプはVDI(Virtualbox Disk Image)を選んで次へ

まずはoradata_disk01を作りますので、固定サイズを選択します。

仮想ディスクのファイルパスとファイル名を指定してサイズを10GBにします。

あとはこの手順を繰り返して、共有ディスクを2つ作成します。

必要な共有ディスクが作成されているのを確認したら、OKをクリックします。

Virtual Boxを開き、上部メニューの【ファイル】→【仮想メディアマネージャー】を開きます。

作成したディスクを選択して、右クリック→変更をします。

メディア属性を【共有可能】に変えて、OKをクリックします。

ストレージメニューで共有ディスクを見た時にタイプ形式は共有可能になっている事を確認します。
ネットワーク関連の設定
デバイスの追加が終わったら、再度OSを起動してみます。(rootでログイン)
サービス用・内部通信用NICのIP設定

#fdisk -l でディスク一覧を見ると、新たにディスクが追加されている事がわかります。

続いて、2枚のネットワークカードにIPアドレスを付与します。デスクトップを開いて、上部メニューの【システム】→【設定】→【ネットワーク接続】を開きます。

サービス用NICから設定します。System eth0を選択して『編集』をクリック。何気にeth1が追加されている点もチェックしましょう。

方式を【手動】に変更し、IPアドレスとサブネットマスク、ゲートウェイ、DNSサーバーを入力します。

先ほど追加した内部通信用のeth1も設定します。『自動接続する』にチェックを入れ、IPアドレス・サブネットマスクを設定します。(※ゲートウェイは設定しないように!)

設定が終わったら、インターネットに接続できるか確認しておきましょう。
合わせて、外部時刻同期も出来るか確認しておきます。
root#ntpq -p
hostsファイルの編集

/etc/hostsファイルを編集します。
今回設定するIPアドレス・ホスト名の一覧
IPアドレス | FQDN | ホスト名 | 備考 |
192.168.0.11 | rac11g1.localdomain | rac11g1 | DB1号機サービス側の実IPアドレス |
192.168.0.12 | rac11g2.localdomain | rac11g2 | DB2号機サービス側の実IPアドレス |
192.168.0.110 | rac11gSCAN.localdomain | rac11gSCAN | SCAN用IPアドレス |
192.168.0.111 | rac11gvip01.localdomain | rac11gvip01 | DB1号機サービス側の仮想IPアドレス |
192.168.0.112 | rac11gvip02.localdomain | rac11gvip02 | DB2号機サービス側の仮想IPアドレス |
10.0.0.1 | rac11g1priv.localdomain | rac11g1priv | DB1号機内部通信用の実IPアドレス |
10.0.0.2 | rac11g2priv.localdomain | rac11g2priv | DB2号機内部通信用の実IPアドレス |

設定例:/etc/hostsファイルに今回割り当てたIPアドレスに対して、ホスト名を付与します。
hostsファイルを保存したら、Oracleユーザーとグループの作成に移ります。
Oracleインストールの必要パッケージの追加
何だかんだで事前にインストールされていなければならないパッケージはたくさんあります。全部を後から追加するのが面倒くさかったので、OSを『ソフトウェア開発ワークステーション』でインストールしておいたんですが、それでも追加が必要です。
★必要パッケージ
binutils-2.20.51.0.2-5.11.el6(x86_64)
glibc-devel-2.12-1.7.el6(x86_64)
libstdc++-devel-4.4.4-13.el6.i686 ←要追加
compat-libcap1-1.10-1(x86_64) ←要追加
glibc-devel-2.12-1.7.el6.i686 ←要追加
libaio-0.3.107-10.el6(x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64) ←要追加
libaio-0.3.107-10.el6.i686 ←要追加
compat-libstdc++-33-3.2.3-69.el6.i686 ←要追加
libgcc-4.4.4-13.el6 (i686) ←要追加
libaio-devel-0.3.107-10.el6 (x86_64) ←要追加
gcc-4.4.4-13.el6 (x86_64)
libgcc-4.4.4-13.el6 (x86_64)
libaio-devel-0.3.107-10.el6.i686 ←要追加
gcc-c++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6(x86_64)
make-3.81-19.el6
glibc-2.12-1.7.el6 (i686) ←要追加
libstdc++-4.4.4-13.el6.i686 ←要追加
sysstat-9.0.4-11.el6(x86_64)
glibc-2.12-1.7.el6 (x86_64)
libstdc++-devel-4.4.4-13.el6(x86_64)
★ASMLib(ASM用ライブラリ&ドライバー)
Oracle ASMLib Downloads for Red Hat Enterprise Linux 6
必要ライブラリ類の追加
DVDメディアをマウントして、メディア内のパッケージをちまちまと探します。

# cd /media/RHEL-6.7\ Server.x86_64/Packages/
ひたすらパッケージを追加していきましょう。
今回の環境と同じに構築している人は、i686系のライブラリの依存関係でハマった場合には、このパッケージで幸せになれます。
nss-softokn-freebl-3.14.3-22.el6_6.i686.rpm
1 2 3 4 5 6 7 8 9 10 | # rpm -ivh libgcc-4.4.7-16.el6.i686.rpm rpm -ivh compat-libcap1-1.10-1.x86_64.rpm rpm -ivh compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm rpm -ivh compat-libstdc++-33-3.2.3-69.el6.i686.rpm rpm -ivh libaio-devel-0.3.107-10.el6.x86_64.rpm rpm -ivh libaio-devel-0.3.107-10.el6.i686.rpm rpm -ivh glibc-2.12-1.166.el6.i686.rpm glibc-devel-2.12-1.166.el6.i686.rpm nss-softokn-freebl-3.14.3-22.el6_6.i686.rpm rpm -ivh libstdc++-4.4.7-16.el6.i686.rpm rpm -ivh libstdc++-devel-4.4.7-16.el6.i686.rpm |
Oracle ASMLibの追加
次にこちらのサイトからRHEL6系のASMLibを入手しましょう。
Oracle ASMLib Downloads for Red Hat Enterprise Linux 6

こちらの2つのファイルをダウンロードします。
んで、インストールしてみると・・・
はい?(;´・ω・)
どうやらこう言う事らしい。
しかも、こう言う事でもあるらしい。
6.6 カーネルで kmod-oracleasm パッケージが利用できない
と、言うワケでこちらのサイトからkmod-oracleasm-2.0.8-6.el6_7.x86_64.rpmを入手する事にします。

↑ダウンロードしてインストールしてみた結果。
取りあえずはこれら3パッケージが追加できたので、良しとしておきましょう。
kmod-oracleasm-2.0.8-6.el6_7.x86_64.rpm
oracleasmlib-2.0.4-1.el6.x86_64.rpm
oracleasm-support-2.1.8-1.el6.x86_64.rpm

rootアカウントでoracleasmコマンドが使えるのを確認できればOKです。 ※ASMディスクの初期化はもう少し後で行います。
Oracle用のユーザーとグループの追加
Oracle Grid InfrastructureとOracle Databaseをインストールするにあたり、いくつかのユーザーとグループを追加しなくてはいけません。
今回追加するユーザーとグループは以下の通りです。
ユーザー名 | 所属グループ | 備考 |
grid(601) | oinstall(501),asmdba(601),asmadmin(602),asmopeer(603) | ASM管理用ユーザー |
oracle(501) | oinstall(501),dba(502),oper(503),asmdba(601) | Oracle管理用ユーザー |
ではグループから作成しましょう。
1 2 3 4 5 6 7 | # #groupadd -g 501 oinstall #groupadd -g 502 dba #groupadd -g 503 oper #groupadd -g 601 asmdba #groupadd -g 602 asmadmin #groupadd -g 603 asmoper |

gridユーザーとoracleユーザーを追加します。
1 2 3 | # #useradd -u 601 -g oinstall -G asmadmin,asmdba,asmoper grid #useradd -u 501 -g oinstall -G dba,oper,asmdba oracle |

gridユーザーとoracleユーザーにパスワードを設定します。
Oracleソフトウェアのインストールディレクトリを作成しましょう。
ディレクトリ | 用途 |
/u01/app/grid | Grid InfraのOracle Base |
/u01/app/oracle | Oracle Base |
/u01/app/11.2.0 | Grid Infraのホームディレクトリ |

仕上げにoracleインストールディレクトリを作成して、オーナーを変えておきます。
1 2 3 4 5 6 7 | # #mkdir -p /u01/app/grid #mkdir -p /u01/app/oracle #mkdir -p /u01/app/11.2.0/grid #chown -R grid:oinstall /u01 #chown -R oracle:oinstall /u01/app/oracle #chmod -R 775 /u01 |
カーネルパラメーターの設定
続いて恒例のメンドクサイ、カーネルパラメーターの設定を行います。

現状のカーネルパラメーター値を確認します。
#sysctl -a |grep sem → 3番目の数値が32なので、100に修正する
#sysctl -a|grep shm → このままで平気
#sysctl -a |grep file-max → 足りないので修正
#sysctl -a |grep ip_local_port → 32768-61000なので修正
#sysctl -a |grep net.core.rmem → 足りないので修正
#sysctl -a |grep net.core.wmem → 足りないので修正

では早速これらのパラメータを修正します。

私と全く同じ手順で構築している方はこちらをコピペすればOKです。(そうでない方は手動で編集してください)
1 2 3 4 5 6 7 8 9 10 | # #for Oracle RAC kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262133 net.core.wmem_max = 1038576 |
次にoracleユーザーが起動できるプロセス数の上限値を引き上げます。

/etc/security/limits.confを編集します。

こちらの設定をコピペしてください。(tab空白に注意!)
1 2 3 4 5 6 7 8 9 | # grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 |

次にetc/profileも修正します。

以下のコードをコピペして保存して下さい。
1 2 3 4 5 6 7 8 9 10 | # if [ $USER = "oracle" ] || [ $USER = "grid" ]; then umask 022 if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi |
その他OSの設定
だんだん疲れてくるんですが、まだ細かい部分でOSの設定が残っているので片付けます。
NTPをSlewモードに変更する。
NTPにはSTEPモードとSlewモードの2つのモードがあるんですが、STEPモードは不定期に時刻調整を行います。それだけなら良いんですが、何らかの理由(リブートを頻発させたetc)でサーバーの時刻がNTPサーバー(外部時刻源)よりも先に進んでしまった場合、時間を逆戻りさせる可能性があるんですね。
これがOracleのクラスタソフトウェア的に非常によろしくないんです。(1号機だけ時間が逆戻りして、インスタンス1と2の間に時刻不整合が出たりする)
Slewモードは時間の逆戻りをせずに、時間の進行を遅らせてゆっくりと同期します。なので、こちらに変更しておきます。

#vi /etc/sysconfig/ntpd

OPTIONS=”-u ntp:ntp -p /var/run/ntpd.pid -g”
OPTIONS=”-x -u ntp:ntp -p /var/run/ntpd.pid -g”
オプションに-xを付けます。
NTPサービスを再起動します。

これでOKです。
ここまで出来たら、サーバーをシャットダウンします。
次回からは1号機の仮想マシンをコピーして、2号機を作成します。