ablog

不器用で落着きのない技術者のメモ

ORA-01466: unable to read data - table definition has changed

現象

Data Pump によるエクスポートとバッチ処理が同時に実行され、エクスポート処理で以下のエラーが発生。

ORA-31693: Table data object "SCOTT"."EMP" failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-01466: unable to read data - table definition has changed

エクスポートはこんな具合に実行。

expdp system/manager directory=pump_dir dumpfile=scott.dmp schemas=scott parallel=2 flashback_time=\"TO_TIMESTAMP\(TO_CHAR\(SYSDATE,\'YYYY-MM-DD HH24:MI:SS\'\),\'YYYY-MM-DD HH24:MI:SS\'\)\"

原因

以下の順序で処理が行われたため、FLASHBACK_TIME パラメータで指定した時点のスナップショットが存在せず、ORA-01466 が発生する。

  • Data Pump で、FLASHBACK_TIME パラメータを指定してスキーマ・モードでエクスポートを開始。
  • 表AにDDLが実行される。
  • 表Aのエクスポートが開始される。

対処

かぶらないようにする。