最近在测试RAC环境添加删除实例的操作,应该通过DBCA来添加或删除实例,今天在添加新实例的时候碰到了CRS-215错误。
CLUSTER_DATABASE_INSTANCES参数:http://yangtingkun.itpub.net/post/468/482960
改变RAC参数可能引发的参数不一致的问题:http://yangtingkun.itpub.net/post/468/483433
详细的错误信息为:
PRKP-1001:Error starting instance test2 on node ser2
CRS-0215:Could not start resource ‘ora.test.test2.inst’.
类似的添加节点操作执行了很多次了,因此不应该有什么问题。
这个错误属于异常错误,Oracle的文档给出的解决方法时检查对应的日志信息:
CRS-0215: Could not start resource '%s'.
Cause: There was an internal error while starting the resource.
Action: Check the CRS daemon log file.
而metalink中有专门介绍CRS-215错误的文章:Doc ID: 781632.1。
根据文档的描述,检查对应的日志,首先检查$ORA_CRS_HOME目录下的log/HOSTNAME/racg,检查vip和ons对应的日志。
当前这个问题显然和VIP以及ONS无关,因为类似的测试已经进行过很多次了。
检查ASM实例的日志,也没有发现问题。
最后检查ORACLE数据库的日志,位置在ORACLE_HOME目录下的log/HOSTNAME/racg,检查文件imontest.log发现下面的问题。
Oracle Database 11g RACG Release 11.1.0.6.0 Production Copyright 1996, 2006, Oracle. All rights reserved.
SQL*Plus: Release 11.1.0.6.0 - Production on Wed Apr 22 17:02:45 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Enter user-name: Connected to an idle instance.
SQL> ORA-29707: inconsistent value 1 for initialization parameter cluster_database_instances with other instances
SQL> Disconnected
SQL*Plus: Release 11.1.0.6.0 - Production on Wed Apr 22 17:02:51 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Enter user-name: Connected to an idle instance.
SQL> ORACLE instance shut down.
SQL> Disconnected
第一个操作应该是调用SVRCTL命令,启动数据库实例是的错误,而一个应该是出现错误后,DBCA通过SQLPLUS关闭出现错误的实例。
根据这个错误信息ORA-29707,错误已经很明显了,由于已经启动的实例中CLUSTER_DATABASE_INSTANCES参数的设置与SPFILE文件中的设置不同,从而导致新实例启动的时候,出现了ORA-29707的错误。
登陆启动的实例验证一下是否是这个问题:
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on 星期四 4月 23 16:21:39 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> set pages 100 lines 120
SQL> show parameter cluster_database
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cluster_database boolean TRUE
cluster_database_instances integer 2
SQL> col name format a30
SQL> col value format a30
SQL> select sid, name, value
2 from v$spparameter
3 where name = 'cluster_database_instances';
SID NAME VALUE
---------- ------------------------------ ------------------------------
* cluster_database_instances 1
无论是RAC环境实例设置不同的参数导致的错误,还是初始化CLUSTER_DATABASE_INSTANCES参数的设置,在文章开头的连接中都有详细的说明,这里就不重复了。
这篇文章的主要目的是介绍当一个RAC环境出现了CLUSTER相关的错误后,如何去检查问题。
回到DBCA运行的图形化界面,点击确定后,DBCA随后的执行没有任何的错误,剩下的操作居然顺利执行完了。
看来启动新实例应该是最后的步骤,这个步骤的失败对于添加实例的操作没有本质的影响。
SQL> alter system set cluster_database_instances = 2 scope = spfile;
系统已更改。
SQL> host
$ srvctl start inst -d test -i test2
$ exit
SQL> select name from v$database;
NAME
------------------------------
TEST
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
test1
SQL> select instance_name, status from gv$instance;
INSTANCE_NAME STATUS
---------------- ------------
test1 OPEN
test2 OPEN
改正错误后,发现不但实例添加没有问题,且SRVCTL命令中的配置也已经添加成功,这应该是为数不多的出现报错,还能顺利完成工作的情况之一。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-592311/ ,如需转载,请注明出处,否则将追究法律责任。