6.2 メモリー・ガードのアーキテクチャ
メモリー・ガードは、クラスタ・レディ・サービス(CRS)の管理対象J2EEコンテナでMBeanとして実行されるデーモンとして実装されます。
メモリー・ガードは、任意のクラスタ・ノードで高可用性のために実行されるqosmserver
リソース上でホストされています。
クラスタ状態モニターからメモリー・ガードに、クラスタ・ノードのメモリー・リソースに関するリアルタイムの情報を提供するメトリック・ストリームが送信されます。この情報の内容は次のとおりです。
-
使用可能メモリーの量
-
現在使用されているメモリーの量
メモリー・リソース情報を取得した後、メモリー・ガードでは、Oracle Clusterwareからクラスタ・トポロジが収集されます。メモリー・ガードでは、クラスタ・トポロジおよびメモリー・メトリックを使用して、メモリーのストレスが発生しているデータベース・ノードが識別されます。空きメモリーが特定のしきい値未満の場合に、メモリーのストレスが発生しているとみなされます。
その後、ストレスが発生しているノードで、Oracle Clusterwareが管理するデータベース・サービスがトランザクションにより停止されます。メモリー・ガードにより、すでに実行中のセッションおよびそれに関連付けられているトランザクションに影響を与えることなく、メモリーのストレスが緩和されます。完了後、これらのプロセスで使用されているメモリーの解放が開始され、ノード上の使用可能メモリーのプールに追加されます。メモリー・ガードによって使用可能メモリーの容量がしきい値を超えていることが検出されると、影響を受けるノードでサービスが再起動されます。
ストレスが発生しているノードでサービスが停止されている間、リスナーによってそのサービスの新しい接続が、非シングルトン・データベース・インスタンスに同じサービスを提供する他のノードにリダイレクトされます。ただし、ポリシー管理データベースの場合、可用性を確保するためにサービスの最後のインスタンスが停止することはありません。
注意:
メモリー・ガードでは、オープン状態のデータベースに対してサービスを起動または停止できます。メモリー・ガードは、デフォルトのデータベース・サービスを管理することはなく、データベースのアップグレード中またはダウングレード中には機能しません。