
データベースの構成要素の一つである「REDOログファイル」について解説してきます。
REDOログファイル(オンラインREDOログファイル)とは?
「REDOデータ」と呼ばれるデータファイルに対する更新履歴を記録するファイルです。
SQLでデータを更新した際に、データファイルの更新と共に更新されます。
REDOログファイルへの書き込み動作の仕組み
データの書き込みイメージとしては、下記です。
REDOログファイルに書き込まれるタイミング
データファイルへの書き込み履歴は、トランザクションがコミットされるタイミングで書き込まれます。
まとめてREDOデータを書き込む仕組み(REDOログバッファ)
生成されたREDOデータは、一時的に「REDOログバッファ」という領域にバッファしておきます。
そして、トランザクションがコミットされるタイミングに、バックグラウンドプロセスである「LGWR」(ログライター)がまとめてREDOログファイルに書き込みます。
「REDOログバッファ」があるおかげで、LGWRの動作回数が減り、パフォーマンスがかなり向上します。
REDOログバッファに割り当てる領域のサイズ
初期化パラメータの「LOG_BUFFER」にて指定します。
REDOログファイルの用途
障害が発生した場合に、REDOログファイルを使って、データの復元を行います。
Oracleは、REDOログファイルに確実に書き込まれることを保証してくれるので、障害が発生したとしても安心です。
REDOログファイルのログローテーション
データベースには、必ず二つ以上のREDOログファイルが割り当てられます。
LGWRは、REDOログファイルに対して、ローテーション方式で書き込んでいきます。(これをログスイッチとも呼びます。)
ただ、ローテーションが一周するとREDOデータが上書かれてしまいます。
その対策としは、「アーカイブログモード」があります。
アーカイブログモードとは?
REDOログは、ローテーションで書き込みが行われますが、ローテーションで上書かれる前に、「アーカイブREDOログファイル」として、コピーすることで運用中のREDOデータを保管する役割です。
アーカイブログモードの動作の仕組み
REDOログへの書き込みローテーションが一周して、ログスイッチが発生すると、バックグラウンドプロセスである「ARCn」(アーカイバ)がREDOログファイルに記録されたREDOデータをコピーして、新規でアーカイブREDOログファイルを作成します。
また、次々に「REDOログファイル」が生成されることになるので、「ログ順序番号」という内部管理番号が採番されます。
耐障害性を高める仕組み(REDOロググループ)
また、耐障害性を高めるために、Oracleでは、REDOログファイルをグループ化して、複数生成します。
それを「REDOロググループ」と呼びます。
この記事へのコメントはありません。