CDB・PDB構成におけるRMANバックアップ完全ガイド

CDB/PDB(マルチテナント)

BACKUP PLUGGABLE DATABASEの使い方も徹底解説〜

Oracle Database 12c以降で導入されたマルチテナント構成(CDB/PDB)により、RMANのバックアップ運用にも新たな視点が必要となりました。

この記事では、CDB全体のバックアップ方法と、PDB単位でのバックアップ方法(BACKUP PLUGGABLE DATABASE含む)を初心者にもわかりやすく図解付きで解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


🔷 CDBとPDBの構成概要(おさらい)

[CDBとPDBの構成図]

+----------------------------+
| CDB$ROOT | ← 親コンテナ
+----------------------------+
| PDB$SEED | ← テンプレートPDB
+----------------------------+
| PDB01 | ← ユーザーデータ格納
+----------------------------+
| PDB02 |
+----------------------------+

🔶 CDB全体をバックアップする方法

CDB全体をバックアップすることで、CDB$ROOT、PDB$SEED、すべてのPDBが対象になります。

✅ 接続

$ rman target /

✅ バックアップ実行

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

CDB全体アーカイブログを含めたフルバックアップが取得されます。

[oracle@v19single ~]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on 木 5月 15 09:54:47 2025
Version 19.21.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

ターゲット・データベース: V19M (DBID=1384470285)に接続されました

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;


backupを25-05-15で開始しています
現在のログがアーカイブされました。
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=78 デバイス・タイプ=DISK
チャネルORA_DISK_1: アーカイブ・ログ・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにアーカイブ・ログを指定しています
入力アーカイブ・ログ・スレッド=1 順序=14 レコードID=1 スタンプ=1201168574
チャネルORA_DISK_1: ピース1 (25-05-15)を起動します
チャネルORA_DISK_1: ピース1 (25-05-15)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/013pgo5v_1_1_1 タグ=TAG20250515T095615 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:03
backupを25-05-15で終了しました

backupを25-05-15で開始しています
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00001 名前=/u01/app/oracle/oradata/V19M/system01.dbf ★CDB$ROOTをバックアップ
入力データファイル ファイル番号=00003 名前=/u01/app/oracle/oradata/V19M/sysaux01.dbf
入力データファイル ファイル番号=00004 名前=/u01/app/oracle/oradata/V19M/undotbs01.dbf
入力データファイル ファイル番号=00007 名前=/u01/app/oracle/oradata/V19M/users01.dbf
チャネルORA_DISK_1: ピース1 (25-05-15)を起動します
チャネルORA_DISK_1: ピース1 (25-05-15)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/023pgo63_2_1_1 タグ=TAG20250515T095618 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:15
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00010 名前=/u01/app/oracle/oradata/V19M/PDB01/sysaux01.dbf ★PDB01をバックアップ
入力データファイル ファイル番号=00009 名前=/u01/app/oracle/oradata/V19M/PDB01/system01.dbf
入力データファイル ファイル番号=00011 名前=/u01/app/oracle/oradata/V19M/PDB01/undotbs01.dbf
入力データファイル ファイル番号=00012 名前=/u01/app/oracle/oradata/V19M/PDB01/users01.dbf
チャネルORA_DISK_1: ピース1 (25-05-15)を起動します
チャネルORA_DISK_1: ピース1 (25-05-15)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/033pgo6i_3_1_1 タグ=TAG20250515T095618 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:07
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00014 名前=/u01/app/oracle/oradata/V19M/PDB02/sysaux01.dbf ★PDB02をバックアップ
入力データファイル ファイル番号=00013 名前=/u01/app/oracle/oradata/V19M/PDB02/system01.dbf
入力データファイル ファイル番号=00015 名前=/u01/app/oracle/oradata/V19M/PDB02/undotbs01.dbf
入力データファイル ファイル番号=00016 名前=/u01/app/oracle/oradata/V19M/PDB02/users01.dbf
チャネルORA_DISK_1: ピース1 (25-05-15)を起動します
チャネルORA_DISK_1: ピース1 (25-05-15)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/043pgo6p_4_1_1 タグ=TAG20250515T095618 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:07
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00006 名前=/u01/app/oracle/oradata/V19M/pdbseed/sysaux01.dbf
入力データファイル ファイル番号=00005 名前=/u01/app/oracle/oradata/V19M/pdbseed/system01.dbf
入力データファイル ファイル番号=00008 名前=/u01/app/oracle/oradata/V19M/pdbseed/undotbs01.dbf
チャネルORA_DISK_1: ピース1 (25-05-15)を起動します
チャネルORA_DISK_1: ピース1 (25-05-15)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/053pgo70_5_1_1 タグ=TAG20250515T095618 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:07
backupを25-05-15で終了しました

backupを25-05-15で開始しています
現在のログがアーカイブされました。
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: アーカイブ・ログ・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにアーカイブ・ログを指定しています
入力アーカイブ・ログ・スレッド=1 順序=15 レコードID=2 スタンプ=1201168615
チャネルORA_DISK_1: ピース1 (25-05-15)を起動します
チャネルORA_DISK_1: ピース1 (25-05-15)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/063pgo78_6_1_1 タグ=TAG20250515T095655 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:01
backupを25-05-15で終了しました

Control File and SPFILE Autobackupを25-05-15で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-1384470285-20250515-00 コメント=NONE
Control File and SPFILE Autobackupを25-05-15で終了しました


Recovery Managerが完了しました。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


🔶 PDB単位でバックアップする方法①:PDBへ直接接続してBACKUP DATABASE

Oracle 12.1.0.2以降では、PDBに直接接続してバックアップが可能です。

✅ 接続

$ rman target sys/oracle@pdb01

tnsnames.ora 例:

PDB01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb01)
)
)

✅ バックアップ実行

RMAN> BACKUP DATABASE;

この方法で取得できるのはPDB内のデータファイルのみです。
アーカイブログ、SPFILE、制御ファイルは含まれません。

[oracle@v19single ~]$ rman target sys/oracle@pdb01  ★PDB01に接続

Recovery Manager: Release 19.0.0.0.0 - Production on 木 5月 15 10:02:48 2025
Version 19.21.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

ターゲット・データベース: V19M:PDB01 (DBID=901964044)に接続されました

RMAN> BACKUP DATABASE;

backupを25-05-15で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=75 デバイス・タイプ=DISK
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00010 名前=/u01/app/oracle/oradata/V19M/PDB01/sysaux01.dbf ★PDB01をバックアップ
入力データファイル ファイル番号=00009 名前=/u01/app/oracle/oradata/V19M/PDB01/system01.dbf
入力データファイル ファイル番号=00011 名前=/u01/app/oracle/oradata/V19M/PDB01/undotbs01.dbf
入力データファイル ファイル番号=00012 名前=/u01/app/oracle/oradata/V19M/PDB01/users01.dbf
チャネルORA_DISK_1: ピース1 (25-05-15)を起動します
チャネルORA_DISK_1: ピース1 (25-05-15)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/083pgokl_8_1_1 タグ=TAG20250515T100405 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:07
backupを25-05-15で終了しました

RMAN> exit


Recovery Managerが完了しました。

🔶 PDB単位でバックアップする方法②:CDB接続で BACKUP PLUGGABLE DATABASE

より柔軟な方法として、CDB$ROOTに接続した状態で特定のPDBだけをバックアップすることも可能です。

✅ 接続

$ rman target /

✅ 単一のPDBをバックアップ

RMAN> BACKUP PLUGGABLE DATABASE pdb01;

このコマンドは CDB接続状態で、指定したPDBだけをバックアップします。
※アーカイブログや制御ファイルのバックアップも一緒に行いたい場合は以下のようにします。

RMAN> BACKUP PLUGGABLE DATABASE pdb01 PLUS ARCHIVELOG;

✅ 複数のPDBを一括バックアップ

RMAN> BACKUP PLUGGABLE DATABASE pdb01, pdb02;
[oracle@v19single ~]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on 木 5月 15 10:04:30 2025
Version 19.21.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

ターゲット・データベース: V19M (DBID=1384470285)に接続されました

RMAN> BACKUP PLUGGABLE DATABASE pdb01, pdb02;

backupを25-05-15で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=78 デバイス・タイプ=DISK
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00010 名前=/u01/app/oracle/oradata/V19M/PDB01/sysaux01.dbf ★PDB01をバックアップ
入力データファイル ファイル番号=00009 名前=/u01/app/oracle/oradata/V19M/PDB01/system01.dbf
入力データファイル ファイル番号=00011 名前=/u01/app/oracle/oradata/V19M/PDB01/undotbs01.dbf
入力データファイル ファイル番号=00012 名前=/u01/app/oracle/oradata/V19M/PDB01/users01.dbf
チャネルORA_DISK_1: ピース1 (25-05-15)を起動します
チャネルORA_DISK_1: ピース1 (25-05-15)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/093pgolt_9_1_1 タグ=TAG20250515T100445 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:07
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00014 名前=/u01/app/oracle/oradata/V19M/PDB02/sysaux01.dbf ★PDB02をバックアップ
入力データファイル ファイル番号=00013 名前=/u01/app/oracle/oradata/V19M/PDB02/system01.dbf
入力データファイル ファイル番号=00015 名前=/u01/app/oracle/oradata/V19M/PDB02/undotbs01.dbf
入力データファイル ファイル番号=00016 名前=/u01/app/oracle/oradata/V19M/PDB02/users01.dbf
チャネルORA_DISK_1: ピース1 (25-05-15)を起動します
チャネルORA_DISK_1: ピース1 (25-05-15)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/0a3pgom5_10_1_1 タ グ=TAG20250515T100445 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:01:45
backupを25-05-15で終了しました

Control File and SPFILE Autobackupを25-05-15で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-1384470285-20250515-01 コメント=NONE
Control File and SPFILE Autobackupを25-05-15で終了しました

RMAN>

🔶 バックアップ構成の違い(図解)

■ CDB接続でのCDB全体バックアップ

+------------------+
| CDB$ROOT |◄────┐
+------------------+ │
| PDB$SEED |◄────┤
+------------------+ │
| PDB01 |◄────┤
+------------------+ │
| PDB02 |◄────┤
+------------------+ │

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

■ CDB接続でのPDB単位バックアップ

+------------------+
| PDB01 |◄──── RMAN> BACKUP PLUGGABLE DATABASE pdb01;
+------------------+

■ PDB接続でのバックアップ

+------------------+
| PDB01 |◄──── RMAN> BACKUP DATABASE;
+------------------+

🔶 バックアップ方法の違いと機能比較

機能項目CDB全体 (BACKUP DATABASE)BACKUP PLUGGABLE DATABASEPDB接続での BACKUP DATABASE
バックアップ対象全てのPDBとCDB$ROOT指定したPDB接続しているPDBのみ
アーカイブログ取得可否〇(PLUS ARCHIVELOG〇(PLUS ARCHIVELOG×(アーカイブログ対象外)
SPFILE・制御ファイル含むか〇(明示指定で含む)×
複数PDBを一括バックアップ×(全体)〇(カンマ区切りで指定)×(1PDBのみ)

✅ 実務での使い分け例

用途推奨方法
本番環境のフルバックアップBACKUP DATABASE PLUS ARCHIVELOG
特定PDBだけのバックアップBACKUP PLUGGABLE DATABASE
テスト用に軽くバックアップPDB接続で BACKUP DATABASE

✅ 補足:バックアップ構成確認コマンド

バックアップ対象のファイルは以下のRMANコマンドで確認できます。

RMAN> LIST BACKUP OF DATABASE;
RMAN> LIST BACKUP SUMMARY;

🔚 まとめ

BACKUP PLUGGABLE DATABASE は、CDB接続状態から特定のPDBだけを柔軟にバックアップできる強力な手段です。
マルチテナント環境が主流となる中で、目的に応じたバックアップ戦略を取ることが重要です。

[参考]
4 CDBの作成および構成

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました