Oracle UNDO表領域の管理
開発環境では各表領域のサイズを小さくしていたため、大量データの処理を行った際にDML文が失敗する現象が発生しました。
UNDO表領域についてまとめてみました。
UNDO表領域とは
UNDO情報を格納する表領域。
データベースには複数のUNDO表領域を作成できるが、1インスタンスに対して、アクティブにできるUNDO表領域は1つのみ。
UNDO表領域が小さい場合に起こること
- DML文の失敗
新しいトランザクションに対応するUNDOデータを格納する領域が不足することによるDML文の失敗
- スナップショットが古すぎますのエラー
UNDOデータ不足により、読み取り一貫性が維持できないことによるエラー
UNDO表領域の管理の観点
トランザクションのロールバックやフラッシュバック機能を使用するためには、UNDO表領域を十分な大きさに設定したうえで、次の観点で管理を行う。
- UNDO保存期間を設定する
- AUTOEXTEND ONの場合は使用領域が過多にならないように注意する
- UNDO表領域を固定サイズにする
- UNDOデータの不足による「スナップショットが古すぎます」のエラーを回避する
UNDO表領域の拡張
ALTER DATABASE文を使用します。
ALTER DATABASE ファイルパス RESIZE 変更後のファイルサイズ