対策する資格
Java Silver ・ 近日ORACLE Silver ・ 近日
Gold 保有者 監修1Z0-083 対応
UNDO(RETENTION GUARANTEE)難易度 高無料

自動 UNDO 管理(UNDO_MANAGEMENT=AUTO)の DB で、UNDO 表領域に RETENTION GUARANTEE が設定されている(固定サイズ・AUTOEXTEND OFF)。長時間のレポート問合せが走っている最中に、大量の DML を行うトランザクションが UNDO 領域を要求した。このとき起こり得る挙動として最も適切なものを選べ。(単一選択)

  1. A未失効(unexpired)の UNDO を上書きしてでも DML を優先し、レポート問合せ側が ORA-01555(スナップショットが古すぎます)になる
  2. B未失効の UNDO は UNDO_RETENTION 期間まで保護されるため上書きできず、UNDO 領域が不足して DML 側が ORA-30036 で失敗する
  3. CUNDO 表領域が AUTOEXTEND OFF でも自動的に拡張され、両方とも成功する
  4. DRETENTION GUARANTEE は読み取り一貫性に無関係で、DML・問合せの挙動は変わらない
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:BGold監修

解説

RETENTION GUARANTEE は「失効していない(unexpired)UNDO を UNDO_RETENTION 期間が経過するまで絶対に上書きさせない」設定である。 これにより、長時間の問合せが必要とする読み取り一貫性用の UNDO が確実に保護され、ORA-01555(snapshot too old)を防げる。

そのトレードオフとして、UNDO 領域が逼迫し、かつ保護対象(未失効)の UNDO を上書きできないと、 新しい DML 側が UNDO 領域を確保できず失敗する。固定サイズで AUTOEXTEND OFF なので拡張もできず、 典型的には ORA-30036(UNDO 表領域内でセグメントを拡張できません)になる。 つまり「問合せの一貫性を守る代わりに、領域不足時は DML が犠牲になる」。

各誤答が違う理由
  • Aそれは RETENTION NOGUARANTEE(既定)の挙動。保証ありでは未失効 UNDO を上書きしないので、ORA-01555 でなく DML 側がエラーになる。優先順位が逆。
  • CAUTOEXTEND OFF なら自動拡張はしない。両方成功は保証されない。
  • DRETENTION GUARANTEE はまさに読み取り一貫性(長時間問合せの UNDO 保護)のための設定であり、無関係ではない。
ひっかけ: 「保証ありにすればすべて安全」ではない。守るもの(問合せの一貫性)と犠牲になるもの(領域不足時の DML)がトレードオフ。 ORA-01555(問合せ側)と ORA-30036(DML 側)のどちらが出るかが、GUARANTEE / NOGUARANTEE で入れ替わる点が核心。
実機確認の答え合わせ
ORA-30036: UNDO表領域'UNDOTBS1'内でセグメントを拡張できません。
(英語:ORA-30036: unable to extend segment by N in undo tablespace 'UNDOTBS1')
Gold 保有者による書き下ろし解説・実機で検証済
この分野をもっと解いて、得点源に
UNDO を含む全問を分野別に演習できます(無料)。
演習する →