Sun Cluster HA for Oracle には、サーバーモニターとリスナーモニターの 2 つの障害モニターがあります。
Oracle サーバーの障害モニターは、サーバーの状態を照会する要求をサーバーに送信します。
サーバーの障害モニターは、障害モニターの主プロセスとデータベースクライアント障害検証の、2 つのプロセスから成ります。主プロセスは、エラー検索と scha_control アクションを実行します。データベースクライアント障害検証は、データベーストランザクションを実行します。
検証機能からデータベースへのすべての接続は、ユーザー Oracle で実行されます。障害モニターの主プロセスは、データベースがオンラインで、トランザクション中にエラーが返されていない場合に、操作が正常に終了したと判断します。
データベースのトランザクションに失敗した場合、主プロセスは、実行するアクションについて内部アクションテーブルを調べ、あらかじめ定義されているアクションを実行します。そのアクションが外部プログラムを実行する場合は、そのプログラムは別プロセスとしてバックグラウンドで処理されます。このとき実行されるアクションには、スイッチオーバー、サーバーの停止と再起動、リソースグループの停止と再起動があります。
検証機能は、Probe_timeout リソースプロパティで設定されるタイムアウト値を使用し、Oracle を正常に検証するための試行時間を判断します。
サーバーの障害モニターは、Oracle の alert_log_file を走査し、見つけたエラーに基づいてアクションを実行します。
サーバーの障害モニターは、高可用性にするために pmfadm によって開始されます。モニターが、何らかの理由により強制終了されても、pmf によって自動的に再開します。
Oracle リスナーの障害モニターは、Oracle リスナーの状態を調べます。
リスナーが実行されている場合、Oracle リスナーの障害モニターは検証に成功したと判断します。障害モニターがエラーを検知すると、リスナーが再起動されます。
リスナー検証は、高可用性にするために pmfadm によって開始されます。リスナー検証が強制終了されても、pmf によって自動的に再開します。
検証中にリスナーで問題が発生した場合、検証機能はリスナーの再起動を試みます。再起動の試行最大回数は、Retry_count リソースプロパティで設定した値で決定されます。最大回数まで再起動を試みても検証が成功しない場合は、障害モニターを停止し、リソースグループのスイッチオーバーは行いません。