Oracle 12c以降では、マルチテナント(CDB/PDB)構成が登場し、Data Pumpの使い方にも新たなルールがあります。
この記事では、CDB環境におけるData Pump(expdp/impdp)を使ったエクスポート・インポート手順に加えて、SCOTTスキーマのインポート方法とtnsnames.oraの設定例、そしてPDB接続時の注意点についても詳しく解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
🧱 CDBとPDBの構成図(テキスト)
+----------------------------+
| CDB$ROOT |
+----------------------------+
│
┌───────┴────────┐
│ │
▼ ▼
PDB01 PDB02
(業務DB) (開発DB)
🔍 Data Pumpとは?
Oracle純正の高速エクスポート/インポートツールです:
expdp:エクスポート(ダンプファイル出力)impdp:インポート(ダンプファイル読込)
⚠ PDBでData Pumpを実行する場合の注意点
PDBに接続してData Pump(expdp / impdp)を実行するには、必ずOracle Net経由の接続(
@接続名)が必要です。
❌ ローカル接続(/ as sysdba)ではエラーになります:
$ expdp "'/ as sysdba'" schemas=SCOTT
ORA-39002: 操作が無効です
ORA-39087: プラガブル・データベースでのみ許可される操作です
✅ Oracle Net接続(system/password@pdb名)で実行:
$ expdp system/oracle@pdb01 schemas=SCOTT ...
🛠 PDB用 tnsnames.ora の設定
$ORACLE_HOME/network/admin/tnsnames.ora に以下を記述:
PDB01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb01)
)
)
PDB02 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb02)
)
)
SERVICE_NAMEはshow pdbsで確認できます。
📂 Data Pump用ディレクトリの作成(PDB01内)
ALTER SESSION SET CONTAINER = pdb01;
CREATE OR REPLACE DIRECTORY dpump_dir AS '/u01/dpump_dir';
GRANT READ, WRITE ON DIRECTORY dpump_dir TO system;
OS上の
/u01/dpump_dirも作成し、oracleユーザーに書き込み権限を与えておきましょう。
🐱 SCOTTスキーマの作成(PDB01)
ALTER SESSION SET CONTAINER = pdb01;
@?/rdbms/admin/utlsampl.sql
EMPやDEPTなどのテスト用データが作成されます。
📤 SCOTTスキーマのエクスポート(PDB01)
$ expdp system/oracle@pdb01 schemas=SCOTT directory=dpump_dir dumpfile=scott_exp.dmp logfile=scott_exp.log
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
📥 SCOTTスキーマのインポート(PDB02)
$ impdp system/oracle@pdb02 schemas=SCOTT directory=dpump_dir dumpfile=scott_exp.dmp logfile=scott_imp.log
別名スキーマでインポートする場合は remap_schema オプションを使用:
$ impdp system/oracle@pdb02 directory=dpump_dir dumpfile=scott_exp.dmp logfile=scott_imp.log \
remap_schema=SCOTT:SCOTT_NEW
[oracle@v19single ~]$ sqlplus scott/tiger@pdb01
SQL*Plus: Release 19.0.0.0.0 - Production on 日 5月 18 12:47:25 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
最終正常ログイン時間: 日 5月 18 2025 12:44:58 +09:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> show con_name
CON_NAME
------------------------------
PDB01
SQL> select * from test;
NO
----------
1
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。
[oracle@v19single ~]$ expdp system/oracle@pdb01 schemas=SCOTT directory=dpump_dir dumpfile=scott_exp.dmp logfile=scott_exp.log ★PDB01 に接続してエクスポート
Export: Release 19.0.0.0.0 - Production on 日 5月 18 12:47:43 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
"SYSTEM"."SYS_EXPORT_SCHEMA_01"を起動しています: system/********@pdb01 schemas=SCOTT directory=dpump_dir dumpfile=scott_exp.dmp logfile=scott_exp.log
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
オブジェクト型SCHEMA_EXPORT/USERの処理中です
オブジェクト型SCHEMA_EXPORT/SYSTEM_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/ROLE_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/DEFAULT_ROLEの処理中です
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
. . "SCOTT"."TEST" 5.046 KB 1行がエクスポートされました
マスター表"SYSTEM"."SYS_EXPORT_SCHEMA_01"は正常にロード/アンロードされました
******************************************************************************
SYSTEM.SYS_EXPORT_SCHEMA_01に設定されたダンプ・ファイルは次のとおりです:
/u01/dpump_dir/scott_exp.dmp
ジョブ"SYSTEM"."SYS_EXPORT_SCHEMA_01"が日 5月 18 12:48:13 2025 elapsed 0 00:00:28で正常に完了しました
[oracle@v19single ~]$ impdp system/oracle@pdb02 directory=dpump_dir dumpfile=scott_exp.dmp logfile=scott_imp.log ★PDB02 に接続してインポート
Import: Release 19.0.0.0.0 - Production on 日 5月 18 12:48:22 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
マスター表"SYSTEM"."SYS_IMPORT_FULL_01"は正常にロード/アンロードされました
"SYSTEM"."SYS_IMPORT_FULL_01"を起動しています: system/********@pdb02 directory=dpump_dir dumpfile=scott_exp.dmp logfile=scott_imp.log
オブジェクト型SCHEMA_EXPORT/USERの処理中です
ORA-31684: オブジェクト型USER:"SCOTT"はすでに存在します
オブジェクト型SCHEMA_EXPORT/SYSTEM_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/ROLE_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/DEFAULT_ROLEの処理中です
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. . "SCOTT"."TEST" 5.046 KB 1行がインポートされました
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
ジョブ"SYSTEM"."SYS_IMPORT_FULL_01"が完了しましたが、1エラーが日 5月 18 12:48:51 2025 elapsed 0 00:00:27で発生しています
[oracle@v19single ~]$ sqlplus scott/tiger@pdb02
SQL*Plus: Release 19.0.0.0.0 - Production on 日 5月 18 12:48:59 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
最終正常ログイン時間: 日 5月 18 2025 12:43:33 +09:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> show con_name
CON_NAME
------------------------------
PDB02
SQL> select * from test;
NO
----------
1
✅ まとめ
| 操作 | 接続方法 | ポイント |
|---|---|---|
| tnsnames設定 | tnsnames.ora にPDBを定義 | Oracle Net接続に必須 |
| エクスポート | expdp system/oracle@pdb01 | DIRECTORY指定も忘れずに |
| インポート | impdp system/oracle@pdb02 | remap_schema で別名可 |
| SCOTT作成 | @?/rdbms/admin/utlsampl.sql | PDBに接続して実行 |
[参考]
4 CDBの作成および構成




コメント