本コンテンツはORACLE MASTER Gold DBA 2019(Oracle Database AdministrationⅡ)の試験トピックであるOracle Multitenant Architectureのバックアップ・リカバリに関する内容をご紹介します。今回は「マルチテナント環境におけるバックアップの実行」の問題を解きながら詳しく解説していきます。

————————————————-

それでは問題文を確認していきましょう。

マルチテナント環境におけるRMANのバックアップの説明について正しい内容を述べているものを選択してください(3つ選択してください。)。

1.    ルート・コンテナに接続してデータベース全体のバックアップ取得が可能である。
2.    特定のPDBに接続してそのPDBのバックアップ取得が可能である。
3.    特定のPDBに接続して plus archivelog オプションを指定するとエラーになる。
4.    特定のPDBに接続して plus archivelog オプションを指定するとアーカイブログが取得できる。
5.    ルート・コンテナに接続して、個々のPDBのバックアップを取得することはできない。
6.    ルート・コンテナに接続して、ルート・コンテナのみのバックアップ取得が可能である。

(解説)

今回はマルチテナント環境でのバックアップ取得に関する内容について解説していきたいと思います。Oracle Databaseにはバックアップ・リカバリ用の専用のツールとしてRMAN(Recovery Manager)がありますが、マルチテナント環境でも、もちろん使用することができます。マルチテナント環境で使用する場合は「どのコンテナに接続して操作をするか?」「バックアップ対象の資源は何になるか?」を意識して操作する必要があります。

CDBルート・コンテナに接続してバックアップ操作を行う場合はコンテナ・データベース全体のバックアップや個々のPDB単位のバックアップ取得も可能です。また共有資源である制御ファイルやSPFILE、アーカイブログ・ファイルもCDBルート・コンテナから取得が可能です。特定のプラガブル・データベースに接続した場合は、接続したPDB資源のバックアップが取得可能です(※)。まずはCDBルート・コンテナに接続した場合の代表的なバックアップ操作と実行ログを確認しておきましょう。

(※) 制御ファイルは手動バックアップでPDBからも取得可能です

CDB全体のバックアップ取得を実施した操作ログ

$ rman target /     ※SYSユーザーでCDBルート・コンテナに接続

RMAN> show all;   ※show all コマンドでRMANのすべてパラメータ設定を確認可能

CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
※制御ファイル、SPFILEの自動バックアップがONであることを確認(デフォルトON)

RMAN> backup database;  ※データベース全体のバックアップ

Starting backup at 11-APR-24

※↓↓↓CDBルートのバックアップ
input datafile file number=00001 name=/u02/app/oracle/oradata/ORCL/system01.dbf
input datafile file number=00003 name=/u02/app/oracle/oradata/ORCL/sysaux01.dbf
input datafile file number=00004 name=/u02/app/oracle/oradata/ORCL/undotbs01.dbf
input datafile file number=00007 name=/u02/app/oracle/oradata/ORCL/users01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T055850_m1gz0ttj_.bkp tag=TAG20240411T055850 comment=NONE

※↓↓↓PDB1のバックアップ
input datafile file number=00033 name=/u02/app/oracle/oradata/ORCL/pdb1/sysaux01.dbf
input datafile file number=00032 name=/u02/app/oracle/oradata/ORCL/pdb1/system01.dbf
input datafile file number=00034 name=/u02/app/oracle/oradata/ORCL/pdb1/undotbs01.dbf
input datafile file number=00038 name=/u02/app/oracle/oradata/ORCL/pdb1/users01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/15CB67D0B638405AE063CB0FED0ADF7B/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T055850_m1gz19z6_.bkp tag=TAG20240411T055850 comment=NONE

※↓↓↓PDB2のバックアップ
input datafile file number=00036 name=/u02/app/oracle/oradata/ORCL/pdb2/sysaux01.dbf
input datafile file number=00035 name=/u02/app/oracle/oradata/ORCL/pdb2/system01.dbf
input datafile file number=00037 name=/u02/app/oracle/oradata/ORCL/pdb2/undotbs01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/15CB67D0B63C405AE063CB0FED0ADF7B/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T055850_m1gz1f3x_.bkp tag=TAG20240411T055850 comment=NONE

※↓↓↓CDBシードのバックアップ
input datafile file number=00006 name=/u02/app/oracle/oradata/ORCL/pdbseed/sysaux01.dbf
input datafile file number=00005 name=/u02/app/oracle/oradata/ORCL/pdbseed/system01.dbf
input datafile file number=00008 name=/u02/app/oracle/oradata/ORCL/pdbseed/undotbs01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/E4BAA3F0C7433F6EE0530311ED0A0866/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T055850_m1gz1j7q_.bkp tag=TAG20240411T055850 comment=NONE

※↓↓↓制御ファイルとSPFILEのバックアップ
Starting Control File and SPFILE Autobackup at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/autobackup/2024_04_11/o1_mf_s_1165989555_m1gz1mhp_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 11-APR-24

CDBルートのみバックアップ取得を実施した操作ログ

$ rman target /     ※SYSユーザーでCDBルート・コンテナに接続

RMAN> backup pluggable database “CDB$ROOT”;  
※注意:CDB$ROOTはダブルコーテーションで囲む必要があります

Starting backup at 11-APR-24
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u02/app/oracle/oradata/ORCL/system01.dbf
input datafile file number=00003 name=/u02/app/oracle/oradata/ORCL/sysaux01.dbf
input datafile file number=00004 name=/u02/app/oracle/oradata/ORCL/undotbs01.dbf
input datafile file number=00007 name=/u02/app/oracle/oradata/ORCL/users01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T060647_m1gzhq80_.bkp tag=TAG20240411T060647 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
Finished backup at 11-APR-24

RMAN>

特定のPDBのバックアップ取得を実施した操作ログ

$ rman target /     ※SYSユーザーでCDBルート・コンテナに接続

RMAN> backup pluggable database PDB1;  
※カンマ指定で複数のPDBを指定できます

Starting backup at 11-APR-24
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00033 name=/u02/app/oracle/oradata/ORCL/pdb1/sysaux01.dbf
input datafile file number=00032 name=/u02/app/oracle/oradata/ORCL/pdb1/system01.dbf
input datafile file number=00034 name=/u02/app/oracle/oradata/ORCL/pdb1/undotbs01.dbf
input datafile file number=00038 name=/u02/app/oracle/oradata/ORCL/pdb1/users01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/15CB67D0B638405AE063CB0FED0ADF7B/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T060952_m1gzojrm_.bkp tag=TAG20240411T060952 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 11-APR-24

RMAN>

全体バックアップ+アーカイブログファイル取得を実施した操作ログ

$ rman target /     ※SYSユーザーでCDBルート・コンテナに接続

RMAN> backup database plus archivelog delete input;
※DELETE INPUTを指定するとアーカイブログのバックアップ後、アーカイブログを削除

※↓↓↓アーカイブログファイルのバックアップ
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=70 RECID=65 STAMP=1165990489
input archived log thread=1 sequence=71 RECID=66 STAMP=1165990491
input archived log thread=1 sequence=72 RECID=67 STAMP=1165990494

input archived log thread=1 sequence=83 RECID=78 STAMP=1165990517
input archived log thread=1 sequence=84 RECID=79 STAMP=1165990517
input archived log thread=1 sequence=85 RECID=80 STAMP=1165990533
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/backupset/2024_04_11/o1_mf_annnn_TAG20240411T061533_m1h005wk_.bkp tag=TAG20240411T061533 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

※↓↓↓バックアップ取得済みのアーカイブログファイル削除
channel ORA_DISK_1: deleting archived log(s)
archived log file name=
/u03/app/oracle/fast_recovery_area/ORCL/archivelog/2024_04_11/o1_mf_1_70_m1gzysy1_.arc RECID=65 STAMP=1165990489
archived log file name=
/u03/app/oracle/fast_recovery_area/ORCL/archivelog/2024_04_11/o1_mf_1_71_m1gzyv20_.arc RECID=66 STAMP=1165990491
archived log file name=
/u03/app/oracle/fast_recovery_area/ORCL/archivelog/2024_04_11/o1_mf_1_72_m1gzyy1l_.arc RECID=67 STAMP=1165990494

archived log file name=
/u03/app/oracle/fast_recovery_area/ORCL/archivelog/2024_04_11/o1_mf_1_83_m1gzzoh3_.arc RECID=78 STAMP=1165990517
archived log file name=
/u03/app/oracle/fast_recovery_area/ORCL/archivelog/2024_04_11/o1_mf_1_84_m1gzzojb_.arc RECID=79 STAMP=1165990517
archived log file name=
/u03/app/oracle/fast_recovery_area/ORCL/archivelog/2024_04_11/o1_mf_1_85_m1h0053v_.arc RECID=80 STAMP=1165990533
Finished backup at 11-APR-24

※↓↓↓データベース全体のバックアップ開始(ログ内容は「CDB全体のバックアップ取得」を参考)
Starting backup at 11-APR-24

RMAN>

表領域のバックアップ取得を実施した操作ログ

$ rman target /     ※SYSユーザーでCDBルート・コンテナに接続


RMAN> backup tablespace system;  ※CDBルートのSYSTEM表領域をバックアップ

Starting backup at 11-APR-24
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u02/app/oracle/oradata/ORCL/system01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T070049_m1h2o1dr_.bkp tag=TAG20240411T070049 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
Finished backup at 11-APR-24

RMAN>

RMAN> backup tablespace pdb1:users;  
※PDB1のUSERS表領域をバックアップ(「PDB1:USERS」 とPDB名の修飾が必要)

Starting backup at 11-APR-24
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00038 name=/u02/app/oracle/oradata/ORCL/pdb1/users01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/15CB67D0B638405AE063CB0FED0ADF7B/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T070221_m1h2qx7t_.bkp tag=TAG20240411T070221 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-APR-24

RMAN>

DBルート・コンテナからは様々な資源を指定してバックアップを取得可能なことが確認できました。では次に特定のPDBに接続した場合の操作について確認しておきましょう。

$ rman target sys/oracle_4U@pdb1     ※SYSユーザーでPDB1に接続

connected to target database: ORCL:PDB1 (DBID=3593659037)

RMAN> backup database;  ※PDB1の全体バックアップ

Starting backup at 11-APR-24
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00033 name=/u02/app/oracle/oradata/ORCL/pdb1/sysaux01.dbf
input datafile file number=00032 name=/u02/app/oracle/oradata/ORCL/pdb1/system01.dbf
input datafile file number=00034 name=/u02/app/oracle/oradata/ORCL/pdb1/undotbs01.dbf
input datafile file number=00038 name=/u02/app/oracle/oradata/ORCL/pdb1/users01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/15CB67D0B638405AE063CB0FED0ADF7B/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T072453_m1h425wc_.bkp tag=TAG20240411T072453 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 11-APR-24


RMAN> backup tablespace users;  ※PDB1のUSERS表領域をバックアップ

Starting backup at 11-APR-24
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00038 name=/u02/app/oracle/oradata/ORCL/pdb1/users01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/15CB67D0B638405AE063CB0FED0ADF7B/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T070221_m1h2qx7t_.bkp tag=TAG20240411T070221 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-APR-24

RMAN>

PDB接続の場合は接続しているPDB資源のバックアップ取得となります。他の資源が本当に取得できないかどうか実際に操作して確認しておきましょう。特にアーカイブログファイル取得の部分には着目してください。

$ rman target sys/oracle_4U@pdb1     ※SYSユーザーでPDB1に接続

connected to target database: ORCL:PDB1 (DBID=3593659037)

RMAN> backup pluggable database “CDB$ROOT”;  ※CDBルート・コンテナを取得しようとすると…

Starting backup at 11-APR-24
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 04/11/2024 07:30:55
RMAN-07536: command not allowed when connected to a Pluggable Database 
※エラーで取得できず


RMAN> backup pluggable database pdb2;  ※PDB2を取得しようとすると…

Starting backup at 11-APR-24
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 04/11/2024 07:32:32
RMAN-07538: Pluggable Database qualifier not allowed when connected to a Pluggable Database
※エラーで取得できず


RMAN> backup database plus archivelog; ※PDB1とアーカイブログファイルを取得しようとすると…

※↓↓↓PDB1のバックアップ取得
Starting backup at 11-APR-24
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00033 name=/u02/app/oracle/oradata/ORCL/pdb1/sysaux01.dbf
input datafile file number=00032 name=/u02/app/oracle/oradata/ORCL/pdb1/system01.dbf
input datafile file number=00034 name=/u02/app/oracle/oradata/ORCL/pdb1/undotbs01.dbf
input datafile file number=00038 name=/u02/app/oracle/oradata/ORCL/pdb1/users01.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-24
channel ORA_DISK_1: finished piece 1 at 11-APR-24
piece handle=/u03/app/oracle/fast_recovery_area/ORCL/15CB67D0B638405AE063CB0FED0ADF7B/backupset/2024_04_11/o1_mf_nnndf_TAG20240411T073641_m1h4r9jw_.bkp tag=TAG20240411T073641 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 11-APR-24

※↓↓↓アーカイブログファイルの取得はエラーではなくSKIPされる
Starting backup at 11-APR-24
using channel ORA_DISK_1
skipping archived logs when connected to a PDB
backup cancelled because there are no files to backup
Finished backup at 11-APR-24

RMAN>

いかがでしょうか。CDB$ROOTや他のPDBについてはエラーが発生してバックアップの取得はできませんでしたがアーカイブログファイルについてはエラーにはならずスキップされるという動作になります。このようにエラーがでることなども想定し、実際に操作して確かめるという作業は非常に重要だと思いますので今回のバックアップ操作の件に限らず様々な場面で検証作業として実機操作を取り入れていただければと思います。

さて、ここまで確認ができましたら問題を解くことができますので選択肢を見ていきましょう。

選択肢1は正しい内容ですね。CDBルート・コンテナからはコンテナデータベース全体のバックアップを取得することが可能です。

選択肢2も正しい内容です。PDBに接続している場合、そのPDB資源のバックアップが取得可能です。

選択肢3と選択肢4は誤りです。PDBに接続してPLUS ARCHIVELOG指定を行ってもエラーにはなりません。ただしアーカイブログファイルは取得できずスキップされる動作になります。

選択肢5は誤りです。CDBルート・コンテナからは個々のPDBのバックアップが取得可能です。

選択肢6は正しい内容になります。”CDB$ROOT”と指定することでルート・コンテナのバックアップが取得可能です。注意点としては必ずダブルコーテーションで囲む必要があることです。これは「$」という通常は使用できない文字が入っているためです。

以上を踏まえまして正解は 1、2、6 になります。

今回はマルチテナント環境におけるバックアップ取得の内容を解説させていただきました。接続するコンテナを意識してバックアップを行う必要があるという基本的な内容ではありましたが、応用操作にもつながる重要な内容になりますのでしっかりと覚えておきましょう。今回の講義はこれまでとします。お疲れ様でした。

————————————————-

【Oracle University講師によるORACLE MASTER Gold DBA 2019 試験トピック解説講座】トピック一覧

————————————————-

その他の ORACLE MASTER 試験トピック解説講座シリーズ:

【Oracle University 講師による ORACLE MASTER Silver SQL 2019 試験トピック解説講座】-トピック一覧-

————————————————-