社内SEの徒然なる日記

OracleのimpdpでORA-39126とか致命的なエラー連発!

■ Oracleのリストア

基幹システムのリプレースに合わせて、新環境で色々とテストしていたのですが、その中でexpdpで抜いたデータをimpdpで戻すテストを行いました。

エクスポート、インポートともに、対象はスキーマ全体です。

さて、エクスポートは正常に動いて、そのままインポートを実行したのですが、これがいつまでたっても終わりません。

待ち続けて3時間、夜も更けてきたので音を上げて帰宅したのですが、翌朝結果を見ると見たことのない凄いエラーを吐いて異常終了していました。

■ impdpのログ

実際にエラーが出た個所のログはこんな感じ。ここまで大量にエラーが吐かれると、いろいろと諦めがつきます。



ORA-39126: KUPW$WORKER.STATS_LOAD [MARKER]でワーカーに予期しない致命的なエラーが発生しました
ORA-29913: ODCIEXTTABLEOPENコールアウトの実行中にエラーが発生しました。
ORA-29400: データ・カートリッジ・エラーが発生しました
KUP-11011: 次のファイルはこのロード操作には無効です
KUP-11013: ファイル/backup/expdp.dmpのヘッダーの内部番号が無効です
ORA-06512: "SYS.DBMS_SYS_ERROR", 行95
ORA-06512: "SYS.KUPW$WORKER", 行11259
----- PL/SQL Call Stack -----
object line object
handle number name
51bf79980 27116 package body SYS.KUPW$WORKER
51bf79980 11286 package body SYS.KUPW$WORKER
51bf79980 24286 package body SYS.KUPW$WORKER
51bf79980 20690 package body SYS.KUPW$WORKER
51bf79980 4545 package body SYS.KUPW$WORKER
51bf79980 12063 package body SYS.KUPW$WORKER
51bf79980 2081 package body SYS.KUPW$WORKER
52eec0d20 2 anonymous block
DBMS_METADATA_UTIL.FETCH_STAT
DBMS_METADATA_UTIL.FETCH_STAT
KUPD$DATA.OPEN
KUPD$DATA.SET_PARAMETER - common
KUPD$DATA.SET_PARAMETER - common
KUPD$DATA.SET_PARAMETER - LOAD
KUPD$DATA.SET_PARAMETER - LOAD
KUPD$DATA.SET_PARAMETER - flags
KUPD$DATA.START_JOB
In procedure DETERMINE_FATAL_ERROR with ORA-29913: ODCIEXTTABLEOPENコールアウトの実行中にエラーが発生しました。
ORA-29400: データ・カートリッジ・エラーが発生しました
KUP-11011: 次のファイルはこのロード操作には無効です
KUP-11013: ファイル/backup/expdp.dmpのヘッダーの内部番号が無効です
ORA-39126: KUPW$WORKER.STATS_LOAD [MARKER]でワーカーに予期しない致命的なエラーが発生しました
ORA-29913: ODCIEXTTABLEOPENコールアウトの実行中にエラーが発生しました。
ORA-29400: データ・カートリッジ・エラーが発生しました
KUP-11011: 次のファイルはこのロード操作には無効です
KUP-11013: ファイル/backup/expdp.dmpのヘッダーの内部番号が無効です
ORA-06512: "SYS.DBMS_SYS_ERROR", 行95
ORA-06512: "SYS.KUPW$WORKER", 行11259
----- PL/SQL Call Stack -----
object line object
handle number name
51bf79980 27116 package body SYS.KUPW$WORKER
51bf79980 11286 package body SYS.KUPW$WORKER
51bf79980 24286 package body SYS.KUPW$WORKER
51bf79980 20690 package body SYS.KUPW$WORKER
51bf79980 4545 package body SYS.KUPW$WORKER
51bf79980 12063 package body SYS.KUPW$WORKER
51bf79980 2081 package body SYS.KUPW$WORKER
52eec0d20 2 anonymous block
DBMS_METADATA_UTIL.FETCH_STAT
DBMS_METADATA_UTIL.FETCH_STAT
KUPD$DATA.OPEN
KUPD$DATA.SET_PARAMETER - common
KUPD$DATA.SET_PARAMETER - common
KUPD$DATA.SET_PARAMETER - LOAD
KUPD$DATA.SET_PARAMETER - LOAD
KUPD$DATA.SET_PARAMETER - flags
KUPD$DATA.START_JOB
In procedure DETERMINE_FATAL_ERROR with ORA-29913: ODCIEXTTABLEOPENコールアウトの実行中にエラーが発生しました。
ORA-29400: データ・カートリッジ・エラーが発生しました
KUP-11011: 次のファイルはこのロード操作には無効です
KUP-11013: ファイル/backup/expdp.dmpのヘッダーの内部番号が無効です
ジョブ"********"."*****"は致命的なエラーのため ************ elapsed 0 03:23:44で停止しました



■ 原因

一体何が起こったのかと頭を抱えたのですが、結局原因はインポート中にダンプファイルが壊れたことが原因でした。

日々のバックアップのために、夜間にexpdpをスケジュール実行していたのですが、これを止めるのを忘れてしまったため、インポート中のダンプに上書きする形でエクスポートが実行されていました。

そりゃ、失敗しますよね。

幸いなことに、ダンプファイルを別の場所に退避していたので、それを使って再度インポートを実行したところ、今度は成功しました。

■ 後書き

今回のimpdpは、オプションとして、CONTENT=ALL、TABLE_EXISTS_ACTION=REPLACE を指定していたのですが、これを設定すると異様に時間が掛かりました。

もうちょっと性能が落ちる環境で、CONTENT=DATA_ONLY、TABLE_EXISTS_ACTION=TRUNCATE で実行した時は1時間程度だったので、長くても1時間30分くらいなんだろうなと思ってたのですが、実際には3時間以上かかりました。

ログを見ると、テーブルにデータを入れる部分については1時間程度だったのですが、「オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/INDEXの処理中です」と表示されてからが長かった・・・

インポートの時間の大半ってテーブルのデータを突っ込む部分だと思っていたのですが、そうでもないようです。

最新の記事:http://harikofu.blog.fc2.com/
投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する