Data Guardでプライマリとスタンバイのデータファイルの保存先が異なる場合は、初期化パラメータにdb_file_name_convertやlog_file_name_convertを指定しなければならない、と思いがち。
ただ、db_create_file_dest の指定により OMF(Oracle Managed Files)の構成になっている場合は指定する必要がないケースがある。以下のような状況を想定する。
- RAC同士のData Guard(ストレージにはASMを使用)
- 高速リカバリ領域を使用
- プライマリの db_create_file_dest、db_recovery_file_dest が 「+DATA」
- スタンバイの db_create_file_dest、db_recovery_file_dest が 「+DATA2」
実際、プライマリ(db_unique_name = db19p)のデータファイル、REDOログは以下のように作成されている。
RMAN> report schema;
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
データベースdb_unique_name DB19Pのデータベース・スキーマのレポート
永続データファイルのリスト
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 1040 SYSTEM YES +DATA/DB19P/DATAFILE/system.301.1142809391
3 1180 SYSAUX NO +DATA/DB19P/DATAFILE/sysaux.289.1142809427
4 715 UNDOTBS1 YES +DATA/DB19P/DATAFILE/undotbs1.290.1142809443
5 25 UNDOTBS2 YES +DATA/DB19P/DATAFILE/undotbs2.291.1142810019
7 5 USERS NO +DATA/DB19P/DATAFILE/users.295.1142809443
一時ファイルのリスト
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 139 TEMP 32767 +DATA/DB19P/TEMPFILE/temp.294.1142809499
SQL> select group#, member, type from v$logfile order by 3,2;
GROUP# MEMBER TYPE
---------- ---------------------------------------------------------------------- -------
1 +DATA/DB19P/ONLINELOG/group_1.293.1142809491 ONLINE
1 +DATA/DB19P/ONLINELOG/group_1.298.1142809489 ONLINE
2 +DATA/DB19P/ONLINELOG/group_2.292.1142809491 ONLINE
2 +DATA/DB19P/ONLINELOG/group_2.297.1142809489 ONLINE
3 +DATA/DB19P/ONLINELOG/group_3.288.1142810069 ONLINE
3 +DATA/DB19P/ONLINELOG/group_3.296.1142810071 ONLINE
4 +DATA/DB19P/ONLINELOG/group_4.286.1142810073 ONLINE
4 +DATA/DB19P/ONLINELOG/group_4.287.1142810073 ONLINE
10 +DATA/DB19P/ONLINELOG/group_10.307.1142810451 STANDBY
5 +DATA/DB19P/ONLINELOG/group_5.302.1142810387 STANDBY
6 +DATA/DB19P/ONLINELOG/group_6.303.1142810389 STANDBY
7 +DATA/DB19P/ONLINELOG/group_7.304.1142810393 STANDBY
8 +DATA/DB19P/ONLINELOG/group_8.305.1142810445 STANDBY
9 +DATA/DB19P/ONLINELOG/group_9.306.1142810449 STANDBY
14行が選択されました。
スタンバイの作成にはRMANのDuplicateコマンドを使いアクティブデータベース複製を行う。この時のRMANコマンドとしては以下のようになる(スタンバイはdb_unique_name = db19s)。
run {
duplicate target database for standby from active database
spfile
parameter_value_convert 'db19p','db19s'
set db_name='db19p'
set db_unique_name='db19s'
set db_create_file_dest='+DATA2'
set db_recovery_file_dest='+DATA2'
set log_archive_config='dg_config=(db19p,db19s)'
set log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=db19s'
set log_archive_dest_2='service=db19p async valid_for=(online_logfiles,primary_role) db_unique_name=db19p'
set fal_client='db19s'
set fal_server='db19p'
set cluster_database='false'
set control_files='+DATA2';
}
見てわかる通り、db_file_name_convertやlog_file_name_convertは指定していない。
この設定でDuplicateした後のスタンバイ側のデータファイルやREDOログの状況が以下。「+DATA2」のディスクグループに作成されていることがわかる。
RMAN> report schema;
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
RMAN-06139: 警告: 制御ファイルがREPORT SCHEMAに対して現行のものではありません
データベースdb_unique_name DB19Sのデータベース・スキーマのレポート
永続データファイルのリスト
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 1040 SYSTEM YES +DATA2/DB19S/DATAFILE/system.257.1142985643
3 1180 SYSAUX NO +DATA2/DB19S/DATAFILE/sysaux.258.1142985649
4 715 UNDOTBS1 YES +DATA2/DB19S/DATAFILE/undotbs1.270.1142985657
5 25 UNDOTBS2 YES +DATA2/DB19S/DATAFILE/undotbs2.269.1142985661
7 5 USERS NO +DATA2/DB19S/DATAFILE/users.268.1142985661
一時ファイルのリスト
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 139 TEMP 32767 +DATA2/DB19S/TEMPFILE/temp.288.1142986057
SQL> select group#, member, type from v$logfile order by 3,2;
GROUP# MEMBER TYPE
---------- ---------------------------------------------------------------------- -------
1 +DATA2/DB19S/ONLINELOG/group_1.266.1142985665 ONLINE
1 +DATA2/DB19S/ONLINELOG/group_1.267.1142985663 ONLINE
2 +DATA2/DB19S/ONLINELOG/group_2.264.1142985665 ONLINE
2 +DATA2/DB19S/ONLINELOG/group_2.265.1142985665 ONLINE
3 +DATA2/DB19S/ONLINELOG/group_3.274.1142985667 ONLINE
3 +DATA2/DB19S/ONLINELOG/group_3.275.1142985667 ONLINE
4 +DATA2/DB19S/ONLINELOG/group_4.276.1142985667 ONLINE
4 +DATA2/DB19S/ONLINELOG/group_4.277.1142985667 ONLINE
10 +DATA2/DB19S/ONLINELOG/group_10.272.1142985675 STANDBY
10 +DATA2/DB19S/ONLINELOG/group_10.273.1142985675 STANDBY
5 +DATA2/DB19S/ONLINELOG/group_5.278.1142985669 STANDBY
5 +DATA2/DB19S/ONLINELOG/group_5.279.1142985669 STANDBY
6 +DATA2/DB19S/ONLINELOG/group_6.280.1142985669 STANDBY
6 +DATA2/DB19S/ONLINELOG/group_6.281.1142985671 STANDBY
7 +DATA2/DB19S/ONLINELOG/group_7.282.1142985671 STANDBY
7 +DATA2/DB19S/ONLINELOG/group_7.283.1142985671 STANDBY
8 +DATA2/DB19S/ONLINELOG/group_8.262.1142985673 STANDBY
8 +DATA2/DB19S/ONLINELOG/group_8.263.1142985671 STANDBY
9 +DATA2/DB19S/ONLINELOG/group_9.261.1142985673 STANDBY
9 +DATA2/DB19S/ONLINELOG/group_9.271.1142985673 STANDBY
20行が選択されました。
ちなみに、今回高速リカバリ領域はOMFのパスと同じにしているが、通常は別のディスクグループに設定すると思う。その場合、多重化されているREDOログの片方が高速リカバリ領域のディスクグループに格納されるはずである。
この状態で、プライマリに表領域を追加してみる。OMFの場合本来ディスクグループ名も指定する必要はないが、スタンバイ側で適切に出力先が切り替わることを明確にするためあえて指定している。
SQL> create tablespace HOGE datafile '+DATA';
表領域が作成されました。
SQL> select tablespace_name, file_name from dba_data_files where tablespace_name='HOGE';
TABLESPACE FILE_NAME
---------- ----------------------------------------------------------------------
HOGE +DATA/DB19P/DATAFILE/hoge.321.1143498259
スタンバイ側では、db_file_name_convert の設定に従ってデータファイルが自動的に作成されることがわかる。
SQL> select tablespace_name, file_name from dba_data_files where tablespace_name='HOGE';
TABLESPACE FILE_NAME
---------- ----------------------------------------------------------------------
HOGE +DATA2/DB19S/DATAFILE/hoge.289.1143498261
コメント