データポンプのエクスポート中に「スナップショットが古すぎる」というエラーが発生する可能性は、次のようにインターネット全体で十分に文書化されています。
ジョブの実行中にこれらの障害ケースを監視する方法はありますか?
私が探している解決策の種類は、次のことを報告するクエリです。
これらの一部を実行するクエリはすべて歓迎されます。このような情報を検索するには、Oracle分析パッケージが必要ですか?そのようなことを照会することはまったく可能ですか?
このエラーのトラブルシューティングを行うには、元に戻す機能を完全に理解する必要があります。私はこのブログ投稿をお勧めします:
http://blog.Oracle48.nl/wordpress/Oracle-database-undo-space-explained/
このクエリを使用して、Undoテーブルスペースの現在のプロファイルを確認できます。
SELECT DISTINCT STATUS,TABLESPACE_NAME, SUM(BYTES), COUNT(*)
FROM DBA_UNDO_EXTENTS
GROUP BY STATUS, TABLESPACE_NAME;
ACTIVE
エクステントには、コミットされていないトランザクションまたは現在ロールバックされているトランザクションが含まれます。UNEXPIRED
エクステントには、undo_retentionパラメーターを満たすためにUndoテーブルスペースに保持する必要のあるトランザクションが含まれていますEXPIRED
エクステントは、Undo_retentionパラメーターよりも古いUndoテーブルスペースに残っているトランザクションです。データベースは、最も古い期限切れのエクステントを削除して、新しいアクティブなエクステント用のスペースを確保します。期限切れのエクステントがない場合は、新しいエクステントの割り当てを試みます。それがデータファイルを拡張することを意味する場合、それはそれを行います。
データファイルを拡張できない場合、データベースは、undo_retention値に違反して、スペースを空けるためにいくつかの期限切れでないエクステントを削除します。したがって、undo_retentionパラメーターは保証ではありませんが、データベースが可能な限り順守しようとするガイドラインです。
ここで、2つの一般的な障害モードがあります。
クエリが削除されたエクステントから読み取ろうとすると、ORA-01555 Snapshot Too Old
で失敗します。
UNDO表領域全体がアクティブなUNDOでいっぱいになると、トランザクションはORA-30036 unable to extend segment in Undo tablespace
で失敗します。
自動拡張または最大化する必要があるまでのスナップショットのUNDO表領域使用量の合計パーセンテージ
DBA_UNDO_EXTENTSのアクティブバイトと期限切れでないバイトの合計が、関連するUNDO表領域のサイズに近い場合、ORA-01555が発生する可能性があります。
アクティブバイトの合計が関連するUNDO表領域のサイズに近い場合、ORA-30036エラーが発生する可能性があります。
自分自身を上書きするまでのREDOログ使用量の合計パーセンテージ
スナップショットが古すぎるエラーに影響するREDOログ構成で変更できるものは何も知りません。この情報はどこで入手しましたか?
スナップショットが元に戻す保持に達するまでの残り時間
これを正確に行うことは、データベース内の他のすべてのトランザクションに依存するため、不可能ではないにしても非常に困難です。 undo_retentionパラメーターからクエリの実行時間を差し引くとよいでしょうが、それは、undoテーブルスペースがundo_retention値を満たすのに十分な大きさであると想定しているだけです。その線を越えると、すべての賭けは無効になります。