必要ファイルの移動・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.pdb | ZIP形式の単一ファイル。構成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




コメント