Front page   Edit Freeze Diff Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes

技術文書/Oracle/CentOS5.2にOracle10gR2RACをインストール

Last-modified: Sat, 29 Jan 2011 15:27:48 JST (3595d)
Top > 技術文書 > Oracle > CentOS5.2にOracle10gR2RACをインストール

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

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

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



環境 EditEdit(GUI)

  • VMware Workstation 5.5.7 (WindowsXP)
    • CentOS 5.2 (x86, HDD 20GB, RAM 1GB)
      • hostname: ora1
      • eth0:192.168.1.101 (public)
      • eth1:192.168.10.101 (private)
    • CentOS 5.2 (x86, HDD 20GB, RAM 1GB)
      • hostname: ora2
      • eth0:192.168.1.102 (public)
      • eth1:192.168.10.102 (private)
    • 共有ディスク
      • OCR用 0.2GB x1 (raw)
      • 投票ディスク用 0.1GB x1 (raw)
      • データ用 4GB x1 (raw, ASM管理)
      • フラッシュリカバリエリア用 4GB x1 (raw, ASM管理)

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

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

  • データ用 : +DATA
  • フラッシュリカバリエリア用 : +FRA

参考文献 EditEdit(GUI)

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

CentOS 5 に必要なパッケージ EditEdit(GUI)

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

  • binutils-2.17.50.0.6-2.el5
  • compat-libstdc++-33-3.2.3-61
  • elfutils-libelf-0.125-3.el5
  • elfutils-libelf-devel-0.125
  • gcc-4.1.1-52
  • gcc-c++-4.1.1-52
  • glibc-2.5-12
  • glibc-common-2.5-12
  • glibc-devel-2.5-12
  • glibc-headers-2.5-12
  • libaio-0.3.106
  • libaio-devel-0.3.106
  • libgcc-4.1.1-52
  • libstdc++-4.1.1
  • libstdc++-devel-4.1.1-52.e15
  • make-3.81-1.1
  • sysstat-7.0.0
  • unixODBC-2.2.11
  • unixODBC-devel-2.2.11

1台目を作成 (ora1) EditEdit(GUI)

グループやユーザの作成 EditEdit(GUI)

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

[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 の設定 EditEdit(GUI)

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

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

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

[oracle@ora1 ~]$ exit

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

/etc/sysctl.conf の設定 EditEdit(GUI)

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

# 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

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

[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

シェルの制限の設定 EditEdit(GUI)

/etc/security/limits.conf に追加します。

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

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

# for Oracle
session    required     pam_limits.so

/etc/profile に追加します。

# 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 です。

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

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

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

[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 のディレクトリ配下には入らないように 注意が必要です。

[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 モジュールの設定 EditEdit(GUI)

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

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

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

# for Oracle
/sbin/modprobe hangcheck-timer

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

[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().

ネットワークの設定 EditEdit(GUI)

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

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台目終了 EditEdit(GUI)

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

[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) EditEdit(GUI)

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

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

clone.png

full-clone.png

2台目のネットワーク設定 EditEdit(GUI)

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

  • /etc/sysconfig/network

HOSTNAMEを "ora2" にします。

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=ora2
GATEWAY=192.168.1.1
  • /etc/sysconfig/network-scripts/ifcfg-eth0

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

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

# 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
  • /etc/sysconfig/network-scripts/ifcfg-eth1

これも同様に直します。

# 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

一度再起動します。

[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!

ユーザ等価性の設定 EditEdit(GUI)

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

鍵の作成 EditEdit(GUI)

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

  • ora1 にて
[oracle@ora1 ~]$ ssh-keygen -t rsa
[oracle@ora1 ~]$ ssh-keygen -t dsa
  • ora2 にて
[oracle@ora2 ~]$ ssh-keygen -t rsa
[oracle@ora2 ~]$ ssh-keygen -t dsa

鍵のコピー EditEdit(GUI)

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

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

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

  • ora1 にて
[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
  • ora2 にて
[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

動作確認 EditEdit(GUI)

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

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

2台目終了 EditEdit(GUI)

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

共有ディスクの作成 EditEdit(GUI)

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

  • 共有ディスク
    • OCR用 0.2GB x1
    • 投票ディスク用 0.1GB x1
    • データ用 4GB x1
    • フラッシュリカバリエリア用 4GB x1

vmxファイルの設定 EditEdit(GUI)

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

disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"

ディスクの作成 EditEdit(GUI)

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

ディスクの認識 EditEdit(GUI)

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

[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 もパーティションを作ります。

[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デバイスへのマッピング EditEdit(GUI)

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

# 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 に書きました。

# 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"

ディスクの設定完了 EditEdit(GUI)

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

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

[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 のインストール EditEdit(GUI)

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

[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 にて。

[root@ora1 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh 
権限の変更中/u01/app/oracle/oraInventory 新規グループ名: 770.
次のグループ名を変更します: /u01/app/oracle/oraInventory 新規グループ名: oinstall.
スクリプトの実行が完了しました
[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 でも実行します。

[root@ora2 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh 
権限の変更中/u01/app/oracle/oraInventory 新規グループ名: 770.
次のグループ名を変更します: /u01/app/oracle/oraInventory 新規グループ名: oinstall.
スクリプトの実行が完了しました
[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.
-force is destructive and will destroy any previous cluster
configuration.
Oracle Cluster Registry for cluster has already been initialized
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
        ora2
CSS is active on all nodes.
Waiting for the Oracle CRSD and EVMD to start
Waiting for the Oracle CRSD and EVMD to start
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
/u01/crs/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0:
cannot open shared object file: No such file or directory

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

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

crs-12.png

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

VIPCAの実行 EditEdit(GUI)

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

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

#       #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 で起動します。

[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 で確認してみましょう。

[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 の修正 EditEdit(GUI)

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

##Remove this workaround when the bug 3937317 is fixed
#LD_ASSUME_KERNEL=2.4.19
#export LD_ASSUME_KERNEL

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

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

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

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

[oracle@ora1 ~]$ clusterware/cluvfy/runcluvfy.sh stage -post crsinst -n ora1,ora2                                                                               
                                                                                
クラスタ・サービス設定の事後チェックを実行しています                            
                                                                                
ノード到達可能性をチェック中...                                                 
ノード"ora1"からのノード到達可能性チェックに合格しました。                      
                                                                                
                                                                                
ユーザー等価をチェック中...                                                     
ユーザー"oracle"のユーザー等価チェックに合格しました。             
...
                                                                                
VIPノード・アプリケーションの存在をチェック中です (必須)                        
チェックに合格しました。                                                        
                                                                                
ONSノード・アプリケーションの存在をチェック中です (オプション)                  
チェックに合格しました。                                                        
                                                                                
GSDノード・アプリケーションの存在をチェック中です (オプション)                  
チェックに合格しました。                                                        
                                                                                
                                                                                
クラスタ・サービス設定の事後チェックは成功しました。  

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

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

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

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

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

[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 を実行します。

[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 でも実行します。

[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 インスタンスやリスナーが クラスタとして登録されていることが確認できます。

[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) EditEdit(GUI)

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

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

[oracle@ora1 database]$ ./runInstaller -ignoreSysPrereqs

db-1.png

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

db-2.png

DBCA によるデータベースの作成 EditEdit(GUI)

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

[oracle@ora1 ~]$ /u01/app/oracle/product/10.2.0/db_1/bin/dbca

ASM の設定 EditEdit(GUI)

ディスクグループは 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 インスタンスについては終了です。

データベースの作成 EditEdit(GUI)

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 インスタンスもクラスタに登録されます。 これで全部揃いました。

[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 

動作確認 EditEdit(GUI)

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

[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 の設定などでうまく振り分けましょう。

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

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> 

その後 EditEdit(GUI)

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

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

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


  • 非常に丁寧な解説ですね。最近Oracle Master Silver 10g を取得したのですが、技術的なスキルが足りないため、linux環境でoracleDBを構築し、勉強したいと思います。こちらの日記を参考にさせていただきたいと思います。ありがとうございました。 -- きのぴお 2008-12-07 (日) 02:50:50
  • ありがとうございます。RACではなくシングルインスタンスでの構築から始めてみるのがお手軽です。11gのインストールを別途書いていますので、よろしければ参考にしてください。 -- すぎむら 2008-12-07 (日) 16:20:03
  • こういう人がマニュアルを書いてくれれば・・・。多謝。 -- Jianchen 2009-04-17 (金) 21:13:34
  • OracleMaster Gold 10g勉強用にASM環境を作りました。非常に参考になりました。 -- まぼ 2009-10-23 (金) 12:51:24

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

Attach file: filevipca-4.png 444 download [Information] filevipca-3.png 457 download [Information] filecrs-9.png 457 download [Information] filecrs-8.png 462 download [Information] filecrs-7.png 468 download [Information] filecrs-6.png 494 download [Information] filecrs-5.png 480 download [Information] filecrs-4.png 472 download [Information] filecrs-3.png 520 download [Information] filecrs-2.png 537 download [Information] filedbca-db-7.png 443 download [Information] filedbca-db-6.png 413 download [Information] filedbca-db-5.png 423 download [Information] filedbca-db-4.png 420 download [Information] filedbca-db-3.png 446 download [Information] filedbca-db-2.png 461 download [Information] filedbca-db-1.png 428 download [Information] filedbca-6.png 427 download [Information] filedbca-5.png 446 download [Information] filedbca-4.png 423 download [Information] filedbca-3.png 441 download [Information] filedbca-2.png 442 download [Information] filedbca-1.png 442 download [Information] filedb-2.png 466 download [Information] filedb-1.png 462 download [Information] fileasm-11.png 511 download [Information] fileasm-10.png 502 download [Information] fileasm-9.png 477 download [Information] fileasm-8.png 488 download [Information] fileasm-7.png 468 download [Information] fileasm-6.png 477 download [Information] fileasm-5.png 492 download [Information] fileasm-4.png 476 download [Information] fileasm-3.png 482 download [Information] fileasm-2.png 516 download [Information] fileasm-1.png 598 download [Information] filevipca-2.png 441 download [Information] filevipca-1.png 465 download [Information] filecrs-12.png 529 download [Information] filecrs-11.png 480 download [Information] filecrs-10.png 476 download [Information] filecrs-1.png 570 download [Information] fileRACshared.png 511 download [Information] fileexistingdisk.png 445 download [Information] fileoptions.png 444 download [Information] fileedit.png 443 download [Information] fileadd-harddisk.png 492 download [Information] file0.2GB.png 486 download [Information] filefull-clone.png 466 download [Information] fileclone.png 604 download [Information]