Oracle サーバーの障害モニターは、サーバーの状態を照会する要求をサーバーに送信します。
サーバーの障害モニターは、モニターを高可用性にするために pmfadm によって開始されます。モニターが、何らかの理由により強制終了されても、Process Monitor Facility(PMF) によって自動的に再開します。
サーバーの障害モニターは、次のプロセスで構成されます。
主障害モニタープロセス
データベースクライアント障害検証
主障害モニターは、データベースがオンラインであり、トランザクション中にエラーが返されていない場合に、操作が正常に終了したと判断します。
データベースクライアント障害検証機能は、以下の処理を行います。
アーカイブされた redo ログのパーティションの監視
パーティションに問題がない場合は、データベースが稼働しているかを確認
検証機能は、Probe_timeout リソースプロパティーに設定されたタイムアウト値を使用して、Oracle を正常に検証するための割り当て時間を判断します。
データベースクライアント障害機能は、動的パフォーマンスビュー v$archive_dest に問い合わせ、アーカイブされた redo ログを格納できる場所をすべて割り出します。検証機能はアーカイブ先ごとにその健全性を確認するとともに、アーカイブされた redo ログを格納するだけの十分な空き領域があるかを確認します。
宛先が健全な状態であれば、検証機能は宛先ファイルシステム内の空き領域サイズを確認します。空き領域サイズがファイルシステムの容量の 10% 未満かつ 20M バイト未満の場合、検証機能はメッセージを syslog に出力します。
宛先が ERROR 状態にある場合、検証機能はメッセージを syslog に出力するとともに、動作可能かどうかを確認する処理を無効にします。この処理は、エラー状況が修復されるまで無効のままとなります。
アーカイブされた redo ログのパーティションが健全な状態であれば、データベースクライアント障害検証機能は動的パフォーマンスビュー v$sysstat に問い合わせて、データベースパフォーマンスの統計情報を取得します。統計の変化は、データベースが稼働していることを意味します。続けて問い合わせても、統計情報に変化がない場合、障害検証機能がデータベーストランザクションを実行し、データベースが稼働しているかどうかを判断します。このトランザクションにはユーザーテーブル空間におけるテーブルの作成、更新、および削除が伴います。
データベースクライアント障害検証機能は、すべてのトランザクションを Oracle ユーザーとして実行します。このユーザーの ID は、「ノードを準備する」で説明したとおり、ノードを準備するときに指定します。
データベーストランザクションが失敗すると、サーバー障害モニターは、失敗の原因であるエラーによって決定されたアクションを実行します。サーバー障害モニターが実行するアクションを変更する場合は、「Sun Cluster HA for Oracle サーバー障害モニターのカスタマイズ」の説明に従って、サーバー障害モニターをカスタマイズしてください。
外部プログラムを実行する必要があるアクションの場合、外部プログラムは別個のプロセスとしてバックグラウンドで実行されます。
実行できるアクションは、次のとおりです。
無視。サーバー障害モニターはエラーを無視します。
モニター中止。 データベースを停止せずに、サーバー障害モニターを中止します。
再起動。Restart_type 拡張プロパティーの値によって指定されたエンティティーを停止してサーバー障害モニターは再起動します。
Restart_type 拡張プロパティーに RESOURCE_RESTART が設定されている場合は、データベースサーバーリソースが再起動されます。デフォルトでは、データベースサーバーリソースが再起動されます。
Restart_type 拡張プロパティーに RESOURCE_GROUP_RESTART が設定されている場合は、データベースサーバーリソースグループが再起動されます。
再起動の試行回数が Retry_interval リソースプロパティーに指定した時間内に、Retry_count リソースプロパティーの値を超えることがあります。その場合、サーバー障害モニターはリソースグループを別のノードに切り替えようとします。
切り替え。サーバー障害モニターはデータベースサーバーリソースグループを別のノードに切り替えます。ノードが利用できない場合、リソースグループの切り替えは失敗します。リソースグループの切り替えができなかった場合、データベースサーバーが再起動します。
Oracle ソフトウェアは、警告を警告ログファイルに記録します。このファイルの絶対パスは、 SUNW.oracle_server リソースの alert_log_file 拡張プロパティーによって指定されます。サーバー障害モニターは、次の場合に警告ログファイルを走査して、新しい警告があるかどうかを確認します。
サーバー障害モニターの起動時。
サーバー障害モニターがサーバーの状態を問い合わせるとき。
サーバー障害モニターが検出した記録済みの警告に対してアクションが定義されている場合は、警告への対応としてそのアクションが実行されます。
記録対象警告に対してどのようなアクションが前もって設定されているかについては、表 2 を参照してください。サーバー障害モニターが実行するアクションを変更する場合は、「Sun Cluster HA for Oracle サーバー障害モニターのカスタマイズ」の説明に従って、サーバー障害モニターをカスタマイズしてください。