雑記帳

趣味や仕事の備忘録などを気分で書いてみます

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 変更後のファイルサイズ