トップ > DBA上級 RAC > 3章
3章 RACアーキテクチャ
本章ではRACを構成する為のRACアーキテクチャについて確認していきたいと思います。

RACはたくさんのプロセスで構成されていてすべてを紹介することは出来ないので
今回はRACの中でも重要な要素やプロセスについてご紹介していきます。


RAC特有のプロセス郡


Oracleクラスタウェアは上記の動作を行い、サーバの可用性を保っています。
今回はOracleクラスタウェアのプロセスとしてcrs,cssプロセスが登場しましたが、
その他のプロセスも登場します。そしてSMONやDBWnなどの
データベースプロセスも存在します。


Oracleクラスタウェア特有のプロセスとしては以下のようなプロセスがあります。

クラスタ・レディ・サービス技術スタック(マニュアル抜粋)
クラスタ・レディ・サービス(CRS)技術スタックは、様々なサービスを
管理するために複数のプロセスを利用します。


・クラスタ・レディ・サービス(CRS)
クラスタで高可用性操作を管理する主要プログラム。
CRSDは、各リソースのOCRに格納されている構成情報に基づいて、
クラスタ・リソースを管理します。これには、起動、停止、監視および
フェイルオーバー操作が含まれます。
CRSDプロセスは、リソースのステータスが変更されるとイベントを生成します。
Oracle RACをインストールしている場合、CRSDプロセスはOracle Databaseインスタンス
やリスナーなどを監視し、障害が発生した場合にこれらのコンポーネントを自動的に再起動します。


・クラスタ同期サービス(CSS)
クラスタのメンバーシップを管理し、ノードがクラスタに対して追加または
削除された際にメンバーに通知することによって、クラスタ構成を管理します。
保証されているサード・パーティ製クラスタウェアを使用している場合、
CSSプロセスは、クラスタウェアとともに動作して、ノードのメンバーシップに関する情報を管理します。


cssdagentプロセスは、クラスタの監視およびI/Oフェンシングを実行します。
このサービスは、以前はOracle Process Monitor Daemon(oprocd)(Windowsでは
OraFenceServiceとも呼ばれる)によって提供されていました。cssdagentで障害が発生した場合、
Oracle Clusterwareによってノードが再起動されることがあります。


・Oracle ASM
Oracle ClusterwareおよびOracle Databaseのディスク管理が提供されます。


・クラスタ時刻同期化サービス(CTSS)
Oracle Clusterwareのクラスタで時間管理が提供されます。


・イベント・マネージメント(EVM)
Oracle Clusterwareによって作成されたイベントを発行するバックグラウンド・プロセス。


・グリッド・ネーミング・サービス(GNS)
外部DNSサーバーから送信されるリクエストを処理し、
クラスタで定義されている名前の名前解決を実行します。


・Oracle Agent (oraagent)
クラスタウェアを拡張して、Oracle固有の要件および複雑なリソースをサポートします。
このプロセスは、FANイベントが発生した場合にサーバー・コールアウト・スクリプトを実行します。
このプロセスは、Oracle Clusterware 11gリリース1(11.1)ではRACGと呼ばれていました。


・Oracle Notification Service (ONS)
高速アプリケーション通知(FAN)イベントの通信用のパブリッシュおよびサブスクライブ・サービス。

・Oracle Root Agent(orarootagent)
rootが所有しているネットワークやグリッド仮想IPアドレスなどのリソースを
CRSDが管理するのを支援する専用のoraagentプロセス。


Oracle高可用性サービス技術スタック
Oracle高可用性サービス技術スタックは、Oracle Clusterwareの高可用性を
提供するために複数のプロセスを使用します。


・Cluster Logger Service (ologgerd)
クラスタ内のすべてのノードから情報を受け取り、
Oracle Grid Infrastructure管理リポジトリベースのデータベース内で持続します。
このサービスは、クラスタ内の2つのノードのみで実行されます。


・グリッド・プロセス間通信(GIPC)
冗長なインターコネクトの使用を可能にするサポート・デーモン。


・グリッド・プラグ・アンド・プレイ(GPNPD)
グリッド・プラグ・アンド・プレイ・プロファイルへのアクセスを提供し、
クラスタのノード間でプロファイルの更新を調整して、すべてのノードで最新の
プロファイルが保持されるようにします。


・マルチキャスト・ドメイン名サービス(mDNS)
クラスタ内のプロファイルを特定するためにグリッド・プラグ・アンド・プレイに
よって使用され、名前解決を実行するためにGNSによって使用されます。
mDNSプロセスは、Linux、UNIXおよびWindowsのバックグラウンド・プロセスです。


・Oracle Agent (oraagent)
クラスタウェアを拡張して、Oracle固有の要件および複雑なリソースをサポートします。
このプロセスは、Oracle Clusterware所有者として実行されるGIPC、GPNPD、GIPCなどのデーモンを管理します。


・Oracle Root Agent (orarootagent)
rootが所有するCluster Health Monitor (CHM)などのリソースを
CRSDが管理するのを支援する専用のoraagentプロセス。


上記のようなプロセスが存在しますが、すべて覚えるのは大変なので
参考程度に見て頂ければと思います。
またOracleデータベース内にクラスタウェア特有のプロセスが存在します
がそれも後ほど紹介していきます。


キャッシュフュージョン


RACの特徴は全ノードがアクティブであり、すべてのノードからデータを共有して、
処理を行うことが出来ます。その為、同時に同じデータを更新することもあり、
片方の処理を待機させるような排他制御を行わないと、同時にデータを更新してしまい、
データ整合性が取れなくなってしまいます

RACでは同時に更新しないようデータブロックデータを管理し、
データ整合性を保つような動作が備わっています。

これらの排他制御を行うプロセスはLMS、LMDが行っています。

LMSプロセスはグローバル・リソース・ディレクトリ(GRD)という領域に
データブロックのロック情報や最新ブロックの保持インスタンスなどの情報を記録し、
その情報を使用して、データブロックの管理を行っています。

LMDプロセスは、グローバル・エンキュー・サービスによって
管理されるエンキュー・リソースを処理します。

処理の流れは以下のとおりです。

キャッシュフュージョン
上記のようにLMS,LMDがブロック管理を行い、キャッシュフュージョンによるブロック転送を
行うことで、全ノードの更新処理を可能にしています。

昔のOracleRAC(当時はパラレルサーバと呼ばれていました。)はブロックを別ノードに送る場合、
一度、データファイルに書き込んでから、別ノードに読込をさせていた為、処理に時間がかかっていました。
キャッシュフュージョンはメモリー間の転送である為、高速に処理できるようになって、性能が改善しました。


本章は以上となります。今回はRACのアーキテクチャについて学んでいきました。
次章からはインストールを行っていきたいと思います。