JavaScript is required to for searching.
跳过导航链接
退出打印视图
适用于 Oracle 的 Oracle Solaris Cluster 数据服务指南
search filter icon
search icon

文档信息

前言

安装和配置 HA for Oracle

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

规划 HA for Oracle 安装和配置

配置要求

配置规划问题

准备节点和磁盘

如何准备节点

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

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

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

如何安装 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 扩展属性

如何通过使用 clsetup 实用程序注册和配置 HA for Oracle

如何使用 Oracle Solaris Cluster 维护命令注册和配置不使用 Oracle ASM 的 HA for Oracle

如何使用 Oracle Solaris Cluster 维护命令注册和配置使用单一实例 Oracle ASM 的 HA for Oracle

如何使用 Oracle Solaris Cluster 维护命令注册和配置使用群集 Oracle ASM 实例的 HA for Oracle

从此处可转至何处

检验 HA for Oracle 安装

如何检验 HA for Oracle 安装

Oracle 客户端

HA for Oracle 日志文件的位置

调整 HA for Oracle 故障监视器

Oracle 服务器故障监视器操作

主要故障监视器操作

数据库客户端故障探测操作

已归档 Redo 日志分区监视器操作

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

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

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

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.  用于 HA for Oracle 的 Oracle ASM 配置样例

索引

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

定制 HA for Oracle 服务器 故障监视器使您能够修改服务器故障监视器的以下行为:


注意

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


定制 HA for Oracle 服务器 故障监视器包括以下步骤:

  1. 为错误定义定制行为

  2. 将定制操作文件传播到群集中的所有节点或区域

  3. 指定服务器故障监视器所要使用的定制操作文件

为错误定义定制行为

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 错误的响应

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

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

响应影响严重的错误

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

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

下面的示例显示定制操作文件中将 DBMS 错误响应更改为重新启动的条目。

示例 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 错误的条目。

示例 5 忽略 DBMS 错误

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

本示例显示定制操作文件中覆盖 DBMS 错误 4030 预设操作的条目。该条目指定以下行为:

将响应更改为已记录的警报

alert_log_file 扩展属性所标识的文件中的 Oracle 软件日志警报。服务器故障监视器扫描该文件并执行操作以响应已定义操作的警报。

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

要更改对已记录警报的响应,可以在定制操作文件中创建条目并按如下格式设置关键字:

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

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

下面的示例显示定制操作文件中更改对已记录警报的响应的条目。

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

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

本示例显示定制操作文件中覆盖内部错误已记录警报预设操作的条目。该条目指定以下行为:

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

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


注意

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


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


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


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

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


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


下面的示例显示定制操作文件中将连续超时探测最大次数增加到 5 的条目。

示例 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.";
}

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

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

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

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

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

指定定制操作文件还将验证该文件。如果该文件中包含语法错误,则会显示错误消息。因此,更改定制操作文件后,请再次指定该文件以便验证该文件。


注意

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


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

  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 资源。