JavaScript is required to for searching.
跳过导航链接
退出打印视图
适用于 Oracle 的 Oracle Solaris Cluster 数据服务指南     Oracle Solaris Cluster 3.3 3/13 (简体中文)
search filter icon
search icon

文档信息

前言

1.  安装和配置 HA for Oracle

HA for Oracle 的安装和配置过程概述

规划 HA for Oracle 的安装和配置

配置要求

配置规划问题

准备节点和磁盘

如何准备节点

如何使用 Solaris Volume Manager 配置 Oracle 数据库访问

如何使用 Veritas Volume Manager 配置 Oracle 数据库访问

如何使用 Oracle ASM 配置 Oracle 数据库访问

如何配置 Oracle Grid Infrastructure for Clusters SCAN 侦听器

安装 Oracle ASM 软件

检验 Oracle ASM 软件安装

安装 Oracle 数据库软件

如何安装 Oracle 数据库软件

如何设置 Oracle 数据库内核参数

验证 Oracle 数据库安装和配置

如何验证 Oracle 数据库安装

创建 Oracle 数据库

如何创建 Oracle 主数据库

设置 Oracle 数据库权限

如何设置 Oracle 数据库权限

安装 HA for Oracle 软件包

如何安装 HA for Oracle 软件包

注册和配置 HA for Oracle

用于注册和配置 HA for Oracle 的工具

设置 HA for Oracle 扩展属性

如何注册和配置 HA for Oracle (clsetup)

如何注册和配置不带有 Oracle Grid Infrastructure 的 HA for Oracle (CLI)

如何为独立服务器注册和配置带有 Oracle Grid Infrastructure 的 HA for Oracle (CLI)

如何为群集注册和配置带有 Oracle Grid Infrastructure 的 HA for Oracle (CLI)

检验 HA for Oracle 安装

如何检验 HA for Oracle 安装

Oracle 客户机

HA for Oracle 日志文件的位置

调优 HA for Oracle 故障监视器

Oracle 服务器故障监视器操作

主故障监视器操作

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

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

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

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

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

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

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

定制 HA for Oracle 服务器 故障监视器

为错误定义定制行为

定制操作文件格式

更改对 DBMS 错误的响应

响应影响严重的错误

忽略影响轻微的错误

更改对记录的警报的响应

更改连续超时探测的最大次数

将定制操作文件传播到群集中的所有节点

指定服务器故障监视器应使用的定制操作文件

如何指定服务器故障监视器应使用的定制操作文件

升级 HA for Oracle 资源类型

升级 SUNW.oracle_listener 资源类型

有关注册新资源类型版本的信息

有关迁移资源类型的现有实例的信息

升级 SUNW.oracle_server 资源类型

有关注册新资源类型版本的信息

有关迁移资源类型的现有实例的信息

更改 Oracle Data Guard 实例的角色

如何更改 Oracle Data Guard 实例的角色

A.  HA for Oracle 扩展属性

B.  DBMS 错误和记录的警报的预设操作

C.  Oracle ASM 和 HA for Oracle 的样例配置

索引

定制 HA for Oracle 服务器 故障监视器

通过定制 HA for Oracle 服务器 故障监视器,可以按如下方式修改服务器故障监视器的行为:


注意

注意 - 定制 HA for Oracle 服务器 故障监视器之前,需要考虑定制的效果,尤其是将操作从重新启动或切换更改为忽略或停止监视的情况。如果错误长时间未得到纠正,则可能会导致数据库问题。如果在定制了 HA for Oracle 服务器 故障监视器之后遇到数据库问题,请恢复使用预设操作。通过恢复预设操作,可以确定问题是否由定制导致。


以下各节介绍了定制 HA for Oracle 服务器故障监视器所需执行的活动:

为错误定义定制行为

HA for Oracle 服务器故障监视器可检测以下类型的错误:

要为这些类型的错误定义定制行为,可创建定制操作文件。本节包含有关定制操作文件的以下信息:

定制操作文件格式

定制操作文件是一种纯文本文件。该文件包含一个或多个条目,定义 HA for Oracle 服务器 故障监视器的定制行为。每个条目为单个 DBMS 错误、单个超时错误或多个记录的警报定义定制行为。一个定制操作文件中最多允许有 1024 个条目。


注 - 定制操作文件中的每个条目会覆盖错误的预设操作,或者为没有预设操作的错误指定操作。在定制操作文件中,请为那些要覆盖的预设操作或没有预设操作的错误创建条目。请不要为不需要更改的操作创建条目。


定制操作文件中的条目由一系列用分号分隔的关键字-值对组成。每个条目都括在括号中。

定制操作文件中的条目格式如下:

{
[ERROR_TYPE=DBMS_ERROR|SCAN_LOG|TIMEOUT_ERROR;]
ERROR=error-spec; 
[ACTION=SWITCH|RESTART|STOP|NONE;]
[CONNECTION_STATE=co|di|on|*;]
[NEW_STATE=co|di|on|*;]
[MESSAGE="message-string"]
}

分隔的关键字-值对之间以及条目之间可以使用空格来设置文件格式。

定制操作文件中关键字的含义和允许值如下:

ERROR_TYPE

表示服务器故障监视器检测到的错误类型。该关键字允许使用以下值:

DBMS_ERROR

指定该错误为 DBMS 错误。

SCAN_LOG

指定该错误为警报日志文件中记录的警报。

TIMEOUT_ERROR

指定该错误为超时。

ERROR_TYPE 关键字是可选的。如果忽略该关键字,则假定错误为 DBMS 错误。

ERROR

用于标识错误。error-spec 的数据类型和含义取决于 ERROR_TYPE 关键字的值,如下表所示。

ERROR_TYPE
数据类型
含义
DBMS_ERROR
整数
由 Oracle 生成的 DBMS 错误的错误编号
SCAN_LOG
引用的正则表达式
Oracle 已记录到 Oracle 警报日志文件的错误消息中的字符串
TIMEOUT_ERROR
整数
自服务器故障监视器上次启动或重新启动以后,连续超时探测的次数

必须指定 ERROR 关键字。如果忽略该关键字,将忽略定制操作文件中的对应条目。

ACTION

指定服务器故障监视器在响应错误时要执行的操作。该关键字允许使用以下值:

NONE

指定服务器故障监视器忽略该错误。

STOP

指定停止服务器故障监视器。

RESTART

指定服务器故障监视器停止和重新启动由 SUNW.oracle_server 资源的 Restart_type 扩展属性值指定的实体。

SWITCH

指定服务器故障监视器将数据库服务器资源组切换到其他节点或区域。

ACTION 关键字是可选的。如果忽略该关键字,服务器故障监视器将忽略该错误。

CONNECTION_STATE

指定检测到错误时数据库与服务器故障监视器之间所需的连接状态。该条目仅适用于检测到错误后连接处于所需状态的情况。该关键字允许使用以下值:

*

指定该条目始终适用,不考虑连接状态。

co

指定该条目仅适用于服务器故障监视器正尝试连接到数据库的情况。

on

指定该条目仅适用于服务器故障监视器联机的情况。如果服务器故障监视器连接到数据库,则为联机。

di

指定仅当服务器故障监视器与数据库断开连接时才应用该条目。

CONNECTION_STATE 关键字是可选的。如果忽略该关键字,则该条目始终适用,不考虑连接状态。

NEW_STATE

指定服务器故障监视器检测到错误后,数据库与服务器故障监视器之间必须实现的连接状态。该关键字允许使用以下值:

*

指定连接状态必须保持不变。

co

指定服务器故障监视器必须与数据库断开连接,并立即重新连接到数据库。

di

指定服务器故障监视器必须与数据库断开连接。服务器故障监视器下次探测数据库时会重新连接。

NEW_STATE 关键字是可选的。如果忽略该关键字,则检测到错误后数据库连接状态保持不变。

MESSAGE

指定检测到错误时需输出到资源日志文件的附加消息。该消息必须括在双引号中。该消息是为错误定义的标准消息的附加消息。

MESSAGE 关键字是可选的。如果忽略该关键字,则在检测到该错误后,不会将任何附加消息输出到资源的日志文件。

更改对 DBMS 错误的响应

表 B-1 中列出了服务器故障监视器为响应每个 DBMS 错误而预设的操作。要确定是否需要更改对 DBMS 错误的响应,需要考虑 DBMS 错误对数据库的影响,以便确定预设操作是否合适。有关示例,请参见以下各小节:

要更改对 DBMS 错误的响应,可在定制操作文件中创建一个条目,并在该条目中按如下方式设置关键字:

响应影响严重的错误

如果服务器故障监视器忽略的错误会影响多个会话,则可能需要服务器故障监视器执行操作以防止服务丢失。

例如,没有为 Oracle 错误 4031: unable to allocate num-bytes bytes of shared memory 预设任何操作。但是,该 Oracle 错误表示共享全局区域 (Shared Global Area, SGA) 内存不足、碎片太多或者同时存在这两种状态。如果该错误仅影响一个会话,则忽略该错误可能是恰当的。但是,如果该错误影响多个会话,则需考虑指定服务器故障监视器重新启动数据库。

以下示例展示了定制操作文件中的一个条目,用于将对 DBMS 错误的响应更改为重新启动。

示例 1-4 更改对 DBMS 错误的响应以重新启动

{
ERROR_TYPE=DBMS_ERROR;
ERROR=4031; 
ACTION=restart;
CONNECTION_STATE=*; 
NEW_STATE=*;
MESSAGE="Insufficient memory in shared pool.";
}

此示例展示了定制操作文件中的一个条目,用于覆盖 DBMS 错误 4031 预设操作。该条目指定以下行为:

忽略影响轻微的错误

如果服务器故障监视器响应的错误影响轻微,则忽略错误可能比响应错误造成的干扰更少。

例如,Oracle 错误 4030: out of process memory when trying to allocate num-bytes bytes 的预设操作为重新启动。该 Oracle 错误表示服务器故障监视器无法分配专用堆内存。该错误的一个可能原因是操作系统可用内存不足。如果该错误影响多个会话,则重新启动数据库可能是恰当的。但是,该错误可能不会影响其他会话,因为这些会话不需要额外的专用内存。在这种情况下,可以考虑指定服务器故障监视器忽略该错误。

以下示例展示了定制操作文件中的一个条目,用于忽略 DBMS 错误。

示例 1-5 忽略 DBMS 错误

{
ERROR_TYPE=DBMS_ERROR;
ERROR=4030;
ACTION=none;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="";
}

此示例展示了定制操作文件中的一个条目,用于覆盖 DBMS 错误 4030 预设操作。该条目指定以下行为:

更改对记录的警报的响应

Oracle 软件将警报记录在 alert_log_file 扩展属性标识的文件中。服务器故障监视器会扫描该文件,并执行操作以响应为其定义了操作的警报。

表 B-2 列出为其预设了操作的记录的警报。更改对记录的警报的响应以更改预设操作,或定义服务器故障监视器要响应的新警报。

要更改对已记录警报的响应,请在定制操作文件中创建一个条目,并在其中按如下所述设置关键字:

服务器故障监视器按照条目在定制操作文件中出现的顺序处理条目。仅处理第一个与记录的警报匹配的条目。后面的匹配条目将被忽略。如果使用正则表达式为多个记录的警报指定操作,请确保较具体的条目出现在一般条目之前。在一般条目之后出现的具体条目可能会被忽略。

例如,定制操作文件可能会为正则表达式 ORA-65ORA-6 标识的错误定义不同的操作。为确保不忽略包含正则表达式 ORA-65 的条目,请确保该条目出现在包含正则表达式 ORA-6 的条目之前。

以下示例展示了定制操作文件中的一个条目,用于更改对记录的警报的响应。

示例 1-6 更改对已记录警报的响应

{
ERROR_TYPE=SCAN_LOG;
ERROR="ORA-00600: internal error";
ACTION=RESTART;
}

此示例展示了定制操作文件中的一个条目,用于覆盖有关内部错误的记录的警报的预设操作。该条目指定以下行为:

更改连续超时探测的最大次数

默认情况下,服务器故障监视器会在第二次连续超时探测后重新启动数据库。如果数据库负载很轻,两次连续超时探测应足以表明该数据库已挂起。但是,在负载很重时,即使数据库正常工作,服务器故障监视器探测也可能会超时。为防止服务器故障监视器不必要地重新启动数据库,可以增加连续超时探测最大次数。


注意

注意 - 增加连续超时探测最大次数会延长检测数据库挂起所需的时间。


要更改允许的连续超时探测最大次数,可以在定制操作文件中为第一次超时探测以外的每个允许的连续超时探测创建一个条目。


注 - 无需为第一次超时探测创建条目。服务器故障监视器响应第一次超时探测时执行的操作已经预设。


对于最后一次允许的超时探测,可以创建一个条目,其中的关键字设置如下:

对于除第一次超时探测以外的其余每次连续超时探测,可以创建一个条目,其中的关键字设置如下:


提示 - 为方便调试,可以指定指示超时探测序号的消息。


以下示例展示了定制操作文件中的一些条目,用于将连续超时探测的最大次数增加到五次。

示例 1-7 更改连续超时探测的最大次数

{
ERROR_TYPE=TIMEOUT;
ERROR=2;
ACTION=NONE;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="Timeout #2 has occurred.";
}

{
ERROR_TYPE=TIMEOUT;
ERROR=3;
ACTION=NONE;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="Timeout #3 has occurred.";
}

{
ERROR_TYPE=TIMEOUT;
ERROR=4;
ACTION=NONE;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="Timeout #4 has occurred.";
}

{
ERROR_TYPE=TIMEOUT;
ERROR=5;
ACTION=RESTART;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="Timeout #5 has occurred. Restarting.";
}

本示例说明了定制操作文件中用于将连续超时探测的最大次数增加到五的条目。这些条目指定以下行为:

将定制操作文件传播到群集中的所有节点

服务器故障监视器在所有群集节点或区域上的行为必须一致。因此,服务器故障监视器使用的定制操作文件必须在所有群集节点或区域上相同。创建或修改定制操作文件后,可以通过将该文件传播到所有群集节点或区域来确保该文件在所有群集节点或区域上相同。要将该文件传播到所有群集节点或区域,可以使用最适合群集配置的方法:

指定服务器故障监视器应使用的定制操作文件

要将定制操作应用到服务器故障监视器,必须指定故障监视器应使用的定制操作文件。服务器故障监视器读取定制操作文件时,定制操作会应用到该服务器故障监视器。服务器故障监视器会在指定定制操作文件时读取该文件。

指定定制操作文件时还会验证该文件。如果该文件中包含语法错误,则将显示错误消息。因此,修改了定制操作文件后,请重新指定该文件以便对其进行验证。


注意

注意 - 如果在修改后的定制操作文件中检测到语法错误,请更正错误后再重新启动故障监视器。如果在重新启动故障监视器时语法错误仍未得到纠正,则故障监视器会读取有错误的文件,并忽略第一个语法错误之后出现的条目。


如何指定服务器故障监视器应使用的定制操作文件

  1. 在群集节点上,成为超级用户或承担可提供 solaris.cluster.modify RBAC 授权的角色。
  2. 设置 SUNW.oracle_server 资源的 Custom_action_file 扩展属性。

    将此属性设置为定制操作文件的绝对路径。

    # clresource set -p custom_action_file=filepath server-resource
    -p custom_action_file= filepath

    指定定制操作文件的绝对路径。

    server-resource

    指定 SUNW.oracle_server 资源。