ロールバックセグメント【rollback segment】
概要
ロールバックセグメントとは、データベース管理システム(DBMS)がストレージ上に設ける管理領域の一つで、データの更新前の内容を一時的に保存しておくためのもの。トランザクション処理における取り消し操作や、複数の利用者が同時にアクセスする際のデータ整合性の維持に利用される。

データベースでは、関連する複数の操作をひとまとめにした「トランザクション」(transaction)という処理単位で更新が行われることがある。SQL文によってデータが書き換えられると、更新直前の内容がUNDOログとして記録され、ロールバックセグメントに蓄積される。
システム障害の発生や利用者による明示的な指示でトランザクションを取り消す必要が生じた場合、DBMSはUNDOログを遡ってデータを更新前の状態へ巻き戻す。この処理を「ロールバック」と呼び、途中まで反映された変更だけが残ってデータベースが矛盾した状態になることを防ぐ。
また、ロールバックセグメントは「マルチバージョン読み取り一貫性」(MVCC:Multi-Version Concurrency Control)の実現にも使われる。あるトランザクションがデータを更新している最中に別の利用者が同じデータを参照しようとした場合、DBMSはコミット前の未確定データではなく、ロールバックセグメントに保存された更新前のデータを返す。これにより更新処理と参照処理が同時に行われても、一貫した内容を読み取ることができる。
かつてのOracle Databaseなどでは、管理者がロールバックセグメントの作成や容量管理を手動で行う必要があった。現在の多くのDBMSでは自動UNDO管理が標準的に採用されており、UNDOログの格納や領域の拡張・回収はシステムが自動的に処理する。現在のOracle Databaseではロールバックセグメントに相当する領域は「UNDO表領域」(UNDO tablespace)として管理される。
(2026.7.14更新)