ORA-01466: unable to read data - table definition has changed(データを読み取れない - 表定義が変更された)
Oracle意味
過去の時点のデータを読み取るクエリ (Flashback Query、AS OF、または読み取り一貫性) が、照会した過去の時点から現在までの間に表定義 (DDL) が変更されたため失敗した。Oracle は現在の定義でその時点のデータを安全に読み取れない。
原因
Flashback/AS OF クエリの対象タイムスタンプより後に、表に DDL (列の追加/削除、型の変更) が適用された。また、クライアントとサーバー間の時刻差や、ごく直近 (数秒前) の過去のクエリは、SCN/時刻の分解能によりこのエラーになることがある。
対処方法
表の DDL 変更より前の時刻/SCN に対してフラッシュバッククエリを実行する。可能であれば、タイムスタンプではなく正確な SCN を使用する (AS OF SCN)。ごく直近の過去のクエリでは、数秒さかのぼる。恒久的な履歴アクセスが必要な場合は、DDL ではなくバージョン管理表やアーカイブ表の設計を検討する。
同じデータベースの他の項目
- ORA-00494enqueue held for too long by 'inst N, osid M'('inst N, osid M' がエンキューを長時間保持)
- ORA-04021timeout occurred while waiting to lock object(オブジェクトのロック待機中にタイムアウト発生)
- ORA-04061existing state of package/procedure has been invalidated(パッケージ/プロシージャの既存の状態が無効化された)
- ORA-08176consistent read failure; rollback data not available(読み取り一貫性の失敗。ロールバックデータが利用できない)
- ORA-00020maximum number of processes (N) exceeded(最大プロセス数 (N) を超えた)
- ORA-01113file N needs media recovery(ファイル N にメディアリカバリが必要)
- ORA-02393exceeded call limit on CPU usage(CPU 使用量の呼出し上限を超えた)