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