21cのPDBリカバリ分離で生活が楽になる方法 (2022/01/31)

21cのPDBリカバリ分離で生活が楽になる方法 (2022/01/31)

https://database-heartbeat.com/2022/01/31/pdb-recovery-isolation-21c/



はじめに


Data Guard環境でのリモートPDBクローニングについては、以前のブログ記事ですでに説明しました。クローンしたPDBのデータファイルはスタンバイデータベース上に存在しないため、19cでスタンバイサイト上にPDBを作成するには、いくつかの手動手順が必要です。



Oracle Database バージョン 21c では、PDBリカバリ分離という新しい機能が導入され、以下のステップを自動的に実行することで、スタンバイ上の PDB をリカバリするための手作業を完全に省くことができるようになりました。


  1.     スタンバイ上のPDBを無効とマークし、CDBメディアのリカバリーを続行する。
  2.     スタンバイ状態のPDBを別のバックグラウンド・セッションで自動的にリカバリーする(PDB Recovery Isolation)。
  3.     スタンバイ状態のPDBを有効にして、Data Guardのメディアリカバリを続行する。


PDBリカバリ分離は、Data Guard環境でのリモートPDBクローニングを、たった1つのコマンドを実行するだけで簡単に行えるようにします。それでは見てみましょう。



環境


  •     ソース シングルインスタンス・マルチテナントデータベース バージョン21.4。PDBREMという名前のPDBが含まれており、これをリモートCDBにクローンする予定です。
  •     ターゲット Active Data Guard構成のシングルインスタンスマルチテナントデータベースバージョン21.4。リモートクローン操作はプライマリデータベース上で実行されます。



ソースデータベースでの作業

ステップ 1: 移行元データベースに C##SYSOPER ユーザーを用意


C##SYSOPERユーザーに、データベースリンクに必要な権限を付与します。

SQL> grant create session, sysoper to C##SYSOPER identified by WElcome123## container=all;
  
Grant succeeded.



対象のプライマリデータベース上

ステップ2:ターゲットからソースへのデータベースリンクの作成


ターゲットのプライマリデータベースに、ソースデータベースを指すデータベースリンクを作成します。

SQL> create database link DBLINK_TO_REM connect to C##SYSOPER identified by WElcome123## using '<connection_string_to_source_database>';
  
Database link created.


接続先のデータベースと同じ名前のデータベースリンクを使用しないため、global_namesパラメータをfalseに追加設定する必要があります。

SQL> alter system set global_names=false scope=both;
  
System altered.



ステップ3:ソースデータベースからリモートホットクローンPDBを作成


前のステップのデータベースリンクを使用して、ソースPDBからホットクローンを作成します。

SQL> create pluggable database REMCLONE from PDBREM@DBLINK_TO_REM keystore identified by "WElcome123##";
 
Pluggable database created.
 
SQL> alter pluggable database REMCLONE open;
  
Pluggable database altered.


これだけです。CREATE PLUGGABLE DATABASEコマンドに追加のパラメータを指定する必要もなく、スタンバイ側で新しいPDBをリカバリする心配もありません。すべてはバックグラウンドで自動的に行われたのです。

-- on primary
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB21                          READ WRITE NO
         4 REMCLONE                       READ WRITE NO
 
-- on standby
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB21                          MOUNTED
         4 REMCLONE                       MOUNTED
 
SQL> select name from v$datafile where con_id=4;
NAME
------------------------------------------------------------------------------------------------------------------------
/u02/app/oracle/oradata/CDB21_fra385/CDB21_FRA385/D6663CA8FB51D59DE0532C000A0AC2BC/datafile/o1_mf_system_jyzlxx5c_.dbf
/u02/app/oracle/oradata/CDB21_fra385/CDB21_FRA385/D6663CA8FB51D59DE0532C000A0AC2BC/datafile/o1_mf_sysaux_jyzlxqmh_.dbf
/u02/app/oracle/oradata/CDB21_fra385/CDB21_FRA385/D6663CA8FB51D59DE0532C000A0AC2BC/datafile/o1_mf_undotbs1_jyzlxom1_.dbf
/u02/app/oracle/oradata/CDB21_fra385/CDB21_FRA385/D6663CA8FB51D59DE0532C000A0AC2BC/datafile/o1_mf_users_jyzlxnh0_.dbf


このように、スタンバイ上のデータファイルはすでに作成されています。



考察


PDBリカバリの分離は、Active Data Guardの機能です。そのため、Active Data Guardの設定とオプションライセンスが必要です。


データベースがTDE暗号を使用している場合(Oracle Cloudでは必須)、クローンPDB用に新しいTDE Master Encryption Keyを作成し、TDE Walletファイルをスタンバイ・ホストにコピーする必要があります。Oracle Key Vault (OKV)を使用している場合を除きます。



まとめ


21c の PDB リカバリの分離は、Multitenant と Data Guard の統合をさらに一歩進めたものです。ホットクローニングだけでなく、PDB上で行われるポイントインタイムリカバリーやフラッシュバックデータベース操作においても、スタンバイ上でPDBをシームレスにリカバリーすることができます。



この新しいクールな機能を、最小限の労力で今すぐ試してみたいと思いませんか?Oracle Cloud Free Tierアカウントを取得し、数分でVM DB Systemsを作成して、お楽しみください。


その他の記事

コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle Cloud Infrastructure Secure Desktopsを発表: デスクトップ仮想化のためのOracleのクラウドネイティブ・サービス (2023/06/28)

Oracle Cloudのデータベースをオブジェクト・ストレージにバックアップする3つの方法 (2021/12/13)