DataPump expdp、impdp (コマンド・オプション)

オリジナルのエクスポート・インポート(コマンド・オプション)

Datapump のエクスポート・インポートコマンドのコマンドライン・オプションは、パラメータファイルに記述してある内容より優先順位が高いため、設定の上書きが可能。

例) impdp "hoge"/"hogepass" parfile='opt.par' sqlfile=dryrun.sql
    userid は 二重引用符(") で囲い、ファイル名は単一引用符(') で囲うなどしておく。

エクスポート・インポート オプション / レガシーモードは除外

リスト項目は key=value1,value2[,...] という形式で指定する。

プロンプト上から実行する場合

クォートが必要なオブジェクト名の場合には ダブルウォート(") を バックスラッシュ(\) でエスケープし最後にシングルクォート(') で囲む
例) TABLES = '\"Table Name\", \"日本語\", DEPARTMENTS, employees'

QUERY のようなステートメントをコマンドラインから指定するにはもっと大変
例) QUERY=\"where rownum\<=10\"

オプションを色々追加していくとあっという間に読解困難になるのでパラメータファイルの使用を推奨。

オプション形式(export)
expdp user/pass KEYWORD=value または KEYWORD=value1,value2,...,valueN (複数でも括弧はいらない)
オプション形式(import)
impdp user/pass KEYWORD=value または KEYWORD=value1,value2,...,valueN
オプション名対象コマンド
expdp / impdp
空欄は両方
説明
太字 はデフォルト値
● 動作モード
├ FULL処理を 「全体モード」 として実行 (全体エクスポート/全体インポート) [ YES | NO ]
├ TABLESPACES「表領域モード」として指定の表領域名に対して処理を行なう。
カンマ区切り複数指定可
├ TRANSPORT_TABLESPACES「トランスポータブル表領域モード」として指定の表領域名に対して処理を行なう。
カンマ区切り複数指定可
├ SCHEMAS「スキーマモード」として指定のスキーマ名に対して処理を行なう。
カンマ区切り複数指定可
└ TABLES「表モード」として指定の表名に対して処理を行なう。
カンマ区切り複数指定可だがスキーマまたぎは不可
● ダンプファイル
├ DIRECTORY記録媒体がある 「ディレクトリ・オブジェクト名 (以後 表内で directory と記載)」
ダンプファイル、ログファイル、パラメータファイルのデフォルト・ディレクトリとなる
  DATA_PUMP_DIR
├ DUMPFILE記録媒体ファイル名([directory:]filename 形式でも記述可)  カンマ区切り複数指定可
  expdat.dmp
├ FILESIZEexpdp(分割を想定した) 1ダンプファイルの最大値
  B、K、M、G の形式で指定可能 ~ Oracle 11g
  B、KB、MB、GB、TB の形式で指定可能 Oracle 11g Release2
└ REUSE_DUMPFILES Oracle 11gexpdpexp 時に既存ファイルへ上書き保存を許可する [ YES | NO ]
● パラメータファイル
└ PARFILEパラメーター群を記述したファイル名([directory:]filename 形式でも記述可)
● ログファイル
├ LOGFILEログファイ名([directory:]filename 形式でも記述可)
  export.log
└ NOLOGFILEログファイルを出力しない [ YES | NO ]
● ログ
├ LOGTIME  Oracle 12c表示メッセージとログファイル(一方 または 両方) にタイムスタンプを付与
[ NONE | STATUS | LOGFILE | ALL]
├ METRICS  Oracle 11g Release2JOB の詳細情報をログ・ファイルに出力する [ YES | NO ]
└ STATUS標準出力の JOB のステータス表示を指定秒間隔で更新して表示する
JOB_NAMEデータ・ディクショナリの登録される JOB 名を指定する。
マスター表 の名称としても使用される。(調査や ATTACH で指定する名称に使う)
● DRYRUN?
├ SQLFILEimpdpインポート先のデータベースには実際に適用せず実行される予定の SQL をファイル出力する
パスワードを含む DDL などの一部の SQL は改変される
└ ESTIMATE_ONLYexpdp出力されるデータ容量の見積もりだけを行なう [ YES | NO ]
● 容量見積もり
└ ESTIMATE出力されるデータの容量見積もりタイプの選択
exp 時:出力ファイル容量のサイズ見積もり、imp 時:ネットワーク出力のサイズ見積もり
[ BLOCKS | STATISTICS ]
ATTACH既存の Datapump の JOB に対話型インターフェイスを接続
● コンテンツ・フィルタ
└ CONTENT処理範囲の選択 [ ALL | DATA_ONLY | METADATA_ONLY ]
● メタ・データフィルタ (オブジェクト)
├ EXCLUDE処理対象をメタデータのオブジェクトのタイプ名 [: オブジェクト名 ] で除外フィルターする。
カンマ区切り複数設定可
├ INCLUDE対象をメタデータのオブジェクトのタイプ名 [ : オブジェクト名 ] で許可フィルターする。
カンマ区切り複数設定可
├ SOURCE_EDITION  Oracle 11g Release2エディション管理されたオブジェクトに対する絞り込み
├ TARGET_EDITION Oracle 11g Release2impdp上に同じ
├ SKIP_UNUSABLE_INDEXESimpdpUNUSABLE(使用禁止) マークが付いた索引をスキップする [ YES | NO ]
Oracle の初期化パラメータ SKIP_UNUSABLE_INDEXES の意味値を継承
(初期化パラメータ側のデフォルト値は true 。DataPump 側 パラメータに置換すると YES )
└ STREAMS_CONFIGURATIONimpdpOracle Streams のメタデータをインポートする [ YES | NO ]
● データ・フィルタ (レコード)
├ QUERYデータのフィルター用クエリー ( WHERE ~ )
└ SAMPLE Oracle 11gexpdpデータの一部だけをサンプリング抽出する (百分率:小数点付き可)
● 既存表との衝突処理
└ TABLE_EXISTS_ACTIONimpdpインポート時に同名の表があったときの動作
CONTENT =
  DATA_ONLY のとき [ APPEND | TRUNCATE ] の二択
  ALL、METADATA_ONLY のとき [ SKIP | APPEND | TRUNCATE | REPLACE]
DATA_OPTIONS(多目的用途) Oracle 11gシステムで予め用意されたパターンに従ったデータ処理 (TRANSFORM は 文の変換)
頻用例) 'SKIP_CONSTRAINT_ERRORS' の場合、参照整合性制約エラーをスキップ継続
● REMAP(読み替え)
├ REMAP_DATA Oracle 11g表の特定カラムのデータを変換する。
例:本番環境の秘匿したいカラムのデータの一部をユーザー定義の PL/SQL でマスク処理して・・・する
├ REMAP_TABLE Oracle 11gimpdpダンプファイル内の表名を別の名称に読み替えてインポートする
├ REMAP_SCHEMAimpdpダンプファイル内のスキーマ名を別の名称に読み替えてインポートする
├ REMAP_TABLESPACEimpdpダンプファイル内の表領域名を別の名称に読み替えてインポートする
├ REMAP_DATAFILEimpdpダンプファイル内のデータファイルを別の名称に読み替えてインポートする
└ REMAP_DIRECTORY Oracle 12cimpdpダンプファイル内のディレクトリを別の名称に読み替えてインポートする
● DDL の変換
├ TRANSFORMimpdpシステムで予め用意されたパターンに従い DDL の一部を変換
例: TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y
├ PARTITION_OPTIONS Oracle 11gimpdpパーティションの変換 [ NONE | DEPARTITION | MERGE ]
トランスポータブル使用時には DEPARTITION のみ
└ VIEWS_AS_TABLES  Oracle 12c指定したビュー名を表として処理する。viewname[:tablename] カンマ区切り複数指定可
● Database datafile
└ REUSE_DATAFILESimpdp既存の datafile の再利用を許可する [ YES | NO ]
移行元と先で datafile 内の格納オブジェクトが異なる場合、移行先のみにある定義とデータは無くなる
● データ一貫性
├ FLASHBACK_SCNSCN 断面において一貫性のあるデータにする
└ FLASHBACK_TIME指定した日時の断面において一貫性のあるデータにする
● 調査・保守
├ ABORT_STEP  Oracle 11g Release2単発のブレークポイント設定のようなもの(という機能のはず)
(-1 以外は機能してない? 0 以上を設定しても expdp は最後までエラーもなく実行される 12.2.0.1.0 時点)
マニュアル上のプロセスオーダー番号とは カラム名 process_order の数値のことをあらわしている
├ MASTER_ONLY Oracle 11g Release2impdpマスター表作成後インポート処理を停止 [ YES | NO ]
ABORT_STEP=-1+処理完了状態 ?
└ KEEP_MASTER  Oracle 11g Release2マスター表を JOB 正常終了後でも残しておく [ YES | NO ]
● RAC 環境
├ CLUSTER  Oracle 11g Release2RAC 環境で他のインスタンスに処理させることを許可 [ YES | NO ]
└ SERVICE_NAME  Oracle 11g Release2CLUSTER パラメーターを使用した場合に使用するサービス名の選択
● ファイル・アクセス
├ ACCESS_METHOD  Oracle 11g Release2expdp記録媒体へアクセスするためのアルゴリズムの指定
[ AUTOMATIC | DIRECT_PATH | EXTERNAL_TABLE
 | INSERT_AS_SELECT Oracle 12cr2 ]
impdp記録媒体へアクセスするためのアルゴリズムの指定
[ AUTOMATIC | DIRECT_PATH | EXTERNAL_TABLE | CONVENTIONAL_PATH
 | INSERT_AS_SELECT Oracle 12cr2 ]
└ NETWORK_LINKデータベース・リンクを使用した媒体の指定
● 圧縮
├ COMPRESSION Oracle 10g Release2expdp圧縮対象の範囲
[ METADATA_ONLY | NONE ] Oracle 10g Release2
[ ALL | DATA_ONLY | METADATA_ONLY | NONE ] Oracle 11g
要・EE & Oracle Advanced Compression オプション 12c R2 時点
└ COMPRESSION_ALGORITHM  Oracle 12cexpdp圧縮レベルの選択 [ BASIC | LOW | MEDIUM | HIGH ]
● 暗号化
├ ENCRYPTION Oracle 11gexpdp暗号化する対象の範囲
[ ALL | DATA_ONLY | ENCRYPTED_COLUMNS_ONLY | METADATA_ONLY | NONE ]
要・EE & Oracle Advanced Security オプション 12c R2 時点
├ ENCRYPTION_ALGORITHM Oracle 11gexpdp暗号化アルゴリズムの選択
[ AES128 | AES192 | AES256 ]
├ ENCRYPTION_MODE Oracle 11gexpdp暗号化のタイプの選択(透過的暗号化、パスワード暗号化、Wallet とパスワードの DUAL)
[ DUAL | PASSWORD | TRANSPARENT ]
├ ENCRYPTION_PASSWORD暗号化用のパスワード文字列(入力要求はされないが設定値は表示される)
├ ENCRYPTION_PWD_PROMPT  Oracle 12c標準入力を使用したパスワード入力要求(入力要求、表示はマスクされる) [ YES | NO ]
└ PARALLEL並列度の指定
要 EE (Enterprise Edition ライセンス) 12c R2時点
● トランスポータブル
├ TRANSPORT_DATAFILESimpdpトランスポータブル表領域で使用する datafile のフルパスを含むファイル名
├ TRANSPORT_FULL_CHECK「トランスポータブル域モード」使用時にセット内とセット外の依存関係をチェックする
[ YES | NO ]
└ TRANSPORTABLE Oracle 11g【表モード」「全体モード」の処理で 「TRANSPORTABLE」 な状態ですべての処理を強要?する
[ ALWAYS | NEVER ]
VERSION(DataPump が使用できる) 指定した Oracle のバージョン(リリース番号)と互換性のある保存形式にする
[ COMPATIBLE | LATEST | リリース番号 ]
  リリース番号の設定例: '12.1.0'
Oracle の初期化パラメータ COMPATIBLE の値を継承
HELP「HELP=YES」 でオンラインヘルプ表示

Oracle 12c より前では [ YES | NO ] は [ Y | N ] 表記になっている。Oracle 12.2.0.1.0 時点で 'Y' / 'N' による指定でも動作する。
レガシーモードによる過渡的な変換なのか将来のオプションでも使うことができる短縮表記として機能かはわかりません。

オプション名の中のグループ分けに使っている 「● 名称」 のいくつかは便宜上勝手につけたものでマニュアルにある表記ではありません。

マスター表

DataPump ユーティリティが処理する項目や内容を管理しておくために一時的に作成される表である。 
expdp / impdp から起動されるジョブのマスター制御プロセスとワーカープロセスなどから使用されるが正常終了すれば削除される。
ABORT_STEP = -1 / MASTER_ONLY = YES / KEEP_MASTER = YES または 対話型インターフェイスから STOP_JOB を行なう/ のいずれかを使用すれば削除される前の マスター表を確認することができる。

マスター表が何を管理しているかは、ホワイトペーパーによると

Oracle Data Pump の全操作の核となるデータがマスター表にある
マスター表は Data Pump ジョブを実行するユーザーのスキーマに作成される
ジョブに関する詳細な情報のすべてを管理するディレクトリ(台帳?)である。
詳細として
(1) エクスポートまたはインポートされた各オブジェクトの現在ステータス
(2) 対象となった各オブジェクトのダンプ・ファイル・セット内における場所
(3) ジョブに対してユーザーが提供したパラメータ
(4) 各ワーカー・プロセスの状態
(5) ダンプ・ファイルの現在のセット
(6) 再開情報 
などが含まれる。

参考 URL (pdf ファイル)

(1) ~ (6) について、一部分を後述の SQL にて見当をつけることができた。

マスター表の内容をちょっと確認

実行中に process_order が -55 / -5 で登録されているパラメータと指定した値と一致しているかの確認や
不具合発生時に process_order が 0 以上の部分のステータスを確認すると(面倒な)サーバー上の LOGFILE の中身を確認する前に見当をつけることができるかもしれない。

マスタ表の中をちょっと覗くための SQL (Oracle 12 R2 / 12.2.0.1.0 時点)
※ 抽出結果の内容について保障ができません ので抽出結果を監視に使うような転用は控えてください。

select 
  decode(
    m.process_order,
      -74, 'LNAG/IMP(-74)',            -73, 'LNAG/EXP(-73)',
      -72, 'JOB/IMP(-72)',             -71, 'JOB/EXP(-71)',
      -60, 'JOB PARAM/IMP(-60)',       -59, 'JOB PARAM/EXP(-59)',
      -58, 'TRANSFORM/IMP(-58)',       -57, 'TRANFORM/EXP(-57)',
      -55, 'SCHEMA_OBJECT(-55)', 
      -54, 'METADATA_FILTER/IMP(-54)', -53, 'METADATA_FILTER/EXP(-53)', 
      -52, 'DATA_FILTER/IMP(-52)',     -51, 'DATA_FILTER/EXP(-51)', 
      -42, 'JOB WORKER/IMP(-42)',      -41, 'JOB WORKER/EXP(-41)', 
      -22, 'DUMP_REALPATH/IMP(-22)',   -21, 'DUMP_REALPATH/EXP(-21)', 
      -5, 'TASK(-5)', 
      -2, 'STATUS/IMP(-2)'|| decode(abort_step, 0, NULL, '/abort@' || abort_step),
      -1, 'STATUS/EXP(-1)'|| decode(abort_step, 0, NULL, '/abort@' || abort_step),
           m.process_order
  ) process_order_t,
  m.OBJECT_TYPE obj_type,
  m.OBJECT_TYPE_PATH obj_path, 
  m.name, m.object_name obj_name, coalesce(m.value_t, to_char(m.value_n)) value_tn,
  m.file_name, m.access_method
  /* , m.* */
from SYS_EXPORT_SCHEMA_01 m  -- スキーマモード使用時のマスター表の例 「SYS_EXPORT_SCHEMA_01」
where
  case
    when process_order = -5 then decode(start_time, NULL, 'SKIP', 'WATCH')
    when process_order <= 0 then 'WATCH'
    when process_order > 0 and processing_status is not null then 'WATCH'
    else 'SKIP'
  end = 'WATCH'
  and process_order not in (-15, -13) 
order by m.process_order, m.name, m.object_path_seqno

前述の(1) ~ (6)

(1) process_order >= 0 の processing_status / processing_state?

(2) process_order >= 0 の … わかりません

(3) 「JOB_PARAM」 value_t / value_n ?

(4) -41/-42 state ?

(5) 「JOB_PARAM」の DUMPFILES および 「DUMP_REALPATH」filename ?

(6) わかりません

⇒ 参考 Mastering Oracle Data Pump (Oracle Open World 2011 / pdf)

進捗状況監視用ビュー

  • DBA_DATAPUMP_JOBS / USER_DATAPUMP_JOBS
  • DBA_DATAPUMP_SESSIONS
  • V$SESSION_LONGOPS
 


 
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)