技術SashiharaOracleデータベースのアーキテクチャツイートシェアはてブ送るPocketOracleについて勉強している中で大事だと思ったことをまとめるシリーズ。概要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ログファイルを指定したストレージにコピーします。データベースの論理構造データベースを構成する論理構造には以下のものがあります。データベースデータベースは複数の表領域から構成されます。データベースは表領域という論理的な記憶域単位に分割されます。表領域は表や索引などのデータを格納する領域です。表領域には物理ファイルであるデータファイルを対応付けます。表を作成する際に指定する表の格納領域は表領域ですが、実際のデータは対応するデータファイルに格納されます。データブロックデータブロックはデータベース内での最小領域です。ディスクIOの最小単位でもあります。エクステントエクステントは領域の割り当て単位です。連続したデータブロックから構成されます。領域の割り当てはデータブロック単位ではなく、エクステント単位で行われます。セグメントセグメントは表や索引を構成するエクステントの集合体です。特定の表や索引などに割り当てられた領域ともいえます。まとめOracleデータベースの構成がどうなっているかというのは、実務の中ではそんなに意識することはないですが、表領域の概念などは知っておかないと、エラーが出た時などの対応スピードなどに影響してきます。データベースを新たに構築する際にも、それぞれのサイズを決めたりする必要があるので、必要な知識になります。技術この記事が気に入ったらいいねしよう!最新記事をお届けします。コメントをキャンセルメールアドレスが公開されることはありません。牛乳嫌いを克服、牛乳を嫌いになる5つの理由とオススメの牛乳RECOMMENDこちらの記事も人気です。2015.9.27WordPressで「画像を切り抜く際にエラーが発生しました。Budgetsを連携して利用料...ABOUTこの記事をかいた人Sashihara1983年大分県生まれ。東京在住のWeb系エンジニア。人に役立つことや面白い記事を書けたらなと思っています。Budgetsを連携して利用料金状況をSlack通知してみた。