切断したPDBを別のCDBに再接続する方法

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

必要ファイルの移動・COPY/MOVE/NOCOPYの違い・再接続の手順を完全解説!

Oracle Multitenant構成では、切断(UNPLUG)したPDBを他のCDBに再接続(Plug-in)することで、データベースの移行や複製が可能です。
本記事では以下の点をわかりやすく解説します:

  • 再接続に必要なファイル(XML形式/.pdb形式)
  • 元のCDBのディレクトリ構成に注意すべき理由
  • 新しいCDB環境へのファイル移動方法
  • COPY / MOVE / NOCOPY の正しい使い分け
  • 再接続の具体的SQLコマンドと確認方法

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

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


1. 再接続(Plug-in)とは?

UNPLUGされたPDBを、別のCDBに再接続(CREATE PLUGGABLE DATABASE …)することで、そのPDBを再び利用可能にします。
再接続には次の3つのモードがあり、再接続先でのファイルの扱いが大きく異なります


2. 再接続に必要なファイルと形式

【XML形式でUNPLUGした場合】

ファイル名内容
pdb01.xml構成情報ファイル(UNPLUG出力)
*.dbfデータファイル(表領域・UNDO等)

再接続にはXMLファイル+すべてのDBFファイルが必要です。


【.pdb(PDBアーカイブ形式)の場合】

ファイル名内容
pdb01.pdbZIP形式の単一ファイル。構成XMLとデータファイルを内包

.pdbファイルひとつで再接続可能です。


3. 新しいCDB環境に必要なファイルを移動する手順

3.1 元CDBのディレクトリ構成を意識する理由

Oracleは再接続時、XMLファイルに記録された旧CDBのデータファイルパスを参照します。
そのため、新しいCDBでのファイルパスと整合性を取るために、以下のいずれかが必要です:

  • FILE_NAME_CONVERT 句でパスを変換して再配置する
  • データファイルを旧CDBと同じディレクトリ構造に手動で配置する(NOCOPY)

3.2 ファイル移動の例(XML形式)

# 元CDB上のファイル構成(例)
/u01/app/oracle/oradata/OLDCDB/pdb01/pdb01.xml
/u01/app/oracle/oradata/OLDCDB/pdb01/system01.dbf
/u01/app/oracle/oradata/OLDCDB/pdb01/sysaux01.dbf

# 新CDB側へSCPまたはrsyncで移動
scp /u01/app/oracle/oradata/OLDCDB/pdb01/* oracle@newhost:/u01/app/oracle/oradata/NEWCDB/pdb01/

⚠ ディレクトリの下層構造(pdb01/など)を維持しておくと、FILE_NAME_CONVERT での対応が楽になります。


3.3 ファイル移動の例(.pdb形式)

scp /u01/app/oracle/pdb01.pdb oracle@newhost:/u01/app/oracle/unplug/

.pdbファイルは中にXMLとDBFを含むため、これ1ファイルのみでOKです。


4. COPY / MOVE / NOCOPY の使い分け

モード動作内容推奨ケース
COPY元ファイルをコピーし、新CDB用に配置データを残したい、安全性重視
MOVE元ファイルを移動(削除)し、新CDB用に配置同一ホストで完全移行する場合
NOCOPY元ファイルの場所をそのまま使う(パス変更なし)ファイル配置済み+パスを変更しない場合のみ推奨

NOCOPYは旧CDBと同一パス構成でないと失敗します。リスクが高いため、通常は COPY を推奨します。

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

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


5. 再接続のSQLコマンド例

5.1 XML形式(COPY)

CREATE PLUGGABLE DATABASE pdb01
USING '/u01/app/oracle/unplug/pdb01.xml'
COPY
FILE_NAME_CONVERT = (
'/u01/app/oracle/oradata/OLDCDB/pdb01/',
'/u01/app/oracle/oradata/NEWCDB/pdb01/'
);

5.2 .pdb形式(COPY)

CREATE PLUGGABLE DATABASE pdb01
USING '/u01/app/oracle/unplug/pdb01.pdb'
COPY
FILE_NAME_CONVERT = (
'/u01/app/oracle/oradata/OLDCDB/pdb01/',
'/u01/app/oracle/oradata/NEWCDB/pdb01/'
);

5.3 PDBをオープン

ALTER PLUGGABLE DATABASE pdb01 OPEN;

6. 再接続後の確認

SELECT PDB_NAME, STATUS FROM DBA_PDBS;

PDB_NAME STATUS
--------- ---------
PDB01 NORMAL

7. 図解:再接続全体の流れ

【元のCDB】
pdb01.xml
system01.dbf
sysaux01.dbf
↓ ファイルをコピーまたは移動
【新しいCDB】
CREATE PLUGGABLE DATABASE USING ...
→ COPY or MOVE or NOCOPY
→ FILE_NAME_CONVERT でパス変換

PDBが新CDBに登録・OPENされる

8. まとめ

項目XML形式PDBアーカイブ形式(.pdb)
必要ファイル.xml + 複数の.dbf.pdbファイル1つ
ファイルの事前配置必要(NOCOPY以外)必要(NOCOPY以外)
パス変換の必要性FILE_NAME_CONVERTで調整が必要FILE_NAME_CONVERTで調整が必要
COPY / MOVE / NOCOPYの指定必須(いずれか)必須(いずれか)
管理のしやすさ△ 手動管理が必要◎ 単一ファイルで簡易操作が可能


[参考]
Oracle Database 新しいCDBへのPDBの抜き差しおよび アップグレード 19c

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

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

コメント

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