LGWR(ログライタ)難易度 高無料
DBWn が、あるダーティバッファ(変更済みブロック)をディスクのデータファイルへ書き出そうとしている。このとき Oracle が必ず守る「書き込み順序」の原則として最も適切なものを選べ。(単一選択)
- Aあるデータブロックの変更に対応する REDOエントリが REDOログファイルへ書き込まれるまで、DBWn はそのダーティブロックをデータファイルへ書き出さない(Write-Ahead Logging)
- BDBWn と LGWR は完全に独立して動作し、どちらの書き込みが先になっても Oracle の整合性・リカバリ可能性には影響しない
- Cデータブロックの書き込みが常に REDOエントリの書き込みより先に行われ、後から REDOログが追いつく形で整合性が保たれる
- DREDOログファイルへの書き込みは
ARCHIVELOGモードのときのみ発生し、NOARCHIVELOGモードでは DBWn の書き出し前の順序保証も存在しない
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済
解説
Oracle は障害からの回復可能性(リカバラビリティ)を保証するため、Write-Ahead Logging(先行書き込みログの原則)を採用している。
具体的には、あるデータブロックへの変更に対応する REDOエントリが REDOログファイルへ書き込まれる前に、そのデータブロック自体(ダーティバッファ)をディスクへ書き出してはならないという順序が保証される。
- DBWn がダーティバッファを書き出そうとするとき、対応する REDO がまだディスクに書かれていなければ、DBWn は LGWR に先に REDO を書き込ませてから自分の書き出しを行う。
- これにより、仮に書き出し中にクラッシュが発生しても、ディスク上には「変更後のデータブロック」より先に「その変更を再現できる REDO」が必ず存在する状態が保たれ、整合性のあるリカバリが可能になる。
もし逆順(データブロックが先、REDOが後)で書き込まれると、書き出し直後にクラッシュした場合、その変更を再現する REDO が無いままデータブロックだけが変更された状態でディスクに残り、リカバリで矛盾が生じ得る。
- B完全に独立ではない。DBWn はダーティブロックを書き出す前に、対応する REDO がディスクへ書かれていることを保証する必要があり、順序が規定されている。
- C順序が逆。正しくはREDOが先、データブロックが後(Write-Ahead Logging)。データブロックが先だとクラッシュ時にリカバリの矛盾が生じ得る。
- DREDOログファイルへの書き込みは
ARCHIVELOG/NOARCHIVELOGいずれのモードでも発生する(アーカイブするかどうかが違うだけ)。Write-Ahead Logging の順序保証もモードに関わらず適用される。
ひっかけ: 「DBWn と LGWR はどちらが先でも問題ない(独立して非同期に動く)」という誤解(B)。両者は完全に無関係ではなく、Write-Ahead Logging の原則で順序が規定されている。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)