ここではスタンバイ運用でOracle ASM を使用する場合の構築手順について説明します。
ポイント
スタンバイ運用で Oracle ASM を使用する場合は Oracle Grid Infrastructure をインストールする必要があります。
注意
Oracle Grid Infrastructure をインストールする場合は Oracle Database のインストールユーザーと Oracle Grid Infrastructure のインストールユーザーを分割する構成をサポートします。単一インストールユーザーの構成はサポート対象外です。
また、Oracle Database のインストールユーザーの ORACLE_BASE 環境変数と Oracle Grid Infrastructure のインストールユーザーの ORACLE_BASE 環境変数は、異なるディレクトリを指定してください。
Oracle ASMのパラメータファイルおよびパスワードファイルを格納するディスクグループは、ノード間で共有しません。
Oracle Grid Infrastructure および Oracle Database は両ノードのローカルディスクにインストールします。
Oracle ASM インスタンスは両ノードで作成し、待機ノードでは運用ノードで作成したデータベースを格納するディスクグループをマウントします。データベースは運用ノードで作成し、待機ノードでは運用ノードで作成したデータベースを動作させるための設定をします。
以下に、構築手順を示します。
項番 | 概要 | |
---|---|---|
運用ノード | 待機ノード | |
1 | カーネルパラメータの設定 | カーネルパラメータの設定 |
2 | Grid ユーザー、Oracle ユーザーを作成 | Grid ユーザー、Oracle ユーザーを作成 |
3 | 共用ディスク装置の設定 | |
4 | Oracle リソースを含まない userApplication の作成 | Oracle リソースを含まない userApplication の作成 |
5 | userApplication の起動 | |
6 | Oracle Grid Infrastructure をインストール | |
7 | データベースを格納するDiskgroupを追加 | |
8 | Oracle Database をインストール | |
9 | データベースを作成 | |
10 | Oracle リスナーのIPアドレスを修正 | |
11 | データベースのパラメータ・ファイルの確認 | |
12 | Oracle データベースのディレクトリ構成を確認 | |
13 | データベース、Oracle ASM、Oracle リスナーを停止 | |
14 | userApplication を切替え | |
15 | Oracle Grid Infrastructure をインストール | |
16 | データベースを格納するDiskgroupをマウント | |
17 | Oracle Database をインストール | |
18 | Oracleデータベースの環境設定 | |
19 | SYSTEM ユーザーパスワードの登録 | SYSTEM ユーザーパスワードの登録 |
20 | Oracle リスナーの再起動 | |
21 | Oracle ASMの再起動 | |
22 | データベースリソースの登録 | |
23 | データベースリソースの起動 | |
24 | データベース、Oracle ASM、Oracle リスナーを停止 |
各手順の詳細は以下の通りです。
カーネルパラメータの設定
PRIMECLUSTERで使用する値に、Oracleデータベース自身が使用する値を加えたものを/etc/sysctl.confに設定する必要があります。カーネルパラメータの設定は使用するOracle Databaseのバージョンやデータベースの構成によって異なるため、Oracle Databaseのインストールガイドを参照してください。パラメータの設定はすべてのノードで同一になることを推奨します。
カーネルパラメータsemopmには、4以上の値を設定してください。
Grid ユーザー、Oracle ユーザーを作成
Oracle Grid Infrastructure のインストールユーザーとして Grid ユーザーを、Oracle Database のインストールユーザーとして Oracle ユーザーを作成してください。単一インストールユーザーの構成はサポート対象外です。
Grid ユーザーの ORACLE_BASE 環境変数と Oracle ユーザーの ORACLE_BASE 環境変数は、異なるディレクトリを指定してください。
Grid ユーザーの ORACLE_HOME 環境変数は Oracle Grid Infrastructure の ORACLE_HOME を設定してください。Oracle ユーザーの ORACLE_HOME 環境変数は、Oracle Database の ORACLE_HOME を設定してください。Grid ユーザーの ORACLE_SID 環境変数と Oracle ユーザーの ORACLE_SID 環境変数を設定してください。
ユーザーID、グループID、環境変数は、全ノードで同一にしてください。
例
Oracle ユーザーの環境変数の設定例です。
(.bash_profile)
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=/u01/app/oracle/product/db; export ORACLE_HOME ORACLE_SID=ora; export ORACLE_SID PATH=$ORACLE_HOME/bin:/usr/bin:/bin:/usr/bin/X11/:/usr/local/bin; export PATH
例
Grid ユーザーの環境変数の設定例です。
(.bash_profile)
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE ORACLE_HOME=/u01/app/grid/product/db; export ORACLE_HOME ORACLE_SID=+ASM; export ORACLE_SID PATH=$ORACLE_HOME/bin:/usr/bin:/bin:/usr/bin/X11/:/usr/local/bin; export PATH
共用ディスク装置の設定
Oracle ASM で管理する共用ディスク装置を設定してください。このときデータベースを格納するための共用ディスクを作成してください。作成した共用ディスクのデバイスファイルの所有者には Grid ユーザーを設定してください。共用ディスクは以下の3つが最低必要です。
運用ノードOracle ASM用ディスク
運用ノードのOracle ASMを格納します。サイズは300MB以上にしてください。
待機ノードOracle ASM用ディスク
待機ノードのOracle ASMを格納します。サイズは300MB以上にしてください。
データベース用ディスク
データベースを格納します。両ノードで使用します。
Oracle リソースを含まない userApplication の作成
Oracle Grid Infrastructure をインストールする前に Oracle リソースを含まない userApplication を作成してください。以下の章を参考にして userApplication を作成してください。
運用ノードで userApplication の起動
運用ノードで userApplication を起動し、共用ディスク装置および論理IPアドレスが活性化されたことを確認してください。
運用ノードへ Oracle Grid Infrastructure をインストール
Oracle Databaseのマニュアルおよびインストールガイドに従って、運用ノードのローカルディスクへ Grid ユーザーで Oracle Grid Infrastructure をインストールしてください。
Oracle Grid Infrastructureのインストール時のオプションは“Install and Configure Oracle Grid Infrastructure for a Standalone Server”を選択し、運用ノードOracle ASM用ディスクにOracle ASMを格納するDiskgroupを作成してください。
Oracle ASM インスタンス作成時は SID の先頭に「+」がつくように設定してください (デフォルトでは“+ASM”となります) 。
運用ノードで データベース用Diskgroupを追加
asmcaまたはSQL*Plusでデータベース用ディスクにデータベース用Diskgroupを追加します。asmcaについては Oracle Grid Infrastructure のマニュアルを参照してください。ここではSQL*Plusの手順を説明します。
Grid ユーザーになり、SQL*PlusでASMインスタンスに接続します。
# su - <Gridユーザー> $ export ORACLE_SID=<ASMのSID> $ sqlplus / as sysasm
ASM_DISKSTRINGパラメータにデータベース用Diskgroupに関連付けられたディスク検出文字列を追加します
SQL> alter system set asm_diskstring = <運用ノードOracle ASM用Diskgroupの検出文字列> , <データベース用Diskgroupの検出文字列> scope=both;
<運用ノードOracle ASM用Diskgroupの文字列>には、"6."で作成したDiskgroupのディスク検出文字列を指定します。
データベース用Diskgroupの文字列が複数ある場合は、",”で区切り指定してください。
ASM_DISKGROUPパラメータにデータベース用Diskgroupを追加します
SQL> alter system set asm_diskgroups = <運用ノードOracle ASM用Diskgroup> , <データベース用Diskgroup> scope=both;
<運用ノードOracle ASM用ディスクの文字列>には、"6."で作成したDiskgroupを指定します。
データベース用Diskgroupが複数ある場合は、",”で区切り指定してください。
データベース用Diskgroupを作成します
SQL> create diskgroup <データベース用Diskgroup> disk <データベース用Diskgroupのディスク検出文字列>;
データベース用Diskgroupが複数ある場合は、Diskgroup分実行してください。
例
データベース用Diskgroupが、2つある場合の例です。
運用ノードOracle ASM用DiskgroupのDiskgroup名が"ASM1"で、ディスク検出文字列が"/dev/raw/raw1"
データベース用DiskgroupのDiskgroup名が"DATA"で、ディスク検出文字列が"/dev/raw/raw3"、"/dev/raw/raw4"
データベース(バックアップ)用DiskgroupのDiskgroup名が" BACKUP "で、ディスク検出文字列が"/dev/raw/raw5"
ASM用Diskgroupの"ASM1"は、すでにマウントされています。
SQL> alter system set asm_diskstring = '/dev/raw/raw1' , '/dev/raw/raw3' , '/dev/raw/raw4', '/dev/raw/raw5' scope=both; SQL> alter system set asm_diskgroups = 'ASM1' , 'DATA' , 'BACKUP' scope=both; SQL> create diskgroup 'DATA' disk '/dev/raw/raw3', '/dev/raw/raw4'; SQL> create diskgroup 'BACKUP' EXTERNAL REDUNDANCY disk '/dev/raw/raw5';
運用ノードへ Oracle Database をインストール
Oracle Databaseのマニュアルおよびインストールガイドに従って、運用ノードのローカルディスクへ Oracle ユーザーで Oracle Database をインストールしてください。ここでは、Oracle Database ソフトウェアのみをインストールして、データベースの作成は行わないでください。
運用ノードでデータベースを作成
運用ノードで“7.”で追加した データベース用Diskgroup 上にデータベースを作成してください。
Oracle リスナーのIPアドレスを修正
論理IPアドレスを使用した Oracle リスナーの切替え運用をする場合は、以下のファイルを修正して Oracle リスナーの IPアドレスに論理IPアドレスを設定してください。
<Grid ユーザーの$ORACLE_HOME>/network/admin/listener.ora
また、Oracle リスナーの監視で、tnsping による Oracle リスナー動作監視をする場合は、以下のファイルの設定をしてください。
<Oracle ユーザーの$ORACLE_HOME>/network/admin/tnsnames.ora
<Grid ユーザーの$ORACLE_HOME>/network/admin/tnsnames.ora
修正方法については「2.2.6 データベースの作成/設定」を参照してください。
データベースのパラメータ・ファイルの確認
運用ノード上で Grid ユーザーで以下のコマンドを実行し、データベースのパラメータ・ファイルの場所を確認してください。
# su - <Grid ユーザー> $ crsctl status resource <Oracleデータベースリソース名> -p | grep SPFILE SPFILE=+DATA/xxxx/spfilexxxx.ora ←この行の“SPFILE=”から後ろを記録する
例
Oracle データベースリソース名は、crsctl status resource -t コマンドで確認可能です。
# su - <Grid ユーザー> $ crsctl status resource -t -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DATA.dg ONLINE ONLINE node1 ora.LISTENER.lsnr ONLINE ONLINE node1 ora.asm ONLINE ONLINE node1 Started ora.ons OFFLINE OFFLINE node1 -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.orcl.db 1 ONLINE ONLINE node1 Open ora.cssd 1 ONLINE ONLINE node1 ora.diskmon 1 OFFLINE OFFLINE ora.evmd 1 ONLINE ONLINE node1 $
この構成の場合、 "ora.orcl.db" が、Oracle データベースリソース名になります。
データベースのディレクトリ構成を確認
初期化パラメータの以下に設定されているディレクトリの、パスとアクセス権限を確認して下さい。
AUDIT_FILE_DEST、BACKGROUND_DUMP_DEST、CORE_DUMP_DEST、USER_DUMP_DEST、DIAGNOSTIC_DEST
データベース、Oracle ASM、Oracle リスナーを停止
運用ノード上で Grid ユーザーで以下のコマンドを実行し、データベース、Oracle ASM、Oracle リスナーを停止してください。<db_name>は“9.”で作成したデータベース名を指定してください。<diskgroup_name>は“6.”と“7.”で作成した Diskgroup を指定してください。
# su - <Grid ユーザー> $ srvctl stop database -d <db_name> $ srvctl stop diskgroup -g <diskgroup_name> $ srvctl stop asm $ srvctl stop listener
待機ノードへ userApplication を切替え
待機ノードへ userApplication を切替えて、共用ディスク装置および論理IPアドレスが活性化されたことを確認してください。
待機ノードへ Oracle Grid Infrastructure をインストール
Oracle Databaseのマニュアルおよびインストールガイドに従って、待機ノードのローカルディスクへ Grid ユーザーで Oracle Grid Infrastructure をインストールしてください。
Oracle Grid Infrastructureのインストール時のオプションは“Install and Configure Oracle Grid Infrastructure for a Standalone Server”を選択し、待機ノードOracle ASM用ディスクにOracle ASMを格納するDiskgroupを作成してください。Oracle ASM インスタンスの SID は“6.”で作成したOracle ASM インスタンスと同じ SID を指定してください。Oracle ASMを格納するDiskgroup は“6.”で作成した Diskgroup と異なる名前、ディスク検出文字列にしてください。
待機ノードで データベース用のDiskgroupをマウント
Grid ユーザーになり、SQL*PlusでASMインスタンスに接続します。
# su - <Gridユーザー> $ export ORACLE_SID=<ASMのSID> $ sqlplus / as sysasm
ASM_DISKSTRINGパラメータにデータベース用のDiskgroupに関連付けられたディスク検出文字列を追加します
SQL> alter system set asm_diskstring = <待機ノードOracle ASM用Diskgroupの検出文字列> , <データベース用Diskgroupの検出文字列> scope=both;
<待機ノードOracle ASM用Diskgroupの文字列>には、"15."で作成したDiskgroupのディスク検出文字列を指定します。
データベース用Diskgroupの文字列が複数ある場合は、",”で区切り指定してください。
ASM_DISKGROUPパラメータにデータベース用のDiskgroupを追加します
SQL> alter system set asm_diskgroups = <待機ノードOracle ASM用Diskgroup> , <データベース用Diskgroup> scope=both;
<待機ノードOracle ASM用ディスクの文字列>には、"15."で作成したDiskgroupを指定します。
データベース用Diskgroupが複数ある場合は、",”で区切り指定してください。
データベース用のDiskgroupをマウントします
SQL> alter diskgroup <データベース用Diskgroup> mount;
データベース用Diskgroupが複数ある場合は、Diskgroup分実行してください。
例
データベース用Diskgroupが、2つある場合の例です。
待機ノードOracle ASM用DiskgroupのDiskgroup名が"ASM2"で、ディスク検出文字列が"/dev/raw/raw2"
データベース用DiskgroupのDiskgroup名が"DATA"で、ディスク検出文字列が"/dev/raw/raw3"、"/dev/raw/raw4"
データベース(バックアップ)用DiskgroupのDiskgroup名が" BACKUP "で、ディスク検出文字列が"/dev/raw/raw5"
ASM用Diskgroupの"ASM2"は、すでにマウントされています。
SQL> alter system set asm_diskstring = '/dev/raw/raw2' , '/dev/raw/raw3' , '/dev/raw/raw4', '/dev/raw/raw5' scope=both; SQL> alter system set asm_diskgroups = 'ASM2' , 'DATA' , 'BACKUP' scope=both; SQL> alter diskgroup 'DATA' mount; SQL> alter diskgroup 'BACKUP' mount;
Oracle Databaseのマニュアルおよびインストールガイドに従って、待機ノードのローカルディスクへ Oracle ユーザーで Oracle Database をインストールしてください。ここでは、Oracle Database ソフトウェアのみをインストールして、データベースの作成は行わないでください。
Oracleデータベースの環境設定
運用ノードの以下のディレクトリを、待機ノードへコピーしてください。
<Grid ユーザーの$ORACLE_HOME>/network/admin 配下
"12."で確認したディレクトリを、待機ノードでも作成して下さい。
上記でコピーまたは作成したディレクトリとファイルのアクセス権限を運用ノードと同一にしてください。
アーカイブ REDO ログ出力先などの設定を運用ノードで行った場合は、待機ノードでも同一の設定をしてください。
SYSTEM ユーザーパスワードの登録
任意の1ノード(運用ノードまたは待機ノード)で実行してください。
PRIMECLUSTER Wizard for Oracle では、Oracle データベースの SYSTEM ユーザーとして Oracle インスタンスに接続し、Oracle インスタンスの監視をしています。そのため、SYSTEM ユーザーのパスワードを、PRIMECLUSTER Wizard for Oracle に登録する必要があります。「4.3 clorapass - 監視用パスワードの登録」を参照して、SYSTEM ユーザーのパスワードを登録してください。
マルチテナント機能を使用したデータベースを作成した場合は、CDBのSYSTEM ユーザーのパスワードを登録してください。PDBのローカルユーザーのパスワードを登録する必要はありません。
Oracle リスナーの再起動
待機ノード上で Grid ユーザーで以下のコマンドを実行し、Oracle リスナーを再起動できることを確認してください。
# su - <Grid ユーザー> $ srvctl stop listener $ srvctl start listener
Oracle ASM の再起動
待機ノード上で Grid ユーザーで以下のコマンドを実行し、Oracle ASM を再起動してください。
# su - <Grid ユーザー> $ srvctl stop asm $ srvctl start asm
データベースリソースの登録
待機ノードの Oracle Restart に“9.”で作成したデータベースリソースを登録します。待機ノード上でOracle ユーザーで以下のコマンドを実行してください。<db_unique_name>と<db_name>は“9.”で作成したデータベースのデータベースユニーク名とデータベース名を指定してください。<oracle_home>は Oracle ユーザーの ORACLE_HOME を指定してください。<パラメータ・ファイルのパス>は“11.”で確認したデータベースのパラメータ・ファイルを指定してください。<disk_group_list>は“7.”で追加した Diskgroup を指定してください。
# su - <Oracle ユーザー> $ srvctl add database -d <db_unique_name> -o <oracle_home> -p <パラメータ・ファイルのパス> -n <db_name> -a <disk_group_list>
注意
本コマンドをOracle Data Guardのスタンバイ・サイトで実行する場合、<db_unique_name>と<db_name>が異なることに注意してください。
待機ノードでデータベースリソースの起動
待機ノード上で Grid ユーザーで以下のコマンドを実行し、データベースを起動できることを確認してください。<db_name>は“8.”で作成したデータベース名を指定してください。
# su - <Grid ユーザー> $ srvctl start database -d <db_name>
データベース、Oracle ASM、Oracle リスナーを停止
待機ノード上で Grid ユーザーで以下のコマンドを実行し、データベース、Oracle ASM、Oracle リスナーを停止してください。<db_name>は“9.”で作成したデータベース名を指定してください。<diskgroup_name>は“15.”と"16.”で作成またはマウントした Diskgroup を指定してください。
# su - <Grid ユーザー> $ srvctl stop database -d <db_name> $ srvctl stop diskgroup -g <diskgroup_name> $ srvctl stop asm $ srvctl stop listener
Oracle Grid Infrastructure および Oracle Database のインストールが完了したら、Oracle Restart の設定変更と userApplication の作成をします。これらの手順については、「2.3.2.1 環境構築時の注意」を参照してください。