Oracle Data Pump情報まとめ

■概要
----------------------------
従来のコマンド「exp」「imp」に比べ、より高パフォーマンスでデータベースをエクスポート、インポートできる仕組み。
※「exp」「imp」コマンドが設計された当初は、現在に比べデータベースが小規模だったため、大規模なデータベースに対して適切な設計ではなかった。

○参考サイト
[Oracle Databaseユーティリティ 11gリリース2(11.2)]
<https://docs.oracle.com/cd/E16338_01/server.112/b56303/toc.htm>
[10gDataPump_otn.pdf]
<http://otndnld.oracle.co.jp/products/database/oracle10g/pdf/10gDataPump_otn.pdf>


■Data Pumpが使用可能なバージョン
----------------------------
Data PumpはOracle 10gの新機能のため、Oracle 10g以降であれば使用可能である。

○参考サイト
[ORACLE-BASE-Oracle Database 10g、11g、12c、18c、19cのOracle Data Pump（expdp、impdp）]
<https://oracle-base.com/articles/10g/oracle-data-pump-10g>
[10gDataPump_otn.pdf]
<http://otndnld.oracle.co.jp/products/database/oracle10g/pdf/10gDataPump_otn.pdf>


■ディスク使用率
----------------------------

■オプション
----------------------------

■datapumpはなぜ早い？
----------------------------

■directoryの権限付与って必要なの？
Oracle12cの場合、directoryを作っただけでREAD、WRITE権限付与された。

■Jobとは？
----------------------------
Data Pumpの場合、従来のexp、impと異なり
障害発生などで途中でエクスポート/インポートが止まった時に再開できるようになっている

■通常
----------------------------
○エクスポートコマンド
exp trpg/trpg@shinobigami file=c:\temp\testexp.dmp owner=trpg

※shinobigami・・・DBのORACLE_SID、trpg・・・スキーマ名

```:エクスポート時のログ（exp）
Export: Release 12.2.0.1.0 - Production on 月 5月 18 23:56:07 2020

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


接続先: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
JA16SJISTILDE文字セットおよびAL16UTF16 NCHAR文字セットでエクスポートを実行します
サーバーではAL32UTF8文字セットを使用します(文字セットの変換可能)

指定されたユーザーをエクスポートします...
. プリスキーマ・プロシージャ型オブジェクトとアクションをエクスポート中
. ユーザーTRPGの外部関数ライブラリ名をエクスポート中
. PUBLICタイプのシノニムをエクスポート中
. プライベート・タイプのシノニムをエクスポート中
. ユーザーTRPGのオブジェクト型定義をエクスポート中
TRPGのオブジェクトをエクスポートします...
. データベース・リンクをエクスポート中
. 順序番号をエクスポート中
. クラスタ定義をエクスポート中
. TRPGの表をエクスポートします... 従来型パス経由...
.. 表                    NINPOU_TYPEをエクスポート中          3行エクスポートされました。
EXP-00091: 不審な統計をエクスポートしています。
.. 表                           OUGIをエクスポート中          7行エクスポートされました。
EXP-00091: 不審な統計をエクスポートしています。
EXP-00091: 不審な統計をエクスポートしています。
.. 表                          RYUHAをエクスポート中          6行エクスポートされました。
EXP-00091: 不審な統計をエクスポートしています。
.. 表                     TEST_TABLEをエクスポート中          4行エクスポートされました。
EXP-00091: 不審な統計をエクスポートしています。
EXP-00091: 不審な統計をエクスポートしています。
.. 表             TOKUGI_COLUMN_LISTをエクスポート中          6行エクスポートされました。
EXP-00091: 不審な統計をエクスポートしています。
.. 表                    TOKUGI_LISTをエクスポート中          1行エクスポートされました。
EXP-00091: 不審な統計をエクスポートしています。
. シノニムをエクスポート中
. ビューをエクスポート中
. ストアド・プロシージャをエクスポート中
. 演算子をエクスポート中
. 参照整合性制約をエクスポート中
. トリガーをエクスポート中
. 索引タイプをエクスポート中
. ビットマップ、ファンクションおよび拡張可能索引をエクスポート中
. ポスト可能なアクションをエクスポート中
. マテリアライズド・ビューをエクスポート中
. スナップショット・ログをエクスポート中
. ジョブ・キューをエクスポート中
. リフレッシュ・グループと子をエクスポート中
. ディメンションをエクスポート中
. ポストスキーマ・プロシージャ型オブジェクトとアクションをエクスポート中
. 統計をエクスポート中
エクスポートは正常に終了しましたが、警告が発生しました。
```

○インポートのコマンド
imp trpg/trpg@shinobigami file=c:¥temp¥testexp.dmp fromuser=trpg touser=trpg

※あらかじめテーブルを削除しておかないと下記エラーログが出力される
IMP-00015: 次の文は、オブジェクトがすでに存在するため失敗しました:

```:インポート時のログ（imp）
Import: Release 12.2.0.1.0 - Production on 火 5月 19 00:52:18 2020

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


接続先: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

エクスポート・ファイルはEXPORT:V12.02.00によって従来型パス経由で作成されました
JA16SJISTILDE文字セットおよびAL16UTF16 NCHAR文字セットでインポートを実行します
インポート・サーバーではAL32UTF8文字セットを使用します(文字セットの変換可能)。
IMP-00403:

警告: このインポートでは、権限の問題により失敗したDDLを含む別個のSQLファイル"import_sys"が生成されました。

IMP-00015: 次の文は、オブジェクトがすでに存在するため失敗しました:
 "CREATE TABLE "NINPOU_TYPE" ("ID" VARCHAR2(2) NOT NULL ENABLE, "NAME" VARCHA"
 "R2(20))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 6553"
 "6 NEXT 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAU"
 "LT)                    LOGGING NOCOMPRESS"
IMP-00015: 次の文は、オブジェクトがすでに存在するため失敗しました:
 "CREATE TABLE "OUGI" ("OUGI_ID" VARCHAR2(2) NOT NULL ENABLE, "NAME" VARCHAR2"
 "(30), "KANA" VARCHAR2(60), "DESCRIPTION" VARCHAR2(600), "SORT_NO" NUMBER(2,"
 " 0))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 N"
 "EXT 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)"
 "                    LOGGING NOCOMPRESS"
IMP-00015: 次の文は、オブジェクトがすでに存在するため失敗しました:
 "CREATE TABLE "RYUHA" ("RYUHA_ID" VARCHAR2(2) NOT NULL ENABLE, "NAME" VARCHA"
 "R2(30), "KANA" VARCHAR2(60), "SORT_NO" NUMBER(2, 0))  PCTFREE 10 PCTUSED 40"
 " INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 FR"
 "EELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)                    LOGGING"
 " NOCOMPRESS"
. . 表                   "TEST_TABLE"をインポートしています          4行インポートされました。
IMP-00015: 次の文は、オブジェクトがすでに存在するため失敗しました:
 "CREATE TABLE "TOKUGI_COLUMN_LIST" ("COLUMN_ID" VARCHAR2(2) NOT NULL ENABLE,"
 " "NAME" VARCHAR2(10), "KANA" VARCHAR2(20), "DESCRIPTION" VARCHAR2(400))  PC"
 "TFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048"
 "576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)        "
 "            LOGGING NOCOMPRESS"
IMP-00015: 次の文は、オブジェクトがすでに存在するため失敗しました:
 "CREATE TABLE "TOKUGI_LIST" ("LOW" NUMBER(2, 0) NOT NULL ENABLE, "COLOMN" VA"
 "RCHAR2(20) NOT NULL ENABLE, "NAME" VARCHAR2(20), "KANA" VARCHAR2(40), "DESC"
 "LRIPTION" VARCHAR2(100))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STO"
 "RAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 "
 "BUFFER_POOL DEFAULT)                    LOGGING NOCOMPRESS"
インポートは正常に終了しましたが、警告が発生しました。
```

※expdpコマンドでエクスポートしたdmpファイルをimpコマンドでインポートしようとすると下記Oracleエラーが発生する

```:インポート時のログ（expdpでエクスポートしたdmpファイルをimpコマンドでインポート）
Import: Release 12.2.0.1.0 - Production on 火 5月 19 00:45:49 2020

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


接続先: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

IMP-00401: ダンプ・ファイル"c:\temp\testexpdp.dmp"は、データ・ポンプ・エクスポート・ダンプ・ファイルの場合があります
IMP-00000: エラーが発生したためインポートを終了します。
```

■datapump方式
----------------------------
--事前にディレクトリの作成が必要
create or replace directory dir01 as 'C:\temp'

--ディレクトリを確認する
select * from ALL_DIRECTORIES
--または
select * from dba_directories;

--権限がない場合は権限付与が必要
grant read, write on directory dir01 to trpg

--権限が付与されているか確認する
select * from user_tab_privs where table_name = 'DIR01'

○コマンド
expdp trpg/trpg@shinobigami schemas=trpg directory=dir01 dumpfile=testexpdp.dmp

```:エクスポート時のログ（expdp）
Export: Release 12.2.0.1.0 - Production on 火 5月 19 00:15:15 2020

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

接続先: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
"TRPG"."SYS_EXPORT_SCHEMA_01"を起動しています: trpg/********@shinobigami schemas=trpg directory=dir01 dumpfile=testexpdp.dmp
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型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の処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/COMMENTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
. . "TRPG"."OUGI"                               9.375 KB       7行がエクスポートされました
. . "TRPG"."TOKUGI_COLUMN_LIST"                 8.296 KB       6行がエクスポートされました
. . "TRPG"."TOKUGI_LIST"                        6.882 KB       1行がエクスポートされました
. . "TRPG"."RYUHA"                              6.640 KB       6行がエクスポートされました
. . "TRPG"."TEST_TABLE"                         5.992 KB       4行がエクスポートされました
. . "TRPG"."NINPOU_TYPE"                        5.531 KB       3行がエクスポートされました
マスター表"TRPG"."SYS_EXPORT_SCHEMA_01"は正常にロード/アンロードされました
******************************************************************************
TRPG.SYS_EXPORT_SCHEMA_01に設定されたダンプ・ファイルは次のとおりです:
  C:\TEMP\TESTEXPDP.DMP
ジョブ"TRPG"."SYS_EXPORT_SCHEMA_01"が火 5月 19 00:16:10 2020 elapsed 0 00:00:52で正常に完了しました
```




■参考サイト
https://oracle-chokotto.com/ora_export_expdp.html