操作系统:HP UNIX 11.31
数据库:oracle 11.2 rac
今天对一套ORACLE 11.2 RAC数据库进行参数调整,修改db_files为3000,系统默认为200。顺便修改了操作系统的内核参数:fs_async,服务器也需要重启。
操作计划:
1、参数在两个节点都修改完毕,不重启机器和数据。
2、先重启节点1,节点2先不动,等节点1起来之后,再重启节点2.
故障:
可是在节点1启动之后,实例怎么都起不来,然后手工用srvctl启动实例报错:
racdb1:/home/grid> srvctl start instance -d racdb -n racdb1
PRCR-1013 : Failed to start resource ora.racdb.db
PRCR-1064 : Failed to start resource ora.racdb.db on node racdb1
CRS-5017: The resource action "ora.racdb.db start" encountered the following error:
ORA-01105: mount is incompatible with mounts by other instances
ORA-01174: DB_FILES is 3000 buts needs to be 200 to be compatible
. For details refer to "(:CLSN00107:)" in "/oracle/app/grid11.2.0/log/racdb1/agent/crsd/oraagent_oracle/oraagent_oracle.log".
CRS-2674: Start of 'ora.nims.db' on 'racdb1' failed
查看alert日志,发现:
ORA-1105 signalled during: ALTER DATABASE MOUNT /* db agent *//* {1:56904:2} */...
问题解决:
原来修改完db_files参数后,数据库都没有重启,节点2上db_files的参数为:200,而节点1重启后新参数为:3000。所以两个节点参数才会不兼容。
找到了原因,赶紧想办法解决。
在节点2进入sqlplus里,直接把数据库shutdown后,然后重新启动。因为这个时候实例1还没起来,而且参数为新参数,实例2重启后也是新参数3000,这样两边就一直了。
节点2上重启实例:
racdbC2:/home/oracle> sqlplus /nolog
SQL*Plus: Release 11.2.0.3.0 Production on Fri Sep 27 15:18:10 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 5.4784E+10 bytes
Fixed Size 2195616 bytes
Variable Size 2.6172E+10 bytes
Database Buffers 2.8588E+10 bytes
Redo Buffers 20557824 bytes
Database mounted.
Database opened.
SQL> exit
节点1上:
racdb1:/home/grid> srvctl start instance -d racdb -n racdb1
检查服务,实例1成功启动。
总结:
ORACLE RAC数据库修改静态参数,不能使用轮流启动的方式,必须把两个节点的实例全部停掉,然后再启动实例。否则会提示数据库参数不兼容,实例将无法启动。