UNDOデータとは?【Oracleデータベース解説】
Sal
sql UNDOデータとは、トランザクションによって行われるデータの変更前にデータベースによって保存されるデータのコピーである。

UNDOデータとは?【Oracleデータベース解説】

  1. UNDOデータ
  2. ロールバック操作
  3. フラッシュバック機能
  4. フラッシュバック機能
  5. データベースのリカバリ
  6. UNDO保存期間
  7. 「UNDO保存期間の補償」オプション
  8. UNDO保存期間の有効
  9. UNDOデータの管理
  10. UNDOセグメントとUNDO表領域
  11. 自動UNDO管理
  12. UNDO表領域が小さい場合
  13. UNDOアドバイザ
## UNDOデータ
UNDOデータとは、トランザクションによって行われるデータの変更前に データベースによって保存されるデータのコピーである。 - ロールバック操作 - 読み取り一貫性 - フラッシュバック機能 - データベースリカバリ のために使われる
## ロールバック操作
「コミットされていない変更」を元に戻す操作 UNDOデータはトランザクションがコミットされるまで上書きされない。
## フラッシュバック機能
問い合わせ中にデータが変更されても一貫したデータを見ることができる機能。
## フラッシュバック機能
コミット済みのデータを 過去のある時点のデータの表示やリカバリを行う機能。 フラッシュバック機能は - フラッシュバック問い合わせ - フラッシュバック・トランザクション - フラッシュバック表 などいくつか種類があるが、全てUNDOデータを使用している
## データベースのリカバリ
障害が起こった後のリカバリ操作では 障害発生時にコミットされていなかったトランザクションをロールバックする。
## UNDO保存期間
トランザクションがコミットされるまで上書きされない。 トランザクションをコミットするとそのUNDOデータが占有している領域は利用可能な状態になるが 「UNDO保存期間中」は再利用できる状態ではなく、UNDOデータは保持される。 この保存期間は、「自動UNDO管理」が行われているデータベースでは自動的にチューニングされる。 例えコミット済みであってもUNDOデータはできる限り保持される。 自動拡張するUNDO表領域を使用している場合は、UNDO保存期間の加減値(秒)をUNDO_RETENTION初期化パラメータで指定できる。
## 「UNDO保存期間の補償」オプション
UNDOデータは、UNDO保存期間内であっても領域が不足した場合は上書きされて位しまうこともある。 必ず保持したい場合は

答え

「UNDO保存期間の補償」オプションを有効にする。

ただしこのオプションを有効にすると、UNDO表領域の不足が原因で、 DML操作が失敗する可能性もある。 このオプションは

答え

デフォルトでは無効

## UNDO保存期間の有効
UNDO表領域の作成または変更時に

答え

RETENTION GUARANTEE句を指定する。

無効にしたい場合は

答え

RETENTION NOGUARANTEE句を指定する。

## UNDOデータの管理
自動UNDO管理はデフォルトのモードである。
## UNDOセグメントとUNDO表領域
UNDOデータはUNDOセグメントに格納され、 UNDOセグメントはUNDO表領域という特別な表領域に格納される。 このセグメントに他のセグメントは作成できず、 インスタンス一つにつき必ず一つのUNDO表領域が必要。
## 自動UNDO管理
UNDOデータは不要になったら上書きされ、循環方式で再利用される。 チューニングは2種類あり

答え

自動拡張可能(AUTOEXTEND ON)

UNDO保存期間は最も時間のかかる問い合わせよりもわずかに長くなるようにチューニングされる。

答え

自動拡張不可能(AUTO EXTEND OFF)

固定サイズ

表領域のサイズと現行の負荷に対して最適化される

がある、
## UNDO表領域が小さい場合
この場合次のようなエラーが発生する場合もある。 - DML文の失敗(UNDOデータの領域不足により) - 読み取り一貫性が維持できない事による「スナップショットが古すぎます」
## UNDOアドバイザ
title:UNDOデータとは?【Oracleデータベース解説】 description:UNDOデータとは、トランザクションによって行われるデータの変更前にデータベースによって保存されるデータのコピーである。 category_script:page_name.startswith("6")

答え