UNDO(一時UNDO TEMP_UNDO_ENABLED)難易度 高無料
グローバル一時表(GTT)への DML が多く、その UNDO が通常の UNDO 表領域を消費し、結果として REDO も増えている。次を設定した。
SQL> ALTER SESSION SET TEMP_UNDO_ENABLED = TRUE;
一時 UNDO(temporary undo)の効果として最も適切なものを選べ。(単一選択)
- Aグローバル一時表(GTT)への DML の UNDO を通常の UNDO 表領域ではなく一時表領域(TEMP)に格納する。これにより通常 UNDO とそれに伴う REDO の生成が抑えられる(対象は一時オブジェクトの UNDO のみ)
- Bすべての表(永続表を含む)について UNDO の生成を停止し、UNDO 表領域を完全に不要にする
- CREDO の生成を全面的に停止するため、インスタンス障害からのクラッシュリカバリができなくなる
- D一時表領域を UNDO 表領域として恒久的に転用し、以後は永続表の UNDO もすべて TEMP に書かれる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済
解説
一時 UNDO(temporary undo)は、グローバル一時表(GTT)に対する DML の UNDOを、通常の UNDO 表領域ではなく一時表領域(TEMP)に格納する機能である
(TEMP_UNDO_ENABLED=TRUE で有効化)。
効果:
- 通常 UNDO 表領域の消費が減り、その分に対応する REDO 生成も減る(一時 UNDO 自体はロギングされない)。
- 一時オブジェクトの UNDO が REDO を生まないため、Active Data Guard のリードオンリー・スタンバイ上でも GTT への DML が可能になる、といった利点にもつながる。
あくまで対象は一時オブジェクト(GTT 等)の UNDO であり、通常の永続表の UNDO や REDO を無くすものではない(永続表の変更は引き続き通常 UNDO+REDO で保護される)。
- B対象は一時オブジェクト(GTT)の UNDO だけ。永続表の UNDO は引き続き必要で、UNDO 表領域が不要になるわけではない。
- C永続表の変更に対する REDO は生成され続けるので、クラッシュリカバリは可能。REDO を全面停止する機能ではない。
- D一時 UNDO が TEMP を使うのは一時オブジェクトの UNDO に限る。永続表の UNDO まで TEMP に書かれるわけではない。
ひっかけ: 「一時 UNDO を有効化すれば UNDO も REDO も全部要らなくなる」という過大解釈。対象は一時オブジェクト(GTT)の UNDO のみ。
永続表の UNDO/REDO はこれまで通り必要(さもなければ回復不能になる)。
コマンド例と想定される挙動(未実行)
ALTER SESSION SET TEMP_UNDO_ENABLED = TRUE; 後、GTT の UNDO は一時表領域へ格納される。 一時 UNDO は REDO ログに記録されないため、UNDO 表領域の消費と REDO の生成量がともに減る(その分 一時表領域の使用量は増える)。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)