リカバリカタログ使用時に、ターゲットデータベースとしてPDBに接続する

ORACLE MASTER Gold DBA 2019 の出題範囲の中でも、バックアップとマルチテナントの複合問題ゆえに理解しづらいこの機能を検証する。

検証用に、同一CDB内にターゲットのPDBとリカバリカタログ用のPDBを作成する。

イメージとしては以下のような構成になる。

あらかじめCDBはアーカイブログモードに変更しておくこと。

準備

ターゲットのPDBを作成

シードPDBから作成する。

create pluggable database cdb19p1
admin user admin1 identified by admin1 roles=(dba)
file_name_convert=('/pdbseed/','/cdb19p1/');

PDBをOPENして、次回CDB起動時に自動的にOPENするように状態を保存しておく。

alter pluggable database cdb19p1 open;
alter pluggable database cdb19p1 save state;

リカバリカタログ用のPDBを作成

こちらも、シードPDBから作成する。

create pluggable database cdb19cat
admin user admin1 identified by admin1 roles=(dba)
file_name_convert=('/pdbseed/','/cdb19cat/');

こちらもPDBをOPENして、状態を保存しておく。

alter pluggable database cdb19cat open;
alter pluggable database cdb19cat save state;

シードPDBから作成したPDBにはユーザ表領域が存在しないためこの時点で追加しておく。

alter session set container=cdb19cat;
create tablespace users datafile '/u01/app/oracle/oradata/CDB19/cdb19cat/users01.dbf' 
size 10M autoextend on;
alter database default tablespace users;

各データベースへの接続設定

tnsnames.ora にターゲットのPDBとリカバリカタログのPDBそれぞれに接続可能な設定を追加。

CDB19CAT =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oradbs.dn.home)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cdb19cat)
    )
  )

CDB19P1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oradbs.dn.home)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cdb19p1)
    )
  )

リカバリカタログ用のPDBに仮想プライベートカタログを作成

DB上にカタログ所有ユーザ(rcowner)を作成する。

sqlplus system/oracle@cdb19cat
create user rcowner identified by oracle quota unlimited on users;
grant recovery_catalog_owner to rcowner;

RMANでカタログ用のPDBに接続して、リカバリカタログを作成する。

rman catalog rcowner/oracle@cdb19cat
create catalog;

仮想プライベートデータベースサポートを有効化する。

sqlplus sys/oracle@cdb19cat as sysdba
@?/rdbms/admin/dbmsrmanvpc -vpd rcowner
SQL> @?/rdbms/admin/dbmsrmanvpc -vpd rcowner

Checking the operating user... Passed

Granting VPD privileges to the owner of the base catalog schema RCOWNER

========================================
VPD SETUP STATUS:
VPD privileges granted successfully!
Connect to RMAN base catalog and perform UPGRADE CATALOG.

リカバリカタログをアップデートする(upgradeコマンドを2回実行する必要あり)。

rman catalog rcowner/oracle@cdb19cat
upgrade catalog;
upgrade catalog;
RMAN> upgrade catalog

リカバリ・カタログの所有者はRCOWNERです。
UPGRADE CATALOGコマンドを再入力して、カタログのアップグレードを確認してください

RMAN> upgrade catalog

リカバリ・カタログがバージョン19.14.00.00.00にアップグレードしました
DBMS_RCVMANパッケージはバージョン19.14.00.00にアップグレードされました
DBMS_RCVCATパッケージはバージョン19.14.00.00.にアップグレードされました

PDBをカタログに登録する。登録自体はCDB単位で実行する必要がある。

rman target / catalog rcowner/oracle@cdb19cat
register database;
RMAN> register database;

データベースがリカバリ・カタログに登録されました。
リカバリ・カタログの完全再同期を開始しています
完全再同期が完了しました

仮想プライベートカタログを所有するユーザをカタログデータベースに作成する。

sqlplus system/oracle@cdb19cat
create user cdb19p1vpc identified by oracle quota unlimited on users;
grant create session to cdb19p1vpc;

仮想プライベートカタログ所有ユーザに権限を付与する。

rman catalog rcowner/oracle@cdb19cat
grant catalog for pluggable database cdb19p1 on database cdb19 to cdb19p1vpc;

ターゲットデータベースとしてPDBに接続してバックアップを実行

rman target sys/oracle@cdb19p1 catalog cdb19p1vpc/oracle@cdb19cat
backup database;

コメント