Oracle Databaseでは、デフォルトでUNDOデータおよびUNDO表領域が自動的に管理されますが、Oracle Flashback機能を使用している場合は、フラッシュバック操作の成功を保証するために、いくつかのUNDO管理タスクを実行する必要があります。
Oracle Flashback操作中にsnapshot
too
old
というエラーが発生した場合は、フラッシュバック操作のサポートに十分なUNDOデータが保持されているかどうか確認する必要があることを意味しています。
次のメソッドにより、Oracle Flashback操作のサポートを強化します。
自動拡張表領域の最小UNDO保存期間を、Oracle Flashback操作の予想最長期間と同じ長さに設定します。
このためには、UNDO_RETENTION
初期化パラメータを設定します。詳細は、『Oracle Database管理者ガイド』を参照してください。
UNDO表領域を固定サイズに変更します。
自動拡張UNDO表領域に対しては、アクティブな最長実行問合せよりわずかに長くなるように、UNDO保存期間が常に自動的にチューニングされます。ただし、この自動チューニングされた保存期間は、Oracle Flashback操作には不十分な場合があります。UNDO表領域の自動拡張が無効になっているか、またはUNDO領域が固定サイズの場合は、Oracle Flashback操作を効果的にサポートできるよう、UNDO保存期間のチューニングに異なるメソッドが使用されます。
UNDO表領域を固定サイズに変更するには、十分に大きい表領域サイズを選択する必要があります。選択したUNDO表領域サイズが小さすぎると、次のエラーが発生する場合があります。
領域が不足して新たなトランザクションのUNDOデータを収容できないために、DMLが失敗します。
「スナップショットが古すぎます」というエラーが発生し、長時間実行問合せが失敗します。これは、UNDOデータが不足しているために読取り一貫性を維持できないことを意味します。
Oracle Enterprise Manager Database Express (EM Express)には、固定サイズのUNDO表領域の最小サイズを算出できるUNDOアドバイザが用意されています。「UNDOアドバイザを使用したUNDO表領域の最小サイズの計算」を参照してください。