DATAPUMP関連MOSドキュメントID
- Datapumpジョブの進行状況を監視する方法 (ドキュメントID 2888013.1)
- インポート/エクスポートにおける NLS の問題 - よくある質問と回答 (ドキュメントID 2558401.1)
- [Datapump] 問題が発生したら(KDS:11116) (ドキュメントID 1773374.1)
- [Datapump] トラブルシューティング(KDS:11242) (ドキュメントID 1773438.1)
- TFA を使用した DataPump のパフォーマンス問題の自動収集: ウォークスルーおよび詳細 (ドキュメントID 2916739.1)
- パーティション表の IMPDP で SYS.KUPW$WORKER.MAIN のCPU時間が長い (ドキュメントID 2950526.1)
DATAPUMP関連リンク
- 2023/07/28資料:Oracle Data Pumpの新機能とは Oracle Database 19c
- 2024/02/20資料:Oracle Data Pumpによるエクスポートとインポート
SELECTでDATAPUMP関連の情報取得
ディレクトリオブジェクトのパス確認
SELECT owner,directory_name,directory_path FROM dba_directories ORDER BY directory_name;
ディレクトリオブジェクトの読み書き権限確認
SELECT owner,grantor,grantee,table_name,privilege FROM dba_tab_privs
WHERE privilege IN ('READ', 'WRITE') ORDER BY grantee,table_name,privilege;
DATAPUMPジョブの情報取得
SELECT owner_name,job_name,state,degree,attached_sessions,datapump_sessions FROM dba_datapump_jobs ORDER BY job_name;
DATAPUMPジョブのセッション情報取得
SELECT t1.inst_id,t2.sid,t2.serial#,t1.owner_name,t1.job_name,t1.session_type,TO_CHAR(t2.logon_time,'YYYY/MM/DD HH24:MI:SS') logon_time
FROM dba_datapump_sessions t1,gv$session t2
WHERE t1.saddr= t2.saddr
AND t1.inst_id = t2.inst_id
ORDER BY t1.inst_id,t1.owner_name,logon_time;
DATAPUMP関連のTips
- オプションの「TABLES=」と「INCLUDE=TABLE」は併用しない方が良い。どちらかのみが採用されたり、両方採用されたり内容によって挙動がぶれる
- (主にIMPDP時)オプションの「TABLES=」で指定するスキーマ修飾子やテーブル名は「EXPDB時のときのもの」
DBリンク越しのDATAPUMP操作はしない方が良い(たしか不可能だった。バージョンによるかも知れない)
- ディレクトリオブジェクトは作成したDBユーザに「READ」「WRITE」権限が与えられたはずだが、そのDBユーザを使ってDATAPUMP操作をするなら、念のため別途「READ」「WRITE」権限を付けた方が良い。
- expdpで出力したdmpファイルのパーミッションは、操作したOSユーザのマスクに依存しないので注意。
- 「JOB_NAME=」オプションは30文字以上にはできるが、しない方が良い。DATAPUMPのマスター表(失敗したときのゴミ表)はこのJOB_NAMEを参考に作られる。30文字に合わせたマスター表となるが・・・、DATAPUMPでattachする際は、30文字以上の「JOB_NAME=」オプションで指定した文字列でする必要がある。過去の失敗DATAPUMPにattachし難くなるので、「JOB_NAME=」オプションは30文字以内にすること
- 上記の通りマスター表を作成するのでexpdpの操作であっても「DataGuardのスタンバイ環境」や「READONLY環境」や「RESTRICTEDがYESの環境」ではDATAPUMP操作自体が実施できない。
DATAPUMP操作で気を付けること。気を付けるポイント。
Tipsと被るかも知れないが、まぁ両方気を付ければよい。
- DATAPUMP操作でのOS操作ユーザの接続方法を把握していること(ユーザ名やパスワード、サーバ名、IPアドレスなど)
- DATAPUMP操作でのOS操作ユーザに環境変数「ORACLE_HOME」「LD_LIBRARY_PATH」が正しく設定されていること
- DATAPUMP操作での「DB接続ユーザ」のデフォルト表領域にマスター表が作成されることを認識していること。
- DATAPUMP操作失敗時や中断時にマスター表が残るし、並走させるとその分マスター表が作成されるため、DATAPUMP操作での「DB接続ユーザ」のデフォルト表領域のサイズや使用率に気を付けること。
- DATAPUMP操作での「DB接続ユーザ」にDATAPUMP操作で触るオブジェクトに触る権限があること
- DATAPUMP操作での「DB接続ユーザ」の接続方法を把握していること(ユーザ名やパスワード、ネットサービス名、ORACLE_SID名など)
- EXPDP元とIMPDP先の「タイムゾーン・ファイルのバージョン」が一致していること。(registry$database表や、v$timezone_file表、database_properties表のバージョンがEXPDP元DBと、IMPDP先DBで一致していること)
※registry$database表や、v$timezone_file表、database_properties表のバージョンがexpdp元DBよりも、IMPDP先DBのTZ_VERSIONが低いとIMPDPそのものができなくなるため。(ORA-39405)
※IMPDP先のDBインスタンスのTZ_VERSIONをあげることは可能。TZ_VERSIONを下げることは不可能。
※DB初期構築時に環境変数ORA_TZFILEを設定するか、IMPDP先のDBを一致するまでTZ_VERSIONをあげることになる。
※参考MOSドキュメント(ドキュメントID 2882931.1)、(ドキュメントID 3004889.1)、 (ドキュメントID 412160.1)
■下記はMOSドキュメントの一部を翻訳して抜粋したもの
E.3) DSTのバージョンを下げることはできますか?
いいえ、それはできません。問題のホームのデータベースで使用されているDSTパッチをロールバックしないでください。
- 利用するディレクトリオブジェクトを用意していること
- 利用するディレクトリオブジェクトの「READ」「WRITE」権限がDATAPUMP操作での「DB接続ユーザ」にあること
- 利用するディレクトリオブジェクトのOSディレクトリパスを把握しており、作業時には存在していること
- 利用するディレクトリオブジェクトのOSディレクトリパスを把握しており、OSパーミッション的に(DBをインストールした)oracleユーザに書き込み権限があること
- (expdp時)利用するディレクトリオブジェクトのOSディレクトリパスにdmpを出力できるほどの空き容量があること
- (expdp時)出力するオブジェクトのセグメントサイズからdmpファイルの概算を把握しておくこと(過去実績や類似オブジェクトの出力経験のない未知のオブジェクトの場合、DB上のセグメントサイズの1/10程度となる予測にしておく)
- (expdp時)出力する内容が過不足なく整理されており、contentオプション(ALL/DATA_ONLY)を適切に指定していること
- (impdp時)利用するdmpファイルにOSパーミッション的にOSの操作ユーザに読み取り権限があること
- (impdp時)IMPDP対象が入る表領域に余裕があること。または自動拡張モードである場合ディスクに余裕があること。
- (impdp時)IMPDP対象にはappendで入れるかtruncateしていれるか整理されていること。特にパーティションTBLの複数回impdp実行時など実行順や実行時のオプションに気を付けること(table_exists_actionの指定注意。)
- (impdp時)sequenceなどをimpdpする場合、事前に対象オブジェクトをdropする必要がある。事前作業を終えていること
- (impdp時)メタデータも込みでimpdpする場合、事前に対象オブジェクトをdropする必要がある。事前作業を終えていること。table_exists_action=replaceでこの事前作業が不要になるが、あまりおすすめしない。もしもreplaceを使う場合は対象を最小限にすること。ミスした場合の影響が大きい。特定パーティションだけメタデータ込みでimpdpしパーティションを増やすなどはできない。またsequenceでこのreplaceオプションを有効に使うことはできない。
- (impdp時)メタデータも込みでimpdpする場合、対象オブジェクトを差していたsynonym、function、procedureなどがINVALIDになる可能性がある。コンパイルなどINVALID解消手順を実施すること。
- (impdp時)19cのimpdp時にはオプションdata_options=trust_existing_table_partitionsを入れること。(参考ドキュメントID 2950526.1)
- (impdp時)impdp終了後に対象テーブル(または対象スキーマ)に対して統計情報を収集して最新状態にしておくこと。
exec DBMS_STATS.GATHER_TABLE_STATS(ownname=>'USER2',tabname=>'T2',estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,block_sample=>TRUE,method_opt=>'FOR ALL COLUMNS SIZE AUTO',degree=>1,granularity=>'ALL',cascade=>TRUE);
- (作業時)以前の操作時のマスター表が残っていないか確認し、存在したら削除しておくこと。
- (作業時)DATAPUMP操作ではUNDO表領域を多く使うことになりがち。充分な余裕があること。
- (作業時)緊急時に一時中断や停止ができるように、別端末から動作中のDATAPUMP操作にアタッチできる手順や端末を用意すること
- (作業時)DATAPUMPログを監視できる状態を用意すること(通常は作業端末に表示されるので問題ない。バックグラウンドプロセスでの実施やcronなどでスケジュール化されている場合の話)
- (作業時)アラートログを監視できる状態を用意すること
- (作業時)expdp時の出力先の空き容量を監視できる状態を用意すること
DATAPUMPコマンド参考例
expdpコマンド例(Standard Edtition2)
expdp user2/password1@NSNAME_PDB3 directory=d1 content=all logtime=all metrics=yes exclude=statistics job_name=expdp_user2_t2 tables=user2.t2 flashback_time=\"TO_TIMESTAMP\(\'2024/12/31 23:59:59\', \'YYYY/MM/DD HH24:MI:SS\'\)\" logfile=yyyymmdd_expdp_t2.log dumpfile=yyyymmdd_expdp_t2.dmp ;
expdpコマンド例(Enterprise Edition)
expdp user2/password1@NSNAME_PDB3 directory=d1 content=all logtime=all metrics=yes exclude=statistics compression=all compression_algorithm=medium parallel=8 job_name=expdp_user2_t2 tables=user2.t2 flashback_time=\"TO_TIMESTAMP\(\'2024/12/31 23:59:59\', \'YYYY/MM/DD HH24:MI:SS\'\)\" logfile=yyyymmdd_expdp_t2.log dumpfile=yyyymmdd_expdp_t2.dmp ;
impdpコマンド例(Standard Edtition2)
impdp user2/password1@NSNAME_PDB3 directory=d1 logtime=all metrics=yes exclude=statistics transform=lob_storage:securefile table_exists_action=append job_name=impdp_user2_t2 logfile=yyyymmdd_impdp_t2.log dumpfile=yyyymmdd_expdp_t2.dmp ;
impdpコマンド例(Enterprise Edtition)
impdp user2/password1@NSNAME_PDB3 directory=d1 logtime=all metrics=yes exclude=statistics data_options=trust_existing_table_partitions transform=lob_storage:securefile table_exists_action=append parallel=8 job_name=impdp_user2_t2 logfile=yyyymmdd_impdp_t2.log dumpfile=yyyymmdd_expdp_t2.dmp ;
ページ初期作成日:2021年10月21日
ページの更新日時:2024年11月01日 (金) 07時19分27秒
ページ作成から1283日目
ここを編集
最終更新:2024年11月01日 07:19