技術ブログ
Oracle VMの利点の1つに、Oracle製品導入済みのOracle VMテンプレートが用意されている点があります。 通常は、VMテンプレートをインポートし、IPアドレスなど若干の環境固有の設定を行うだけでVMを構成できますが、RAC構成の場合は注意が必要です。
RAC構成の場合、共有ディスクの利用、Grid Infrastructureの構成など、シングル環境とは異なる点があるため、独自の手順が必要となります。OVMAPIをサポートした11.2 RAC VMテンプレート + Oracle VM 3の場合、DeployClusterというツールを用います。(OVMAPIをサポートしていない11.2 RAC VMテンプレートの場合、または、Oracle VM 2.x の場合は、buildcluster.shを使います)
DeployCluster tool for Oracle Real Application Cluster 11g Release 2 Templates for Oracle VM 3 http://www.oracle.com/technetwork/products/clusterware/overview/racovm-deploycluster-tool-1635519.pdf
インストール手順の確認などの理由から、私はRAC環境についてはテンプレートを使用してきませんでした。 今回、DeployClusterツールを初めて使用したところRAC環境が素早く作成できたので、手順などを簡単にまとめておきます。
Oracle Real Application Clusters (RAC) 11g Release 2 (x86 32-bit and 64-bit) on Oracle Linux 6.2 (w/OVMAPI Support) 11.2.0.3.2 p13818831_10_Linux-x86-64_1of2.zip / p13818831_10_Linux-x86-64_2of2.zipをダウンロードしました。
[root@csov3m01 112032_x64_p13818831]# unzip -l p13818831_10_Linux-x86-64_1of2.zip
Archive: p13818831_10_Linux-x86-64_1of2.zip
Length Date Time Name
-------- ---- ---- ----
628243357 08-25-12 00:10 OVM_OL6U2_X86_64_11203RAC_PVM-1of2.tgz
7744 08-24-12 22:40 RACOVM11203-MYSUPPORT-READMEv2.1.txt
-------- -------
628251101 2 files
[root@csov3m01 112032_x64_p13818831]# unzip -l p13818831_10_Linux-x86-64_2of2.zi
p
Archive: p13818831_10_Linux-x86-64_2of2.zip
Length Date Time Name
-------- ---- ---- ----
3575220861 08-25-12 00:31 OVM_OL6U2_X86_64_11203RAC_PVM-2of2.tgz
825857 05-16-12 04:07 RAC11203-OVM-template-ProductionConfiguration.pdf
1299065 05-16-12 04:10 RAC11203-OVM-template-TestConfiguration.pdf
-------- -------
3577345783 3 files
ダウンロードしたファイルを、Oracle VM ManagerからHTTPでダウンロードできるように
Apache のDocumentRoot以下に配置するなどします。
Oracle VM Managerから、RACテンプレートを記憶域リポジトリにインポートします。
今回インポートするRACテンプレートは2つのZIPファイルから構成されているため、 ソースURL欄には以下の2行をまとめて指定します。ZIPファイルをあらかじめ解凍しておく必要はないようです。
http://(略)/p13818831_10_Linux-x86-64_1of2.zip
http://(略)/p13818831_10_Linux-x86-64_2of2.zip
DeployClusterのドキュメントの記載に従い、Oracle VM ManagerからASM用の共有ディスクを5つ作成します。 共有ディスクの構成については、DeployClusterの設定に合わせる必要があるようです。
DeployClusterのドキュメントの記載に従い、RACテンプレートのNICが接続される仮想ネットワークを調整します。
DeployClusterのドキュメントの記載に従い、インポートしたVMテンプレートをcloneして、クラスタを構成する複数のVMを作成します。
今回はVM名にlb2032rを指定して2つのVMを作成しました。このとき、 VM名 lb2032r.0, lb2032r.1 のVMが作成されるようです。 また、ディスク領域の割り当て方法にはThin Cloneを指定しました。
DeployClusterのドキュメントの記載に従い、cloneして作成した全てのVMに共有ディスクを接続します。
DeployClusterツールをダウンロードし、 Oracle VM Managerをインストールしたマシンに配置します。
ここでは /home/oracle/deployclusterに配置しました。
DeployClusterツールをインストールしたディレクトリ(/home/oracle/deploycluster) に、netconfig.iniを配置します。
netconfig.iniの記載内容は以下のとおりです。(IPアドレスはXXXXXでマスクしています) 今回はnetconfig_lb2032r.iniというファイル名にしています。
# Node specific information
NODE1=lb2032r1
NODE1IP=XXXXX
NODE1PRIV=lb2032r1-priv
NODE1PRIVIP=XXXXX
NODE1VIP=lb2032r1-vip
NODE1VIPIP=XXXXX
NODE2=lb2032r2
NODE2IP=XXXXX
NODE2PRIV=lb2032r2-priv
NODE2PRIVIP=XXXXX
NODE2VIP=lb2032r2-vip
NODE2VIPIP=XXXXX
# Common data
PUBADAP=eth0
PUBMASK=255.255.0.0
PUBGW=XXXXX
PRIVADAP=eth1
PRIVMASK=255.255.0.0
RACCLUSTERNAME=lb2032cluster
DOMAINNAME=domain
DNSIP=
# Device used to transfer network information to second node
# in interview mode
NETCONFIG_DEV=/dev/xvdc
# 11gR2 specific data
SCANNAME=lb2032r-scan
SCANIP=XXXXX
Oracle VM Managerをインストールしたマシンで、deploycluster.pyを実行します。
引数 -p にはOracle VM Managerのadminユーザーのパスワードを指定します。
[oracle@csov3m01 deploycluster]$ ./deploycluster.py -u admin -p XXXXX -M lb2032r.0,lb2032r.1 -N netconfig_lb2032r.ini
Oracle RAC OneCommand (v1.1.3) for Oracle VM - deploy cluster - (c) 2011-2012 Oracle Corporation
(com: 26700:v1.1.0, lib: 128482:v1.1.1, var: 1300:v1.1.3) - v2.4.3 - csov3m01 (x86_64)
Invoked as oracle at Thu Nov 29 14:03:10 2012 (size: 37700, mtime: Tue Sep 25 23:45:57 2012)
Using: ./deploycluster.py -u admin -p **** -M lb2032r.0,lb2032r.1 -N netconfig_lb2032r.ini
INFO: Attempting to connect to Oracle VM Manager...
INFO: Oracle VM Client (3.1.1.399) protocol (1.8) CONNECTED (tcp) to
Oracle VM Manager (3.1.1.305) protocol (1.8) IP (XXXXX) UUID (0004fb0000010000bdfdccc60b848581)
INFO: Inspecting /home/oracle/deploycluster/netconfig_lb2032r.ini for number of nodes defined....
INFO: Detected 2 nodes in: /home/oracle/deploycluster/netconfig_lb2032r.ini
INFO: Located a total of (2) VMs;
2 VMs with a simple name of: ['lb2032r.0', 'lb2032r.1']
INFO: Verifying all (2) VMs are in Running state
INFO: VM with a simple name of "lb2032r.0" is in a Stopped state, attempting to start it...OK.
INFO: VM with a simple name of "lb2032r.1" is in a Stopped state, attempting to start it...OK.
INFO: Detected that all (2) VMs specified on command have (5) common shared disks between them (ASM_MIN_DISKS=5)
INFO: The (2) VMs passed basic sanity checks and in Running state, sending cluster details as follows:
netconfig.ini (Network setup): /home/oracle/deploycluster/netconfig_lb2032r.ini
buildcluster: yes
INFO: Starting to send cluster details to all (2) VM(s).....
INFO: Sending to VM with a simple name of "lb2032r.0"....
INFO: Sending to VM with a simple name of "lb2032r.1"......
INFO: Cluster details sent to (2) VMs...
Check log (default location /u01/racovm/buildcluster.log) on build VM (lb2032r.0)...
INFO: deploycluster.py completed successfully at 14:03:47 in 36.6 seconds (00m:36s)
Logfile at: /home/oracle/deploycluster/deploycluster1.log
deploycluster.pyの実行はすぐに終了しますが、VMではOracle 製品の各種構成作業が実行されています。
VMで実行されている Oracle 製品の各種構成作業は /u01/racovm/buildcluster.log から確認できます。 sshまたはxm consoleなどでVMに接続し、buildcluster.logをチェックします。
なお、VMのネットワーク設定はdeploycluster.py実行直後の早期段階でに完了しているようですので、sshで接続できます。
[root@csov3s01 ~]# xm list
Name ID Mem VCPUs State Time(s)
0004fb0000060000da5b7cab5a429e2c 5 2048 1 -b---- 41.8
0004fb0000060000dfffd5926a0e4ff0 6 2048 1 -b---- 54.0
Domain-0 0 644 4 r----- 3474.7
[root@csov3s01 ~]# xm console 5
:
Oracle Linux Server release 6.2
Kernel 2.6.32-300.25.1.el6uek.x86_64 on an x86_64
lb2032r1 login: root
Password:←★ovsrootを入力
[root@lb2032r1 ~]# cd /u01/racovm
[root@lb2032r1 racovm]# ls
buildcluster.log GetSystemTimeZone.class params.ini
buildcluster.sh kitversion.txt params.ini.bck
cleanlocal.sh mcast patches
common.sh netconfig racovm.sh
crsconfig_params.usedby_last_clone netconfig.ini README.txt
diskconfig.sh netconfig.ini.bck ssh
doall.sh netconfig-sample64.ini
files netconfig.sh
[root@lb2032r1 racovm]# tail -f buildcluster.log
pa cert
peer root cert TP
profile reader root cert TP
pa root cert TP
peer pa cert TP
pa peer cert TP
profile reader pa cert TP
profile reader peer cert TP
peer user cert
pa user cert
Adding Clusterware entries to upstart
oracleoks: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
:
buildcluster.logを抜粋します。
Invoking on lb2032r1 as root...
Oracle RAC 11gR2 OneCommand (v1.3.7) for Oracle VM - (c) 2010-2012 Oracle Corporation
Cksum: [1412992785 286600 racovm.sh] at Thu Nov 29 00:04:45 EST 2012
Kernel: 2.6.32-300.25.1.el6uek.x86_64 (x86_64) [1 processor(s)] 1994 MB
Kit Version: 11.2.0.3.2
Step(s): buildcluster
:
INFO (node:lb2032r1): Running on: lb2032r1 as root: /u01/app/11.2.0/grid/bin/olsnodes -n -s -t
lb2032r1 1 Active Unpinned
lb2032r2 2 Active Unpinned
INFO (node:lb2032r1): Running on: lb2032r1 as oracle: unset SRVM_TRACE; export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1; /u01/app/oracle/product/11.2.0/dbhome_1/bin/srvctl status database -d ORCL
Instance ORCL1 is running on node lb2032r1
Instance ORCL2 is running on node lb2032r2
INFO (node:lb2032r1): Running on: lb2032r1 as root: /u01/app/11.2.0/grid/bin/crsctl status resource -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE lb2032r1
ONLINE ONLINE lb2032r2
ora.LISTENER.lsnr
ONLINE ONLINE lb2032r1
ONLINE ONLINE lb2032r2
ora.asm
ONLINE ONLINE lb2032r1 Started
ONLINE ONLINE lb2032r2 Started
ora.gsd
OFFLINE OFFLINE lb2032r1
OFFLINE OFFLINE lb2032r2
ora.net1.network
ONLINE ONLINE lb2032r1
ONLINE ONLINE lb2032r2
ora.ons
ONLINE ONLINE lb2032r1
ONLINE ONLINE lb2032r2
ora.registry.acfs
ONLINE ONLINE lb2032r1
ONLINE ONLINE lb2032r2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE lb2032r1
ora.cvu
1 ONLINE ONLINE lb2032r1
ora.lb2032r1.vip
1 ONLINE ONLINE lb2032r1
ora.lb2032r2.vip
1 ONLINE ONLINE lb2032r2
ora.oc4j
1 ONLINE ONLINE lb2032r1
ora.orcl.db
1 ONLINE ONLINE lb2032r1 Open
2 ONLINE ONLINE lb2032r2 Open
ora.scan1.vip
1 ONLINE ONLINE lb2032r1
INFO (node:lb2032r1): For an explanation on resources in OFFLINE state, see Note:1068835.1
2012-11-29 00:25:08:[clusterstate:Time :lb2032r1] Completed successfully in 3 seconds (0h:00m:03s)
2012-11-29 00:25:08:[buildcluster:Done :lb2032r1] Build 11gR2 RAC Cluster
2012-11-29 00:25:08:[buildcluster:Time :lb2032r1] Completed successfully in 1223 seconds (0h:20m:23s)
20分程度でOracle 製品の各種構成作業は終了しています。(VMはSSD上に配置)
DeployClusterのドキュメントの記載を確認しながら実行しましたが、VMテンプレートのテンプレートから約1時間程度で作業は完了しました。
deploycluster.pyの設定ファイルを修正すれば、変更できる可能性がありますが、 現時点では調べきれていません。(一部設定はparam.iniの修正で対応できそう・・・)
[oracle@lb2032r1 ~]$ env |grep ORA
ORACLE_UNQNAME=ORCL
ORACLE_SID=ORCL1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
[oracle@lb2032r1 ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 29-NOV-2012 00:53:29
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 29-NOV-2012 00:17:29
Uptime 0 days 0 hr. 36 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/lb2032r1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.31.136.1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.31.136.2)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "ORCL" has 1 instance(s). ←★
Instance "ORCL1", status READY, has 1 handler(s) for this service...
Service "ORCLXDB" has 1 instance(s).
Instance "ORCL1", status READY, has 1 handler(s) for this service...
The command completed successfully
日本語エラーメッセージは正常に表示されそうです。
[oracle@lb2032r1 ~]$ export NLS_LANG=Japanese_Japan.AL32UTF8
[oracle@lb2032r1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 木 11月 29 00:32:16 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> select * from hoge;
select * from hoge
*
ERROR at line 1:
ORA-00942: 表またはビューが存在しません。
タイムゾーンはESTでした。
[oracle@lb2032r1 racovm]$ date
Thu Nov 29 00:39:29 EST 2012 ←★
ホスト名にドメインが指定されていません
[oracle@lb2032r1 ~]$ hostname
lb2032r1←★?? ドメインは?
[oracle@lb2032r1 ~]$ domainname
(none)