自动生成 Oracle Solaris Cluster 对象的名称
通过 Oracle Solaris Cluster 软件管理 Oracle RAC 数据库
对 Oracle 10g 发行版 2 或 11g RAC 数据库实例的 Oracle Solaris Cluster 资源状态进行更改的影响
对 Oracle 9i RAC 数据库实例的 Oracle Solaris Cluster 资源状态进行更改的影响
SPARC: 设置 Oracle UDLM 通信端口范围的准则
6. Support for Oracle RAC 故障排除
7. 修改 Support for Oracle RAC 的现有配置
Support for Oracle RAC 数据服务的故障监视功能由以下资源的故障监视器提供:
可伸缩设备组资源
可伸缩文件系统挂载点资源
Oracle 9i RAC 服务器资源
Oracle 9i RAC 侦听器资源
表 5-4 Support for Oracle RAC 故障监视器的资源类型
|
这些资源的系统属性和扩展属性控制故障监视器的行为。这些属性的默认值确定故障监视器的预设行为。预设行为应适合大多数 Oracle Solaris Cluster 安装。因此,仅当需要修改此预设行为时方可调整 Support for Oracle RAC 故障监视器。
调整 Support for Oracle RAC 故障监视器涉及以下任务:
设置故障监视器探测的间隔
设置故障监视器探测的超时值
定义持久性故障的条件
指定资源的故障转移行为
有关更多信息,请参见《Oracle Solaris Cluster Data Services Planning and Administration Guide》中的"Tuning Fault Monitors for Oracle Solaris Cluster Data Services"。有关执行这些任务所需的 Support for Oracle RAC 故障监视器的信息将在后续各小节中提供:
默认情况下,故障监视器会监视资源所表示的设备组中的所有逻辑卷。如果仅需监视设备组中逻辑卷的子集,请设置 LogicalDeviceList 扩展属性。
设备组的状态派生自受监视的各个逻辑卷的状态。如果所有受监视的逻辑卷都运行良好,则说明设备组正常运行。如果有任何受监视的逻辑卷发生故障,则说明设备组存在故障。如果发现设备组发生故障,将停止对表示资源组的资源的监视并将该资源置于禁用状态。
通过查询卷的卷管理器可获取各个逻辑卷的状态。如果无法通过查询确定 Solaris Volume Manager for Sun Cluster 卷的状态,故障监视器将执行文件输入/输出 (input/output, I/O) 操作来确定卷状态。
注 - 对于镜像磁盘,即使某个子镜像发生故障,也仍认为设备组运行良好。
如果用户级群集成员的重新配置导致了 I/O 错误,将在用户级群集成员监视器 (userland cluster membership monitor, UCMM) 重新配置过程中暂停故障监视器对设备组资源的监视。
为了确定已挂载文件系统是否可用,故障监视器会对文件系统上的测试文件执行 I/O 操作,如打开、读取及写入操作。如果在超时时限内未完成 I/O 操作,故障监视器将报告错误。要指定 I/O 操作的超时值,请设置 IOTimeout 扩展属性。
对错误的响应因文件系统类型而异,如下所示:
如果合格 NAS 设备上的文件系统是 NFS 文件系统,响应如下:
在当前节点上停止对资源的监视。
在当前节点上将资源置于禁用状态,这会导致从该节点上卸载文件系统。
如果文件系统是 Sun QFS 共享文件系统,响应如下:
如果出错的节点上托管有元数据服务器资源,将元数据服务器资源故障转移到其他节点。
文件系统已卸载。
如果故障转移尝试失败,文件系统仍将保持卸载状态并发出警告。
Oracle 9i RAC 服务器故障监视器使用到服务器的请求来查询服务器的运行状况。
服务器故障监视器通过 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,如如何创建 DBA 组和 DBA 用户帐户中所述。
如果数据库事务失败,服务器故障监视器将针对导致故障的错误确定要执行的操作。要更改服务器故障监视器所执行的操作,可以按照定制 Oracle 9i RAC 服务器 故障监视器中的说明定制服务器故障监视器。
如果操作需外部程序才能运行,则该程序将作为单独进程在后台运行。
可能执行的操作如下:
忽略。服务器故障监视器将忽略该错误。
停止监视。服务器故障监视器将停止且不关闭数据库。
重新启动。服务器故障监视器将停止然后重新启动 Oracle 9i RAC 服务器资源。
警报日志文件中的 Oracle 软件日志警报。该文件的绝对路径由 SUNW.scalable_rac_server 资源的 alert_log_file 扩展属性指定。服务器故障监视器将在以下时间扫描警报日志文件的新警报:
当启动服务器故障监视器时
每次服务器的故障监视器查询服务器运行状况时
如果服务器故障监视器检测到一个已记录的警报,且针对该警报定义了一项操作,则服务器故障监视器将执行该操作以响应警报。
表 B-2 中列出了已记录警报的预设操作。要更改服务器故障监视器所执行的操作,可以按照定制 Oracle 9i RAC 服务器 故障监视器中的说明定制服务器故障监视器。
Oracle 9i RAC 侦听器故障监视器会检查 Oracle 侦听器的状态。
如果侦听器正在运行,则 Oracle 9i RAC 侦听器故障监视器会认为探测成功。如果故障监视器检测到错误,则会重新启动侦听器。
注 - 侦听器资源不提供设置侦听器密码的机制。如果启用 Oracle 侦听器安全,侦听器故障监视器探测可能会返回 Oracle 错误 TNS-01169。因为侦听器能够做出响应,所以侦听器故障监视器会将此次探测视为成功。该操作不会导致侦听器故障始终无法检测。侦听器故障会返回不同的错误,或者导致探测超时。
侦听器探测通过 pmfadm 启动,从而使探测具有高可用性。如果探测进程被终止,PMF 会自动重新启动探测。
如果探测过程中侦听器出现问题,探测进程将尝试重新启动侦听器。为资源属性 retry_count 设置的值将确定探测进程尝试重新启动的最大次数。如果尝试过最大次数后,探测进程仍不成功,则探测进程将停止故障监视器。
为方便故障排除未说明的 DBMS 超时,可以在探测超时期间启用故障监视器创建一个核心文件。核心文件的内容与故障监视器进程相关。故障监视器在 / 目录中创建核心文件。要启用故障监视器创建核心文件,可以使用 coreadm 命令启用 set-id 核心转储。有关更多信息,请参见 coreadm(1M) 手册页。