OMF+Data Guardにおけるdb_file_name_convertの必要性について

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

コメント