Data Guard環境でPDBを作成した後にTEMPファイルを作成する方法 (2023/09/26)

Data Guard環境でPDBを作成した後にTEMPファイルを作成する方法 (2023/09/26)

https://database-heartbeat.com/2023/09/26/temp-file-dg/




はじめに


Data Guard環境でプライマリにPDBを作成すると、そのPDBもスタンバイに作成されます。ただし、スタンバイではTEMPファイルが失われます。TEMPファイルを作成するために、顧客からスタンバイに切り替えてTEMPファイルを作成するというコメントを受け取りました。これは不要です。これにより、このブログ記事で利用できる選択肢が出ました。


スポイラー警報!PDBがオープンされると、Oracle Database 23cによってファイルが自動的に作成されます。



環境


  • Oracle Databaseバージョン19cは、Base Database Serviceを使用してOracle Cloudで実行
  • Oracle Databaseバージョン23cは、Base Database Serviceを使用してOracle Cloudで実行




Oracle Database 19c


スタンバイにTEMPファイルを作成するには、スタンバイが読み取り専用モードで開いている必要があります。


Active Data Guardオプション・ライセンスがある場合、これは簡単です。PDBを読取り専用モードでオープンし、TEMPファイルを作成します。

SQL> alter session set container = PDB001;
SQL> alter tablespace temp add tempfile;
SQL> select name from v$tempfile;

Active Data Guardオプション・ライセンスがない場合でも、スタンバイは読取り専用モードでオープンできます。ただし、REDO Applyが停止している間のみ。そのため、REDO Applyを停止し、PDBを読取り専用モードでオープンし、TEMPファイルを作成し、データベースをMOUNTモードで再起動して、REDO Applyを再度開始します。

DGMGRL> edit database <standby_db_unique_name> set state = 'apply-off';
SQL> alter database open;
SQL> alter pluggable database PDB001 open;
SQL> alter session set container = PDB001;
SQL> alter tablespace temp add tempfile;
SQL> alter session set container = cdb$root;
SQL> shutdown immediate
SQL> startup mount
DGMGRL> edit database <standby_db_unique_name> set state = 'apply-on';
DGMGRL> show configuration

この間、REDOがスタンバイ・ホストに引き続き送信されるため、プライマリはスタンバイによって引き続き保護されます。再度REDO Applyが開始されるまで適用されません。スタンバイをオープンする前にREDOを適用する必要があるため、この時間中または直後にスイッチオーバーまたはフェイルオーバーが必要な場合は、RTOが少し高くなる可能性があります。ただし、TEMPファイルを作成してデータベースを再起動しても、それほど時間がかかりません。完全性について言及されます。



Oracle Database 23c


Oracle Database 23cでは、スタンバイ上のTEMPファイルの心配は不要になりました。次の場合にPDBがオープンすると、自動的に作成されます。


  • スタンバイはOracle Managed Files (OMF)を使用します。つまり、db_create_file_destパラメータを設定して、データ・ファイルまたは一時ファイルの作成場所を定義します。
  • standby_file_managementパラメータがスタンバイでAUTOに設定されています。

-- on standby
SQL> select value from v$parameter where name='db_create_file_dest';
VALUE
---------------------------------------
/u02/app/oracle/oradata/CDB23c_dc2/
 
SQL> select value from v$parameter where name='standby_file_management';
VALUE
---------------------------------------
AUTO
 
-- on primary
SQL> create pluggable database pdb23c admin user pdb23cadmin identified by VerySecretPW__2023;
SQL> alter pluggable database pdb23c open;
 
-- on standby
SQL> alter pluggable database pdb23c open; -- when becomes primary, or requires ADG or stop Redo Apply
SQL> alter session set container=pdb23c;
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u02/app/oracle/oradata/CDB23c_dc1/CDB23c_dc2/03C1CA724D8B292BE06353000A0AA39B/datafile/o1_mf_temp_lgkk99nz_.dbf


まとめ


Oracle Database 19cでは、TEMPファイルが読取り専用モードでオープンしている間に、スタンバイPDBにTEMPファイルを作成する必要があります。ライセンス・ポリシーに準拠するために、この操作中にActive Data Guardオプションのライセンスを取得するか、REDO Applyを停止します。


Oracle Database 23cでは、スタンバイPDBがOracle Managed Filesを使用し、スタンバイでstandby_file_managementパラメータがAUTOに設定されている場合、スタンバイPDBがオープンされるとTEMPファイルが自動的に作成されます。



関連情報

コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)