HA for Oracle Database データサービスの障害のモニタリングは、次の障害モニターによって行われます。
Oracle Database サーバー障害モニター
Oracle Database リスナー障害モニター
各障害モニターは次の表に示すリソースタイプのリソースに含まれています。
|
これらのリソースの標準プロパティーおよび拡張プロパティーが、障害モニターの動作を制御します。これらのプロパティーのデフォルト値が、事前設定された障害モニターの動作を決定します。事前設定された動作は、ほとんどの Oracle Solaris Cluster のインストールに適しているはずです。したがって、HA for Oracle Database 障害モニターの調整は、事前に設定されたこの動作を変更する必要がある場合のみにとどめるべきです。
HA for Oracle Database 障害モニターを調整するには、次のタスクを実行します。
障害モニターの検証間隔を設定する
障害モニターの検証タイムアウトを設定する
継続的な障害とみなす基準を定義する
リソースのフェイルオーバー動作を指定する
詳細は、规划和管理 Oracle Solaris Cluster 4.4 数据服务 の Oracle Solaris Cluster データサービスの障害モニターの調整を参照してください。これらのタスクを行うために必要な HA for Oracle Database 障害モニターについての情報は、以降のサブセクションで説明します。
HA for Oracle Database を登録および構成する際に、HA for Oracle Database 障害モニターを調整します。詳細は、HA for Oracle Database の登録と構成を参照してください。
Oracle Database サーバーの障害モニターは、サーバーへのリクエストを使用して、サーバーの状態をクエリーします。
サーバー障害モニターは、pmfadm を介して起動され、モニターの可用性を高めます。何らかの理由でモニターが強制終了すると、プロセスモニター機能 (PMF) が自動的にモニターを再起動します。
サーバー障害モニターは、次のプロセスで構成されます。
主要な障害モニタープロセス
データベースクライアント障害検証
このセクションでは、サーバー障害モニターに関する次の情報について説明します。
主要障害モニターは、データベースがオンラインで、トランザクション中にエラーは返されない場合、操作が正常に行われたと見なします。
データベースクライアント障害検証は、次の操作を行います。
アーカイブされた再実行ログ用のパーティションのモニタリング。アーカイブされた再実行ログ用のパーティションをモニターする操作を参照してください。
パーティションに問題がない場合は、データベースが稼働しているかの確認。データベースが操作可能かどうかを判定する操作を参照してください。
検証機能は、リソースプロパティー Probe_timeout に設定されているタイムアウト値を使用して、Oracle Database を正常に検証するために割り当てる時間を決定します。
データベースクライアント障害検証機能は、動的パフォーマンス表示 V$archive_dest をクエリーして、アーカイブされた再実行ログのすべての可能な送信先を確認します。すべてのアクティブな送信先に対して、検証機能は、送信先が健全で、アーカイブされた再実行ログを保存するための十分な空き領域があるかどうかを確認します。
送信先が健全である場合、検証は送信先のファイルシステムの空き容量を決定します。空き容量がファイルシステムの容量の 10% 未満で、20MB 未満の場合、検証機能は syslog にメッセージを出力します。
送信先が ERROR ステータスの場合、検証機能は syslog にメッセージを出力し、データベースが操作可能かどうかを判定するために操作を無効にします。この操作は、エラー状態がクリアされるまで無効のままです。
アーカイブされた再実行ログのパーティションが健全な場合、データベースクライアント障害検証は動的パフォーマンスビュー V$sysstat をクエリーして、データベースパフォーマンス統計情報を取得します。これらの統計の変化は、データベースが稼働していることを意味します。連続したクエリー間でこれらの統計が変化していない場合、障害検証機能はデータベーストランザクションを実行して、データベースが操作可能かどうかを判定します。これらのトランザクションには、ユーザー表スペースの表の作成、更新、および削除を伴います。
データベースクライアント障害検証機能は、Oracle Database ユーザーとしてすべてのトランザクションを実行します。このユーザーの ID は、Oracle Solaris Cluster ノードの準備方法で説明しているように、Oracle Solaris Cluster ノードの準備中に指定されます。
データベーストランザクションが失敗した場合、サーバー障害モニターは障害の原因になったエラーによって決定されるアクションを実行します。サーバー障害モニターが実行するアクションを変更するには、HA for Oracle Database サーバー 障害モニターのカスタマイズの説明に従って、サーバー障害モニターをカスタマイズしてください。
アクションが外部プログラムの実行を必要とする場合、プログラムはバックグラウンドで別のプロセスとして実行されます。
可能なアクションは、次のとおりです。
無視。サーバー障害モニターはエラーを無視します。
モニター停止。データベースを停止せずに、サーバー障害モニターが停止されます。
再起動。サーバー障害モニターは、Restart_type 拡張プロパティーの値によって指定されたエンティティーを停止および再起動します。
Restart_type 拡張プロパティーが RESOURCE_RESTART に設定されている場合、サーバー障害モニターはデータベースサーバーリソースを再起動します。デフォルトでは、サーバー障害モニターはデータベースサーバーリソースを再起動します。
Restart_type 拡張プロパティーが RESOURCE_GROUP_RESTART に設定されている場合、サーバー障害モニターはデータベースサーバーリソースグループを再起動します。
切り換え。サーバー障害モニターは、データベースサーバーリソースグループを別のクラスタノードに切り換えます。使用可能なノードがない場合、リソースグループを切り換える試みは失敗します。リソースグループを切り換える試みが失敗すると、データベースサーバーは再起動されます。
Oracle Database は、警告を警告ログファイルに記録します。このファイルの絶対パスは、SUNW.oracle_server リソースの alert_log_file 拡張プロパティーによって指定されます。サーバー障害モニターは、次のタイミングで新しい警告があるかどうか、警告ログファイルをスキャンします。
サーバー障害モニターが起動されたとき
サーバー障害モニターがサーバーの健全性をクエリーするとき
サーバー障害モニターが記録された警告を検出し、その警告に対処方法が定義されている場合、サーバー障害モニターは警告に対応する対処方法を実行します。
記録される警告の事前設定アクションは、図 5, 表 5, 記録される警告の事前設定アクション に一覧表示されています。サーバー障害モニターが実行するアクションを変更するには、HA for Oracle Database サーバー 障害モニターのカスタマイズの説明に従って、サーバー障害モニターをカスタマイズしてください。
Oracle Database リスナー障害モニターは、Oracle Database リスナーのステータスを確認します。
リスナーが実行中の場合、Oracle Database リスナー障害モニターは検証が成功したと見なします。障害モニターがエラーを検出すると、リスナーが再起動されます。
リスナー検証は、pmfadm を介して起動することで、検証の可用性を高めます。検証が強制終了した場合、PMF は自動的に検証機能を再起動します。
検証中にリスナーで問題が発生した場合、検証機能によってリスナーの再起動が試行されます。検証機能による再起動の試行最大回数は、retry_count リソースプロパティーに設定した値によって決定されます。最大回数まで起動を試みても、まだ検証が成功しない場合、検証機能は障害モニターを停止し、リソースグループの切り換えを行いません。
不明な DBMS タイムアウトのトラブルシューティングを容易にするために、障害モニターを有効にして、検証タイムアウトが発生したときにコアファイルを作成できます。コアファイルの内容は、障害モニターのプロセスに関するものです。障害モニターは、ルート (/) ディレクトリにコアファイルを作成します。コアファイルを作成するために障害モニターを有効にするには、coreadm コマンドを使用して set-id コアダンプを有効にします。
# coreadm -g /var/cores/%f.%n.%p.core -e global -e process \ -e global-setid -e proc-setid -e log
詳細は、coreadm(8) のマニュアルページを参照してください。