第2章 独孤九剑之宕库问题汇总-2.2 Oracle RAC参数不一致导致数据库无法启动

在这里插入图片描述

环境说明:

DB:Oracle 11.2.0.4.0 RAC
OS:AIX 7.1

背景说明:

在一次Oracle数据库迁移的项目中,由于数据量较大(3T),停机窗口又非常短(不超过20分钟),计划采用ADG方式进行数据库迁移。
在做迁移准备工作时,需要先搭建DG备库,配置DG同步关系。
由于在正式迁移当天,需要进行主备库角色切换,这需要提前在主、备上库分别配置DG主库和备库相关的参数。
然而,DG参数中有几个是静态参数,只有重启实例才能生效,例如db_file_name_convert。

故障起因:

在DG迁移前,担心在迁移当天漏掉DG相关参数,导致DG异常,于是在主库提前配置了DG相关参数,其中静态参数需要在后期重启实例才能生效,当前不生效。

SQL> alter system set db_file_name_convert='chen','cjc' scope=spfile sid='*';

然而在主库配置db_file_name_convert参数不久,主库RAC其中一个节点主机,由于AIX一个模块故障,发生了主机重启,在主机启动后,实例确没有自动拉起来。

问题现象:

尝试手动启动节点1实例,报错ORA-01677

SQL> startup
ORACLE instance started.

Total System Global Area 3724607488 bytes
Fixed Size		    2258760 bytes
Variable Size		 1191184568 bytes
Database Buffers	 2516582400 bytes
Redo Buffers		   14581760 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-01677: standby file name convert parameters differ from other instance

问题原因:

显然是因为RAC两个节点的db_file_name_convert参数不一致导致节点1实例无法启动。
该参数在RAC节点1上已经生效,节点2因为没有重启实例,所以没有生效,导致参数在两个节点不一致。

问题影响:

由于数据库参数不一致,导致数据库恢复时间延长了,有时候这对于核心数据库来讲是致命的,好在本次案例处理非常及时,没有造成额外的影响。

解决方案:

由于节点2的db_file_name_convert参数还没有生效,直接去掉这个参数即可,在节点1或节点2执行如下语句:

SQL> alter system reset db_file_name_convert scope=spfile;

重启节点1数据库实例。

SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.

SQL> startup
ORACLE instance started.

Total System Global Area 3724607488 bytes
Fixed Size		    2258760 bytes
Variable Size		 1191184568 bytes
Database Buffers	 2516582400 bytes
Redo Buffers		   14581760 bytes
Database mounted.
Database opened.

此时节点1实例已经恢复。
查看节点1,2当前实例db_file_name_convert参数值。

SQL> show parameter db_file_name_convert

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert		     string

查看节点1,2当前实例在spfile中记录的db_file_name_convert参数值。

SQL> show spparameter db_file_name_convert

SID	 NAME			       TYPE	   VALUE
-------- ----------------------------- ----------- ----------------------------
*	 db_file_name_convert	       string	   chen
*	 db_file_name_convert	       string	   cjc

故障思考:

(1)有很多在单实例运维时的常规操作,在RAC运维时需要格外注意,比如本次案例所讲的参数不一致的问题。

又比如在简单不过的表空间扩容操作,在单实例下几乎不会出现问题,在RAC和RAC+DG环境下需要考虑更多的因素,稍有不注意可能会付出惨痛的代价。

(2)很多重要数据库的变更操作,最好先在测试环境进行充分测试,例如在修改参数时,需要确定该参数是否可以单节点生效,还是必须所有节点同时生效。

除了db_file_name_convert参数以外,还有很多参数需要两个节点完全一致,部分参数如下:

Initialization Parameter Use in Oracle RAC.
Parameters That Must Have Identical Settings on All Instances
COMPATIBLE
CLUSTER_DATABASE
CLUSTER_DATABASE_INSTANCES
CONTROL_FILES
DB_BLOCK_SIZE
DB_DOMAIN
DB_FILES
DB_NAME
DB_RECOVERY_FILE_DEST
DB_RECOVERY_FILE_DEST_SIZE
DB_UNIQUE_NAME
INSTANCE_TYPE (RDBMS or ASM)
PARALLEL_EXECUTION_MESSAGE_SIZE
REMOTE_LOGIN_PASSWORDFILE
UNDO_MANAGEMENT

故障模拟重现过程:

感兴趣的朋友可以在RAC环境下做实验,过程非常好模拟,只需要配置一个db_file_name_convert参数,并只重启其中一个实例,就可以问题重现。

节点1

SQL> show parameter db_file_name_convert
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert		     string

SQL> alter system set db_file_name_convert='chen','cjc' scope=spfile;
System altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup
ORACLE instance started.

Total System Global Area 3724607488 bytes
Fixed Size		    2258760 bytes
Variable Size		 1191184568 bytes
Database Buffers	 2516582400 bytes
Redo Buffers		   14581760 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-01677: standby file name convert parameters differ from other instance

节点1,2

SQL> show parameter db_file_name_convert
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert		     string	 chen, cjc

SQL> show spparameter db_file_name_convert
SID	 NAME			       TYPE	   VALUE
-------- ----------------------------- ----------- ----------------------------
*	 db_file_name_convert	       string	   chen
*	 db_file_name_convert	       string	   cjc

重置

SQL> alter system reset db_file_name_convert scope=spfile;
System altered.

SQL> show parameter db_file_name_convert
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert		     string	 chen, cjc

SQL> show spparameter db_file_name_convert

SID	 NAME			       TYPE	   VALUE
-------- ----------------------------- ----------- ----------------------------
*	 db_file_name_convert	       string

再次重启即可

SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.

SQL> startup
ORACLE instance started.

Total System Global Area 3724607488 bytes
Fixed Size		    2258760 bytes
Variable Size		 1191184568 bytes
Database Buffers	 2516582400 bytes
Redo Buffers		   14581760 bytes
Database mounted.
Database opened.

SQL> show parameter db_file_name_convert
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert		     string

SQL> show spparameter db_file_name_convert
SID	 NAME			       TYPE	   VALUE
-------- ----------------------------- ----------- ----------------------------
*	 db_file_name_convert	       string

欢迎关注我的公众号《IT小Chen

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值