Oracleについて勉強している中で大事だと思ったことをまとめるシリーズ。
Oracleのアーキテクチャ概要
Oracleデータベースサーバのアーキテクチャは大別するとメモリー構造、プロセス構造、記憶領域の3要素に分類できます。一般的なアプリケーションと同様に、実際のデータは記憶域構造に格納されますが、作業はメモリ上で行います。
OracleデータベースサーバはOracleインスタンスとOracleインスタンスに関連付けられたOracleデータベースから構成されます。さらにOracleインスタンスはSGA(システムグローバル領域)というメモリー構造と「バックグラウンドプロセス」というプロセス構造から構成され、Oracleデータベースは制御ファイル、データファイル、REDOログファイルという記憶域構造から構成されます。
メモリー構造
Oracleのメモリー構造はSGA(システムグローバル領域)とPGA(プログラムグローバル領域)から構成されます。SGAはすべてのサーバプロセスおよびバックグラウンドプロセスで共有されるメモリー領域です。一方、PGAは各サーバプロセスおよび各バックグラウンドプロセスが個別に持つ非共有メモリです。
プロセス構造
Oracleのプロセス構造にはクライアント側のプロセスであるユーザープロセスとサーバ側のプロセスであるサーバプロセスおよびバックグラウンドプロセスがあります。
ユーザープロセス
ユーザープロセスはクライアントからSQL文を発行するプロセスです。ユーザーがSQLPlusや業務アプリケーションといったSQL文を発行するツールを実行すると起動します。
サーバプロセス
サーバプロセスはSQLを処理するメインのプロセスです。ユーザーからの接続要求を受け取ると起動します。サーバプロセスは以下の処理を実行します。
- アプリケーションから発行されたSQL文の解析および実行
- データファイルからのデータベースバッファキャッシュへのデータブロックの読み取り
- アプリケーションへの結果の送信
バックグラウンドプロセス
バックグラウンドプロセスはサーバプロセスがSQL文の処理に専念できるように他のプロセスの監視やディスクへの書き込みを行うプロセスです。Oracleインスタンスを起動すると自動で起動します。
- DBWn(データベースライター) DBWnはデータベースバッファキャッシュ内の変更されたデータをデータファイルに書き込みます。
- LGWR(ログライター) LGWRはREDOログバッファにある変更ログ(REDOログ)をREDOログファイルに書き込みます。
- CKPT(チェックポイント) データベースバッファキャッシュにある変更バッファをデータファイルに書き込む内部イベントをチェックポイントと呼びます。チェックポイントはデータベース内部で定期的に起こっています。 CKPTは内部イベントであるチェックポイントが起こるとDBWnにシグナルを送り、データベースバッファキャッシュにある変更バッファをデータファイルに書き出すよう指示します。
- SMON(システムモニタ) SMONはインスタンスが異常終了した後の次回インスタンス起動時にインスタンスリカバリを実行します。また、使用されなくなった一時セグメントのクリーンアップを行います。
- PMON(プロセスモニター) PMONはユーザープロセスで障害が発生した場合にユーザープロセス障害からのリカバリを実行します。データベースバッファキャッシュのクリーンアップやユーザプロセスによって使用されていたリソースの解放(ロックの解除など)をおこないます。
- ARCn(アーカイバー) ARCnはログスイッチが発生した際にREDOログファイルを指定したストレージにコピーします。
データベースの論理構造
データベースを構成する論理構造には以下のものがあります。
まとめ
Oracleデータベースの構成がどうなっているかというのは、実務の中ではそんなに意識することはないですが、表領域の概念などは知っておかないと、エラーが出た時などの対応スピードなどに影響してきます。また、データベースを新たに構築する際にも、それぞれのサイズを決めたりする必要があるので、必要な知識になります。