ワークフローを 5 時間以上実行しているときに、「スナップショットが古すぎるというエラー」が頻繁に発生します。ソースは oracle で、ターゲットは Teradata です。この問題の解決にご協力ください。よろしくお願いします
2 に答える
私が読んだORA-01555スナップショットの古すぎるエラーの最良の説明は、このAskTomスレッドにあります
よろしく。
スナップショットの古すぎるエラーは、クエリの実行時間(多くの場合、FORループのカーソル)に多かれ少なかれ直接関係しています。したがって、最善の解決策は、クエリを最適化して実行速度を上げることです。
短期的な解決策として、UNDOログのサイズを増やすことを試みることができます。
アップデート:
UNDOログには、更新される前の以前のバージョンのレコードが保存されます。これは、トランザクションをロールバックし、実行時間の長いクエリの一貫性のあるデータスナップショットの古いバージョンのレコードを取得するために使用されます。
UNDOログを増やして解決したい場合は、おそらくOracleDBの管理に飛び込む必要があります。基本的に(SYSDBAとして)行います:
ALTER SYSTEM SET UNDO_RETENTION = 21600;
21600は6時間秒です。
ただし、UNDOログファイルが十分に大きい場合、Oracleは6時間の古いデータのみを保持します。これは、ロールバックセグメントのサイズと、データベースで実行される更新の量によって異なります。
したがって、元に戻す保持時間を変更することに加えて、ジョブの実行中に同時に実行される更新がほとんどないことも確認する必要があります。特に、ジョブが読み取っているデータの更新は最小限に抑える必要があります。
すべてが失敗した場合は、UNDOログを増やします。