跳过导航链接
退出打印视图
| 适用于 Oracle 的 Oracle Solaris Cluster 数据服务指南 Oracle Solaris Cluster 3.3 3/13 (简体中文)

搜索范围:

- 本文档
- 整个文档库

## 调优 HA for Oracle 故障监视器

HA for Oracle 数据服务的故障监视功能由以下故障监视器提供：

- Oracle 服务器故障监视器

- Oracle 侦听器故障监视器

注 - 对于 Oracle Database 版本 11g R2 或 12 c，如果您使用的是 Oracle Grid Infrastructure for Clusters 单客户机访问名称 (Single Client Access Name, SCAN) 侦听器，则 Oracle Solaris Cluster 软件不为 SCAN 侦听器提供任何故障监视功能。

每个故障监视器均包含在下表所示资源类型的资源中。

表 1-4 HA for Oracle 故障监视器的资源类型

故障监视器 | 资源类型
--- | ---
Oracle 服务器 | `SUNW.oracle_server`
Oracle 侦听器 | `SUNW.oracle_listener`

这些资源的系统属性和扩展属性可控制故障监视器的行为。这些属性的默认值确定了故障监视器的预设行为。预设行为应适合大多数 Oracle Solaris Cluster 安装。因此，仅当需要修改此预设行为时，才应调优 HA for Oracle 故障监视器。

调优 HA for Oracle 故障监视器包括以下任务：

- 设置故障监视器探测间隔

- 设置故障监视器探测的超时

- 定义永久性故障的条件

- 指定资源的故障转移行为

有关更多信息，请参见《Oracle Solaris Cluster Data Services Planning and Administration Guide》中的"Tuning Fault Monitors for Oracle Solaris Cluster Data Services"。以下各小节提供了有关执行这些任务所需的 HA for Oracle 故障监视器的信息。

注册和配置 HA for Oracle 时调优 HA for Oracle 故障监视器。有关更多信息，请参见注册和配置 HA for Oracle。

### Oracle 服务器故障监视器操作

Oracle 服务器的故障监视器通过向服务器发出请求来查询服务器运行状况。

服务器故障监视器是通过 `pmfadm` 启动的，以便实现监视器的高可用性。如果因为任何原因导致监视器终止，进程监视器工具 (Process Monitor Facility, PMF) 将自动重新启动监视器。

服务器故障监视器包括以下进程。

- 主故障监视器进程

- 数据库客户机故障探测器

本节包含有关服务器故障监视器的以下信息：

- 主故障监视器操作

- 数据库客户机故障探测器的操作

- 服务器故障监视器响应数据库事务故障时的操作

- 扫描服务器故障监视器记录的警报

#### 主故障监视器操作

主故障监视器可确定如果数据库联机且在事务处理期间未返回任何错误则操作成功。

#### 数据库客户机故障探测器的操作

数据库客户机故障探测器执行以下操作：

1. 监视归档重做日志的分区。请参见监视归档重做日志分区的操作。

2. 如果分区运行正常，则确定数据库是否正常运行。请参见确定数据库是否正常运行的操作。

探测器使用在资源属性 `Probe_timeout` 中设置的超时值，确定需要为成功探测 Oracle 分配多少时间。

##### 监视归档重做日志分区的操作

数据库客户机故障探测器将查询动态性能视图 `v$archive_dest` 来确定归档重做日志的所有可能目标。对于每个活动目标，探测器将确定目标是否正常运行，是否有足够的空闲空间可供存储归档重做日志。

- 如果目标运行正常，探测器将确定目标文件系统中的空闲空间大小。如果空闲空间大小低于文件系统容量的 10%，并且少于 20 MB，则探测器会将消息输出到 `syslog`。

- 如果目标处于 `ERROR` 状态，则探测器将消息输出到 `syslog`，并禁用操作以确定数据库是否正常运行。在清除错误状态之前，将一直禁用操作。

##### 确定数据库是否正常运行的操作

如果归档重做日志分区运行正常，则数据库客户机故障探测器将查询动态性能视图 `v$sysstat` 以获取数据库性能统计信息。这些统计信息的变化表示数据库正常运行。如果这些统计信息在连续查询之间保持不变，则故障探测器将执行数据库事务以确定数据库是否正常运行。这些事务涉及在用户表空间中创建、更新和删除表。

数据库客户机故障探测器以 Oracle 用户身份执行其所有事务。该用户的 ID 在节点或区域准备期间指定，如如何准备节点中所述。

#### 服务器故障监视器响应数据库事务故障时的操作

如果数据库事务发生故障，服务器故障监视器将执行按导致故障的错误确定的操作。要更改服务器故障监视器执行的操作，请按定制 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` 扩展属性指定。在以下情况下，服务器故障监视器将扫描警报日志文件以获取新警报：

- 启动服务器故障监视器时

- 每次服务器故障监视器查询服务器运行状况时

如果为服务器故障监视器检测到的已记录警报定义了操作，服务器故障监视器将执行此操作以响应警报。

表 B-2 中列出了有关已记录警报的预设操作。要更改服务器故障监视器执行的操作，请按定制 HA for Oracle 服务器 故障监视器中的说明定制服务器故障监视器。

### Oracle 侦听器故障监视器的操作

Oracle 侦听器故障监视器检查 Oracle 侦听器的状态。

如果侦听器正在运行，Oracle 侦听器故障监视器将认为探测成功。如果故障监视器检测到错误，将重新启动侦听器。

注 - 侦听器资源不提供侦听器密码设置机制。如果启用了 Oracle 侦听器安全设置，则侦听器故障监视器的探测可能会返回 Oracle 错误 TNS-01169。由于侦听器能够响应，因此侦听器故障监视器将认为探测成功。此操作不会导致漏检侦听器故障。侦听器故障会返回不同的错误或导致探测超时。

侦听器探测是通过 `pmfadm` 启动的，以便实现探测的高可用性。如果探测被终止，PMF 会自动重新启动探测器。

如果在探测期间侦听器出现问题，探测将尝试重新启动侦听器。为资源属性 `retry_count` 设置的值可确定探测器尝试重新启动的最大次数。如果在尝试次数达到最大次数后探测仍然失败，则该探测器将停止故障监视器并且不切换资源组。

### 获取用于 DBMS 超时故障排除的核心文件

为方便对情况不明的 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`(1M) 手册页。

版权所有 © 2000, 2014, Oracle 和/或其附属公司。 保留所有权利。 法律声明 |