今回は小ネタ。オラクルDBにおけるログライタープロセスの役割を実感してみる。
環境
oracle 12c ( Single Instance )
0. 事前準備
1. 表の作成、レコードの挿入
作成した表領域上に表を作成し、レコードを挿入する。
さて、ここからが本題。
オラクルDBにはバックグラウンドプロセスの一つにログライタープロセスがある。
出典:Oracle® Databaseリファレンス12c リリース1 (12.1) : バックグラウンド・プロセス
これはREDOログバッファの内容をオンラインREDOログに書き出すプロセスである。
そのため、このプロセスを停止させると、更新系の処理が止まる。
たとえばcommitの処理が完了しない。
ではそれを実感してみる。
2. ログライタープロセスの停止
ログライタープロセスを停止する。
停止するにはkill
コマンドのSTOP
オプションを使用する。
3. 更新系の処理の実施
この状態でレコードを挿入しcommitを試みる。
ログライタープロセスが停止しているため、commitが完了しない。
なお、この状態ではアラートログに特段エラーは出ていなかった。
4. ログライタープロセスの再開
以下のコマンドでログライタープロセスを再開する。
再開するやいなや、即座にcommitが完了した。
まとめ
今回はログライタープロセスの役割を実感してみた。
この他にも、オラクルには様々なバックグラウンドプロセスが存在する。
それらの役割を、基本的には本やドキュメントを通して頭で理解して済ませていたが
たまにはこうして各プロセスの役割を実感しておくことも知識の定着に良い気がした。
また、プロセスの停止はプロセス障害のシミュレートとして使うのも良さそう。