機会がありまして VMware 上の CentOS 5.2 にて Oracle 10g R2 RAC を構築してみました。

Oracle をインストールしたことがある方ならば 一通り作ることができるように手順をまとめてみましたので、 もしお役に立てるところがあればご利用ください。

内容については無保証とします。 個人的な質問はある程度は受けますが、 日本オラクル社等へのお問い合わせはご遠慮ください。



環境

1台環境設定してから VMware の clone を使ってまるまるコピーして、 ネットワークなどの設定を書き直すことで2台作りました。

データやフラッシュリカバリエリアはASMで管理します。 ディスクグループは次のようにしました。

参考文献

次の文書を見ながらインストールしていきます。

CentOS 5 に必要なパッケージ

下記のパッケージが必要となっています。

1台目を作成 (ora1)

グループやユーザの作成

useradd では -m も付けて、ホームディレクトリを作っておきます。

#pre{{ [root@ora1 ~]# groupadd oinstall [root@ora1 ~]# groupadd dba [root@ora1 ~]# useradd -g oinstall -G dba oracle -m [root@ora1 ~]# passwd oracle Changing password for user oracle. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. }}

oracle ユーザの umask の設定

oracle ユーザを作成したら ~/.bash_profile で umask の設定をします。

#pre{{ [root@ora1 ~]# su - oracle [oracle@ora1 ~]$ echo "umask 022" >> ~/.bash_profile }}

ログインしなおして umask が正しく設定されているかどうかを確認しましょう。

#pre{{ [oracle@ora1 ~]$ exit

[root@ora1 ~]# su - oracle [oracle@ora1 ~]$ umask 0022 }}

/etc/sysctl.conf の設定

次の行を追加します。shmmax と shmall は設定されているので そのまま使って構いません。

#pre{{

# for Oracle 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 }}

設定したら有効にします。

#pre{{ [root@ora1 ~]# sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 4294967295 kernel.shmall = 268435456 kernel.shmmni = 4096 kernel.sem = 250 32000 100 11128 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/security/limits.conf に追加します。

#pre{{

# for Oracle oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 }}

/etc/pam.d/login に追加します。

#pre{{

# for Oracle session required pam_limits.so }}

/etc/profile に追加します。

#pre{{

# for Oracle if [ $USER = "oracle" ]; then

       if [ $SHELL = "/bin/ksh" ]; then
             ulimit -p 16384
             ulimit -n 65536
       else
             ulimit -u 16384 -n 65536
       fi

fi }}

oracle ユーザでログインして、実際に設定が反映されるかどうかを確認します。 (-n) 65536 と (-u) 16384 がこのようになっていれば OK です。

#pre{{ sugimura@e8400 ~ $ ssh oracle@192.168.1.101 oracle@192.168.1.101's password: Last login: Tue Jul 8 16:21:14 2008 from 192.168.1.2 [oracle@ora1 ~]$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 12288 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 65536 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 16384 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited }}

インストール先のディレクトリを作成

CRS のインストールディレクトリを作成します。 /u01/crs 以下にインストールするものとします。

#pre{{ [root@ora1 ~]# mkdir -p /u01/crs [root@ora1 ~]# chown -R root:oinstall /u01/crs [root@ora1 ~]# chmod -R 775 /u01/crs }}

DB も同様に /u01/app/oracle 以下にインストールするものとして、 ディレクトリを作成して権限を付与します。 この /u01/app/oracle は CRS のディレクトリ配下には入らないように 注意が必要です。

#pre{{ [root@ora1 ~]# mkdir -p /u01/app/oracle [root@ora1 ~]# chown -R oracle:oinstall /u01/app/oracle [root@ora1 ~]# chmod -R 775 /u01/app/oracle }}

hangcheck-timer モジュールの設定

/etc/modprobe.conf に追加します。

#pre{{

# for Oracle options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180 }}

起動時に読み込まれるように、/etc/rc.local に追加します。

#pre{{

# for Oracle /sbin/modprobe hangcheck-timer }}

再起動してもいいのですが、一度正しくロードされることを確認しましょう。

#pre{{ [root@ora1 ~]# /sbin/modprobe hangcheck-timer [root@ora1 ~]# tail -2 /var/log/messages Jul 8 17:09:12 ora1 kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 30 seconds, margin is 180 seconds). Jul 8 17:09:12 ora1 kernel: Hangcheck: Using get_cycles(). }}

ネットワークの設定

/etc/hosts に各ノードの定義を書きます。

#pre{{ 127.0.0.1 localhost.localdomain localhost

192.168.1.101 ora1 192.168.1.102 ora2

192.168.1.111 ora1-vip 192.168.1.112 ora2-vip

192.168.10.101 ora1-priv 192.168.10.102 ora2-priv }}

1台目終了

ここまでで1台目の基本環境は作成終了です。 一度 OS を終了しておきます。

#pre{{ [root@ora1 ~]# shutdown -h now

Broadcast message from root (pts/1) (Tue Jul 8 17:18:21 2008):

The system is going down for system halt NOW! }}

2台目を作成 (ora2)

VMware なので、2台目はコピーして作ります。 VMware Workstation には clone という機能があり、 そのままコピーできます。

コピーの作り方は "Create a linked clone" と "Create a full clone" の2つがありますが、ディスクもたくさんあるので "full clone" のほうにしました。

clone.png

full-clone.png

2台目のネットワーク設定

2台目だけ起動して、ネットワークの設定を書き直します。

HOSTNAMEを "ora2" にします。

#pre{{ NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=ora2 GATEWAY=192.168.1.1 }}

ifcfg-eth0.bak から IPADDR の行を書き直して、 新しく生成された ifcfg-eth0 の HWADDR の行を持ってきます。

2台目のMACアドレスとIPアドレスを正しく設定する、ということです。

#pre{{

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.1.255 HWADDR=00:0C:29:4d:ee:f7 IPADDR=192.168.1.102 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes }}

これも同様に直します。

#pre{{

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth1 BOOTPROTO=static BROADCAST=192.168.10.255 HWADDR=00:0C:29:4d:ee:01 IPADDR=192.168.10.102 NETMASK=255.255.255.0 NETWORK=192.168.10.0 ONBOOT=yes }}

一度再起動します。

#pre{{ [root@ora1 ~]# shutdown -h now

Broadcast message from root (pts/1) (Tue Jul 8 17:59:14 2008):

The system is going down for system halt NOW! }}

ユーザ等価性の設定

oracle ユーザでパスワードなしでお互いにログインできるように ssh を設定します。

鍵の作成

簡単のため、パスフレーズは空にして作りました。

#pre{{ [oracle@ora1 ~]$ ssh-keygen -t rsa [oracle@ora1 ~]$ ssh-keygen -t dsa }}

#pre{{ [oracle@ora2 ~]$ ssh-keygen -t rsa [oracle@ora2 ~]$ ssh-keygen -t dsa }}

鍵のコピー

鍵をコピーする際に (yes/no) を聞かれたときは yes で答えます。 最初の一度だけ聞かれます。

#pre{{ Are you sure you want to continue connecting (yes/no)? yes }}

パスワードを要求されたときは正しいパスワードを入力しましょう。

#pre{{ [oracle@ora1 ~]$ ssh ora1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys [oracle@ora1 ~]$ ssh ora1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys [oracle@ora1 ~]$ ssh ora2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys [oracle@ora1 ~]$ ssh ora2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys }}

#pre{{ [oracle@ora2 ~]$ ssh ora1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys [oracle@ora2 ~]$ ssh ora1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys [oracle@ora2 ~]$ ssh ora2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys [oracle@ora2 ~]$ ssh ora2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys }}

動作確認

ora1, ora1-priv, ora2, ora2-priv に対して、 パスワードなしでログインできることを確認します。

初回のログインでは (yes/no) を聞かれますが、 yes で答えて次回から聞かれないようにしましょう。

2台目終了

ここまでできたら一度両方を shutdown しておきます。

共有ディスクの作成

共有ディスクを作ります。ここではこのように作成することにしました。 冗長構成にしたいところでしたが、VMware では無理でした。

vmxファイルの設定

各ノードでの vmx ファイルにて、ロックの解除やキャッシュの設定を行います。

#pre{{ disk.locking = "false" diskLib.dataCacheMaxSize = "0" diskLib.dataCacheMaxReadAheadSize = "0" diskLib.dataCacheMinReadAheadSize = "0" diskLib.dataCachePageSize = "4096" diskLib.maxUnsyncedWrites = "0" }}

ディスクの作成

ora1 の "Edit virtual machine settings" から ディスクを追加して作成します。

edit.png

add-harddisk.png

0.2GB のときはこのように作成します。

0.2GB.png

Mode は Independent - Persistent にしておきます。

options.png

vmdk ファイルを作成する先はそれぞれの OS とは違うフォルダに入れるのが わかりやすいでしょう。 My Virtual Machines\RACshared\ の下に置きました。

RACshared.png

この作業を繰り返して、このように作成してみました。 IDEで共有ディスクというのは気持ちが悪いですが、 VMware には接続数の制限があるようなのでこのようにしています。

Deviceファイル名ディスクの用途容量
IDE 0:0 (/dev/hda)OCR.vmdkOCR0.2GB
IDE 0:1 (/dev/hdb)vote.vmdk投票ディスク0.1GB
SCSI 0:1 (/dev/sdb)data-4GB.vmdkデータ4GB
SCSI 0:2 (/dev/sdc)FRA-4GB.vmdkフラッシュリカバリエリア4GB

ora2 では新規作成ではなく、ここで作ったディスクを追加していきます。

existingdisk.png

ディスクの認識

ora1 にて fdisk パーティションを作ります。

#pre{{ [root@ora1 ~]# fdisk /dev/hda デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも 含んでいません 新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。 警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって 正常になります

                                                                               

コマンド (m でヘルプ): n コマンドアクション

  e   拡張                                                                     
  p   基本領域 (1-4)                                                           

p 領域番号 (1-4): 1 最初 シリンダ (1-416, default 1): Using default value 1 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-416, default 416): Using default value 416

                                                                               

コマンド (m でヘルプ): w 領域テーブルは交換されました!

                                                                               

ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。 }}

fdisk -l で見て「正常な領域テーブルを含んでいません」というディスクがなくなるまで、 同様に /dev/hdb, /dev/sdb, /dev/sdc もパーティションを作ります。

#pre{{ [root@ora1 ~]# fdisk -l

                                                                               

Disk /dev/hda: 214 MB, 214748160 bytes 16 heads, 63 sectors/track, 416 cylinders Units = シリンダ数 of 1008 * 512 = 516096 bytes

                                                                               

デバイス Boot Start End Blocks Id System /dev/hda1 1 416 209632+ 83 Linux

                                                                               

Disk /dev/hdb: 107 MB, 107374080 bytes 16 heads, 63 sectors/track, 208 cylinders Units = シリンダ数 of 1008 * 512 = 516096 bytes

                                                                               

デバイス Boot Start End Blocks Id System /dev/hdb1 1 208 104800+ 83 Linux

                                                                               

Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes

                                                                               

デバイス Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 2610 20860402+ 8e Linux LVM

                                                                               

Disk /dev/sdb: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes

                                                                               

デバイス Boot Start End Blocks Id System /dev/sdb1 1 522 4192933+ 83 Linux

                                                                               

Disk /dev/sdc: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes

                                                                               

デバイス Boot Start End Blocks Id System /dev/sdc1 1 522 4192933+ 83 Linux }}

rawデバイスへのマッピング

CentOS 5 では /etc/udev/rules.d/60-raw.rules に追加していきます。

#pre{{

# for Oracle ACTION=="add", KERNEL=="hda1", RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", KERNEL=="hdb1", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw3 %N" ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw4 %N" }}

permission も設定します。/etc/udev/rules.d/61-raw-permission.rules に書きました。

#pre{{

# for Oracle KERNEL=="raw1", MODE="0640", OWNER="root", GROUP="oinstall" KERNEL=="raw2", MODE="0640", OWNER="oracle", GROUP="oinstall" KERNEL=="raw3", MODE="0660", OWNER="oracle", GROUP="dba" KERNEL=="raw4", MODE="0660", OWNER="oracle", GROUP="dba" }}

ディスクの設定完了

ここまで正常に終われば、一度再起動します。

再起動後は raw コマンドで正しくマッピングされていることと、 permission が設定されていることを確認します。

#pre{{ [root@ora1 ~]# raw -qa /dev/raw/raw1: bound to major 3, minor 1 /dev/raw/raw2: bound to major 3, minor 65 /dev/raw/raw3: bound to major 8, minor 17 /dev/raw/raw4: bound to major 8, minor 33 [root@ora1 ~]# ls -l /dev/raw/ 合計 0 crw-r----- 1 root oinstall 162, 1 7月 8 22:21 raw1 crw-r----- 1 oracle oinstall 162, 2 7月 8 22:21 raw2 crw-rw---- 1 oracle dba 162, 3 7月 8 22:21 raw3 crw-rw---- 1 oracle dba 162, 4 7月 8 22:21 raw4 }}

Clusterware のインストール

CentOS 5 はサポートされていないため、-ignoreSysPrereqs を付けて インストーラを実行します。

#pre{{ [oracle@ora1 ~]$ unzip 10201_clusterware_linux32.zip ... [oracle@ora1 ~]$ cd clusterware [oracle@ora1 clusterware]$ ./runInstaller -ignoreSysPrereqs }}

crs-1.png

インベントリのディレクトリを設定します。

crs-2.png

インストール先は /u01/crs にしました。

crs-3.png

CentOS 5 はサポートされていないため、エラーになります。 特に気にせずそのまま進めて構いません。

crs-4.png

ora1 上でインストーラを実行したので、ora1 だけがリストアップされます。 ora2 の定義も追加します。

crs-5.png

ここでは 192.168.1.0/24 が外向きとして定義してあるので、 eth0 側をパブリックにします。

crs-6.png

OCRの場所を指定します。冗長化してあれば2つ指定できます。

crs-7.png

投票ディスクの場所を指定します。 冗長化したときは3つ指定します。

crs-8.png

「クラスタ・ノード」が正しく認識されていることを確認して、 「インストール」をクリックして先へ進めます。

crs-9.png

インストールが進行していきます。

crs-10.png

各ノードでスクリプトを実行します。

crs-11.png

まずは ora1 にて。

#pre{{ [root@ora1 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh 権限の変更中/u01/app/oracle/oraInventory 新規グループ名: 770. 次のグループ名を変更します: /u01/app/oracle/oraInventory 新規グループ名: oinstall. スクリプトの実行が完了しました }}

#pre{{ [root@ora1 ~]# /u01/crs/root.sh Checking to see if Oracle CRS stack is already configured /etc/oracle does not exist. Creating it now.

Setting the permissions on OCR backup directory Setting up NS directories Oracle Cluster Registry configuration upgraded successfully assigning default hostname ora1 for node 1. assigning default hostname ora2 for node 2. Successfully accumulated necessary OCR keys. Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. node <nodenumber>: <nodename> <private interconnect name> <hostname> node 1: ora1 ora1-priv ora1 node 2: ora2 ora2-priv ora2 Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. Now formatting voting device: /dev/raw/raw2 Format of 1 voting devices complete. Startup will be queued to init within 90 seconds. Adding daemons to inittab Expecting the CRS daemons to be up within 600 seconds. CSS is active on these nodes.

 ora1

CSS is inactive on these nodes.

 ora2

Local node checking complete. Run root.sh on remaining nodes to start CRS daemons. }}

ora2 でも実行します。

#pre{{ [root@ora2 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh 権限の変更中/u01/app/oracle/oraInventory 新規グループ名: 770. 次のグループ名を変更します: /u01/app/oracle/oraInventory 新規グループ名: oinstall. スクリプトの実行が完了しました }}

#pre{{ [root@ora2 ~]# /u01/crs/root.sh Checking to see if Oracle CRS stack is already configured /etc/oracle does not exist. Creating it now.

Setting the permissions on OCR backup directory Setting up NS directories Oracle Cluster Registry configuration upgraded successfully clscfg: EXISTING configuration version 3 detected. clscfg: version 3 is 10G Release 2. assigning default hostname ora1 for node 1. assigning default hostname ora2 for node 2. Successfully accumulated necessary OCR keys. Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. node <nodenumber>: <nodename> <private interconnect name> <hostname> node 1: ora1 ora1-priv ora1 node 2: ora2 ora2-priv ora2 clscfg: Arguments check out successfully.

NO KEYS WERE WRITTEN. Supply -force parameter to override.

最後はエラーになりましたが、VIPCA の実行に失敗しているだけなので、 Clusterware としては成功しています。

スクリプトの実行が終わった後に 構成スクリプトが実行されますが、 VIPCA が正常終了していないために クラスタ検証ユーティリティ(CVU)でエラーになります。 これは後に解決します。

crs-12.png

このまま runInstaller を閉じて構いません。

VIPCAの実行

CentOS 5 では、VIPCA はそのままでは実行できないようです。

/u01/crs/bin/vipca を下記のように修正します。 "#Remove this..." から "#End workaround" をコメントアウトします。

#pre{{

# #Remove this workaround when the bug 3937317 is fixed

# arch=`uname -m`

# if [ "$arch" = "i686" -o "$arch" = "ia64" ]

# then

# LD_ASSUME_KERNEL=2.4.19

# export LD_ASSUME_KERNEL

# fi

# #End workaround

      ;;

}}

Linux 64bit のときは arch=`uname -m` の行は残してください。

これで実行できるようになるので、root で起動します。

#pre{{ [root@ora1 ~]# /u01/crs/bin/vipca }}

vipca-1.png

パブリックなネットワークは eth0 なので これだけが出てきます。

vipca-2.png

VIP(仮想IPアドレス)を入力していきます。 あらかじめ /etc/hosts に定義されていれば、 「IP別名」のところに入力することで 自動的に他の項目も入力されます。

vipca-3.png

正しく実行が終われば「構成結果」として表示されます。 「終了」を押して終わります。

vipca-4.png

正常に終了したら、crs_stat で確認してみましょう。

#pre{{ [root@ora1 ~]# /u01/crs/bin/crs_stat -t Name Type Target State Host


ora.ora1.gsd application ONLINE ONLINE ora1 ora.ora1.ons application ONLINE ONLINE ora1 ora.ora1.vip application ONLINE ONLINE ora1 ora.ora2.gsd application ONLINE ONLINE ora2 ora.ora2.ons application ONLINE ONLINE ora2 ora.ora2.vip application ONLINE ONLINE ora2 }}

SRVCTL の修正

VIPCA と同様に、SRVCTL も修正します。 /u01/crs/bin/srvctl を次のように直して、 "LD_ASSUME_KERNEL" の定義をコメントアウトします。

#pre{{

##Remove this workaround when the bug 3937317 is fixed

#LD_ASSUME_KERNEL=2.4.19

#export LD_ASSUME_KERNEL }}

これで実行できるようになります。oracle ユーザで実行することもできます。 いまはまだ DB やリスナーをインストールしていないので、 Clusterware に関する情報しか表示できません。

#pre{{ [oracle@ora1 ~]$ /u01/crs/bin/srvctl status nodeapps -n ora1 VIPはノードで実行中です: ora1 GSDはノードで実行中です: ora1 PRKO-2016 : ノードのリスナーの条件チェックでエラーが発生しました: ora1 ONSデーモンはノードで実行中です: ora1 }}

クラスタ検証ユーティリティ(CVU)によるインストールの確認

Clusterware の配布物の中にあるクラスタ検証ユーティリティで、 正しくインストールできていることが確認できます。

#pre{{ [oracle@ora1 ~]$ clusterware/cluvfy/runcluvfy.sh stage -post crsinst -n ora1,ora2

                                                                               

クラスタ・サービス設定の事後チェックを実行しています

                                                                               

ノード到達可能性をチェック中... ノード"ora1"からのノード到達可能性チェックに合格しました。

                                                                               
                                                                               

ユーザー等価をチェック中... ユーザー"oracle"のユーザー等価チェックに合格しました。 ...

                                                                               

VIPノード・アプリケーションの存在をチェック中です (必須) チェックに合格しました。

                                                                               

ONSノード・アプリケーションの存在をチェック中です (オプション) チェックに合格しました。

                                                                               

GSDノード・アプリケーションの存在をチェック中です (オプション) チェックに合格しました。

                                                                               
                                                                               

クラスタ・サービス設定の事後チェックは成功しました。 }}

エラーがないことが確認できれば、Clusterware のインストールは終了です。

Database ソフトウェアのインストール (asm)

Database ソフトウェアは asm 用と DB 用と 別々にインストールするのがお勧めのようです。

asm 用には、/u01/app/oracle/product/10.2.0/asm_1 に インストールするものとします。

Clusterware と同様に、runInstaller を -ignoreSysPrereqs を付けて 実行します。

#pre{{ [oracle@ora1 ~]$ unzip 10201_database_linux32.zip ... [oracle@ora1 ~]$ cd database [oracle@ora1 database]$ ./runInstaller -ignoreSysPrereqs }}

asm-1.png

Enterprise Edition を選択しました。

asm-2.png

「パス」を /u01/app/oracle/product/10.2.0/asm_1 とします。 ここにインストールされます。

asm-3.png

クラスタとしてインストールするため、 ora2 も選択します。

asm-4.png

CentOS 5 は対応していないのでエラーになりますが、 気にせず続行して構いません。

asm-5.png

asm インスタンスのためのインストールなので、 「自動ストレージ管理(ASM)の構成」を選択します。

SYS ユーザのパスワードを入力します。

asm-6.png

ディスクグループを定義します。 インストール中には1つしか定義できないようなので、 ひとまず DATA を作成することにします。

冗長化する必要があればここで設定しますが、 後で変更することも可能です。 今回は VMware の制限から、1つのディスクで 1つのディスクグループとしています。

asm-7.png

インストールのサマリーが表示されます。 「Oracleホーム」と「クラスタ・ノード」を確認して、 インストールを進めましょう。

asm-8.png

asm-9.png

root.sh を各ノードで実行します。

asm-10.png

まずは ora1 で root.sh を実行します。

#pre{{ [root@ora1 ~]# /u01/app/oracle/product/10.2.0/asm_1/root.sh Running Oracle10 root.sh script...

The following environment variables are set as:

   ORACLE_OWNER= oracle
   ORACLE_HOME=  /u01/app/oracle/product/10.2.0/asm_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:

  Copying dbhome to /usr/local/bin ...
  Copying oraenv to /usr/local/bin ...
  Copying coraenv to /usr/local/bin ...

Creating /etc/oratab file... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed.

[root@ora1 ~]# }}

同様に ora2 でも実行します。

#pre{{ [root@ora2 ~]# /u01/app/oracle/product/10.2.0/asm_1/root.sh Running Oracle10 root.sh script...

The following environment variables are set as:

   ORACLE_OWNER= oracle
   ORACLE_HOME=  /u01/app/oracle/product/10.2.0/asm_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:

  Copying dbhome to /usr/local/bin ...
  Copying oraenv to /usr/local/bin ...
  Copying coraenv to /usr/local/bin ...

Creating /etc/oratab file... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed.

[root@ora2 ~]# }}

"OK" を押して、インストールは終了です。

asm-11.png

正しくインストールが終われば、ASM インスタンスやリスナーが クラスタとして登録されていることが確認できます。

#pre{{ [oracle@ora1 ~]$ /u01/crs/bin/crs_stat -t Name Type Target State Host


ora....SM1.asm application ONLINE ONLINE ora1 ora....A1.lsnr application ONLINE ONLINE ora1 ora.ora1.gsd application ONLINE ONLINE ora1 ora.ora1.ons application ONLINE ONLINE ora1 ora.ora1.vip application ONLINE ONLINE ora1 ora....SM2.asm application ONLINE ONLINE ora2 ora....A2.lsnr application ONLINE ONLINE ora2 ora.ora2.gsd application ONLINE ONLINE ora2 ora.ora2.ons application ONLINE ONLINE ora2 ora.ora2.vip application ONLINE ONLINE ora2 }}

Database ソフトウェアのインストール (db)

db 用にも同様にインストールしていきます。

再度 runInstaller を実行して、 /u01/app/oracle/product/10.2.0/db_1 を指定してインストールします。

#pre{{ [oracle@ora1 database]$ ./runInstaller -ignoreSysPrereqs }}

db-1.png

「データベースの作成」もここで進めてもいいのですが、 段階を踏んでわかりやすくするためには、 「データベース・ソフトウェアのみインストール」を 選ぶのが無難です。

db-2.png

DBCA によるデータベースの作成

db 用にインストールした Database ソフトウェアから、 DBCA を実行します。

#pre{{ [oracle@ora1 ~]$ /u01/app/oracle/product/10.2.0/db_1/bin/dbca }}

ASM の設定

ディスクグループは DATA しか作っていなかったので、 FRA も追加します。

データベースの作成の中でも実行できますが、 別々にやったほうがわかりやすいでしょう。

まずは RAC でのデータベースを作成することを選択します。

dbca-1.png

ASM の設定なので、「自動ストレージ管理の構成」を選びます。

dbca-2.png

全てのノードでインスタンスを実行するようにします。

dbca-3.png

ASM インスタンスの SYS ユーザのパスワードを入力します。

dbca-4.png

インストール時に作っていなかった FRA ディスクグループを作成します。

ディスクはこれも1つで作成しています。

dbca-5.png

この ASM インスタンスでは DATA と FRA の 2つのディスクグループを使うということが ここで設定されました。

状態が "MOUNTED" になっていることを確認してください。

dbca-6.png

これで ASM インスタンスについては終了です。

データベースの作成

DBCA のメニュー画面に戻って、 「データベースの作成」を選びます。

dbca-db-1.png

データ用に使うディスクグループを選択します。 ここでは "DATA" です。

dbca-db-2.png

「フラッシュ・リカバリ領域の指定」では "FRA" のディスクグループを指定します。 "+" をつけると ASM で管理されたディスクグループであることを示します。

サイズもディスクの容量の範囲内で設定します。

「アーカイブ有効化」にもチェックを入れてみました。 これは後に変更することも可能です。

dbca-db-3.png

以上の設定が終われば、データベースの作成が進んでいきます。

dbca-db-4.png

完了するとこの画面になります。 途中でサンプルスキーマを入れることにしてあれば、 「パスワード管理」をクリックして、 ロックされているユーザの解除をします。

dbca-db-5.png

動作確認用によくある SCOTT.EMP 表などを使うために、 SCOTT ユーザのロックを解除します。 後に SQL*PLUS から ALTER USER 文を使っても もちろん構いません。

dbca-db-6.png

最後はインスタンスを起動して終了になります。

dbca-db-7.png

正しく作成されれば、DB インスタンスもクラスタに登録されます。 これで全部揃いました。

#pre{{ [oracle@ora1 ~]$ /u01/crs/bin/crs_stat -t Name Type Target State Host


ora....SM1.asm application ONLINE ONLINE ora1 ora....A1.lsnr application ONLINE ONLINE ora1 ora.ora1.gsd application ONLINE ONLINE ora1 ora.ora1.ons application ONLINE ONLINE ora1 ora.ora1.vip application ONLINE ONLINE ora1 ora....SM2.asm application ONLINE ONLINE ora2 ora....A2.lsnr application ONLINE ONLINE ora2 ora.ora2.gsd application ONLINE ONLINE ora2 ora.ora2.ons application ONLINE ONLINE ora2 ora.ora2.vip application ONLINE ONLINE ora2 ora.orcl.db application ONLINE ONLINE ora2 ora....l1.inst application ONLINE ONLINE ora1 ora....l2.inst application ONLINE ONLINE ora2 }}

動作確認

まずはコマンドを使えるようにします。環境変数は~/.bash_profile に定義するのが楽でしょう。

#pre{{ [oracle@ora1 ~]$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 [oracle@ora1 ~]$ export PATH=$ORACLE_HOME/bin:$PATH [oracle@ora1 ~]$ export NLS_LANG=Japanese_Japan.UTF8 [oracle@ora1 ~]$ sqlplus sys/xxxxxxxx@orcl as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 木 7月 10 01:13:30 2008

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

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, Real Application Clusters, OLAP and Data Mining options に接続されました。 SQL> select instance_name from v$instance;

INSTANCE_NAME


orcl2

SQL> }}

orcl を指定すると orcl2 につながりました。 あとは tnsnames.ora の設定などでうまく振り分けましょう。

もちろんテーブルの参照は普通にできます。

#pre{{ SQL> col ename format a10 SQL> col job format a10 SQL> select empno,ename,job,deptno from scott.emp;

    EMPNO ENAME      JOB            DEPTNO

     7369 SMITH      CLERK          20
     7499 ALLEN      SALESMAN       30
     7521 WARD       SALESMAN       30
     7566 JONES      MANAGER        20
     7654 MARTIN     SALESMAN       30
     7698 BLAKE      MANAGER        30
     7782 CLARK      MANAGER        10
     7788 SCOTT      ANALYST        20
     7839 KING       PRESIDENT      10
     7844 TURNER     SALESMAN       30
     7876 ADAMS      CLERK          20
    EMPNO ENAME      JOB            DEPTNO

     7900 JAMES      CLERK          30
     7902 FORD       ANALYST        20
     7934 MILLER     CLERK          10

14行が選択されました。

SQL> }}

その後

RAC は構築して終わりではありません。

チューニングや接続のフェイルオーバーの設定、 バックアップやリストア、ローリングアップグレードなど、 さまざまな場面で技が必要です。

また別に解説していこうと思います。



添付ファイル: filevipca-4.png 713件 [詳細] filevipca-3.png 712件 [詳細] filecrs-9.png 722件 [詳細] filecrs-8.png 737件 [詳細] filecrs-7.png 741件 [詳細] filecrs-6.png 758件 [詳細] filecrs-5.png 748件 [詳細] filecrs-4.png 742件 [詳細] filecrs-3.png 793件 [詳細] filecrs-2.png 811件 [詳細] filedbca-db-7.png 718件 [詳細] filedbca-db-6.png 661件 [詳細] filedbca-db-5.png 696件 [詳細] filedbca-db-4.png 701件 [詳細] filedbca-db-3.png 708件 [詳細] filedbca-db-2.png 729件 [詳細] filedbca-db-1.png 704件 [詳細] filedbca-6.png 706件 [詳細] filedbca-5.png 723件 [詳細] filedbca-4.png 697件 [詳細] filedbca-3.png 712件 [詳細] filedbca-2.png 718件 [詳細] filedbca-1.png 708件 [詳細] filedb-2.png 737件 [詳細] filedb-1.png 747件 [詳細] fileasm-11.png 789件 [詳細] fileasm-10.png 759件 [詳細] fileasm-9.png 770件 [詳細] fileasm-8.png 788件 [詳細] fileasm-7.png 741件 [詳細] fileasm-6.png 764件 [詳細] fileasm-5.png 755件 [詳細] fileasm-4.png 750件 [詳細] fileasm-3.png 758件 [詳細] fileasm-2.png 795件 [詳細] fileasm-1.png 874件 [詳細] filevipca-2.png 701件 [詳細] filevipca-1.png 749件 [詳細] filecrs-12.png 810件 [詳細] filecrs-11.png 751件 [詳細] filecrs-10.png 742件 [詳細] filecrs-1.png 838件 [詳細] fileRACshared.png 796件 [詳細] fileexistingdisk.png 727件 [詳細] fileoptions.png 699件 [詳細] fileedit.png 715件 [詳細] fileadd-harddisk.png 784件 [詳細] file0.2GB.png 779件 [詳細] filefull-clone.png 749件 [詳細] fileclone.png 894件 [詳細]

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-01-29 (土) 15:27:48