Oracle 服务器故障监视器使用到服务器的请求来查询服务器的运行状态。
服务器故障监视器通过 pmfadm 启动以确保监视器具有高可用性。如果由于任何原因导致监视器终止,则进程监控器设备 (PMF, Process Monitor Facility) 会自动重新启动监视器。
服务器故障监视器由以下进程组成。
主要故障监视器进程
数据库客户端故障探测
本部分包含以下关于服务器故障监视器的信息:
如果在事务过程中数据库联机且没有返回错误,则主要故障监视器确定操作成功。
数据库客户端故障探测执行以下操作:
监视已归档 redo 日志分区请参见 已归档 Redo 日志分区监视器操作。
如果分区运行良好,则确定数据库工作正常。请参见 确定数据库是否正常工作的操作。
探测使用资源属性 Probe_timeout 中设置的超时值来确定成功探测 Oracle 需要分配多长时间。
数据库客户端故障探测会查询动态性能视图 v$archive_dest 来确定已归档 Redo 日志的所有可能目标。对于每个活动目标,探测将确定目标是否运行良好并具有充足的空闲空间用于存储已归档 redo 日志。
如果目标运行良好,则探测确定目标文件系统中空闲空间的大小。如果空闲空间大小低于文件系统容量的 10% 或小于 20 MB,则探测将把信息打印到 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 服务器 故障监视器中的说明定制服务器故障监视器。