CDB環境でのData Pump(expdp/impdp)とSCOTTスキーマの操作ガイド

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

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_NAMEshow 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@pdb01DIRECTORY指定も忘れずに
インポートimpdp system/oracle@pdb02remap_schema で別名可
SCOTT作成@?/rdbms/admin/utlsampl.sqlPDBに接続して実行


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

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

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

コメント

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