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 をリカバリするための手作業を完全に省くことができるようになりました。
- スタンバイ上のPDBを無効とマークし、CDBメディアのリカバリーを続行する。
- スタンバイ状態のPDBを別のバックグラウンド・セッションで自動的にリカバリーする(PDB Recovery Isolation)。
- スタンバイ状態の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を作成して、お楽しみください。
その他の記事
コメント
コメントを投稿