Sun Cluster HA for Oracle データサービスの障害監視は、以下の障害モニターによって提供されます。
Oracle サーバー障害モニター
Oracle リスナーの障害モニター
各障害モニターは、次の表に示すリソースタイプを持つリソースに含まれています。
表 2 Sun Cluster HA for Oracle 障害モニターのリソースタイプ
障害モニター |
リソースタイプ |
---|---|
Oracle サーバー |
SUNW.oracle_server |
Oracle リスナー |
SUNW.oracle_listener |
障害モニターの動作は、これらのリソースのシステムプロパティーと拡張プロパティーによって制御されます。事前に設定された障害モニターの動作は、これらのプロパティーのデフォルト値に基づいています。現在の動作は、ほとんどの Sun Cluster システムに適しているはずです。したがって、Sun Cluster HA for Oracle 障害モニターを調整するのは、事前に設定されたこの動作を変更したい場合「だけに」留めるべきです。
Sun Cluster HA for Oracle 障害モニターの調整では次のことを行います。
障害モニターの検証間隔を設定する。
障害モニターの検証タイムアウトを設定する。
継続的な障害とみなす基準を定義する。
リソースのフェイルオーバー動作を指定する。
詳細は、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』の「Sun Cluster データサービス用に障害モニターを調整する」を参照してください。これらのことを行う際に必要になる Sun Cluster HA for Oracle 障害モニターの情報については、以下の各項で説明します。
Sun Cluster HA for Oracle 障害モニターの調整は、Sun Cluster HA for Oracle の登録と構成を行うときに実施します。詳細は、「Sun Cluster HA for Oracle の登録と構成」を参照してください。
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 サーバー障害モニターのカスタマイズ」の説明に従って、サーバー障害モニターをカスタマイズしてください。
Oracle リスナーの障害モニターは、Oracle リスナーの状態を調べます。
リスナーが実行されている場合、Oracle リスナーの障害モニターは検証に成功したと判断します。障害モニターがエラーを検知すると、リスナーが再起動されます。
リスナーリソースにリスナーパスワードを設定するメカニズムはありません。Oracle リスナーセキュリティーを有効にすると、リスナー障害モニターの検証機能は Oracle エラー TNS-01169 を返す可能性があります。リスナーは応答が可能なため、リスナー障害モニターは検証が成功したと見なします。このアクションによってリスナー障害が検出されない状態に留まることはありません。リスナーの障害は異なるエラーを返すか、あるいは検証のタイムアウトを引き起こします。
リスナー検証は、可用性を高めるために pmfadm によって開始されます。リスナー検証が強制終了された場合、PMF によって自動的に再開されます。
検証中にリスナーで問題が発生した場合、検証機能によってリスナーの再起動が試行されます。再起動の試行最大回数は、Retry_count リソースプロパティーに設定した値によって決定されます。最大回数まで再起動を試行しても検証が成功しない場合、障害モニターは停止され、リソースグループのスイッチオーバーは行われません。