一:版本信息
操作系统版本:AIX 61009
数据库版本:11.2.0.3.11(RAC)
二:错误描述
今天在启动一套RAC数据库的第二个节点的时候报了如下错误:
sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Wed Apr 22 15:09:25 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 3.2068E+10 bytes
Fixed Size 2237328 bytes
Variable Size 5167385712 bytes
Database Buffers 2.6844E+10 bytes
Redo Buffers 55271424 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-19808: recovery destination parameter mismatch
三:错误原因及解决方案
1.错误原因:
我们来查看一下ORA-19808错误的信息
oerr ora 19808
19808, 00000, "recovery destination parameter mismatch"
// *Cause: The value of parameters DB_RECOVERY_FILE_DEST and
// DB_RECOVERY_FILE_DEST_SIZE must be same in all instances.
// instance. All databases must have same recovery destination
// parameters.
// *Action: Check DB_RECOVERY_FILE_DEST and DB_RECOVERY_FILE_DEST_SIZE
// values in all instances.
由上面的解释我们可以知道,该错误是由于RAC的两个实例使用的参数文件中db_recovery_file_dest或者db_recovery_file_dest_size的值不一致造成的。(RAC所有节点使用同一个spfile可以避免该问题的发生)
下面检查我遇到的是不是这个问题:
1)检查第一个实例使用的参数文件
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /apps/oracle/product/11.2.0.3/
db_1/dbs/spfile****db1.ora
2)检查第二个实例使用的参数文件
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /apps/oracle/product/11.2.0.3/
db_1/dbs/spfile****db2.ora
##果然两个RAC的两个实例使用的是不同的spfile
3)检查两个实例的db_recovery_file_dest_size参数值
select name ,value,inst_id from gv$system_parameter where name='db_recovery_file_dest_size';
NAME VALUE INST_ID
------------------------------ -------------------- ----------
db_recovery_file_dest_size 10737418240 1
db_recovery_file_dest_size 0 2
##两个实例的db_recovery_file_dest_size不同
4)检查两个实例的db_recovery_file_dest参数值
select name ,value,inst_id from gv$system_parameter where name='db_recovery_file_dest';
NAME VALUE INST_ID
------------------------------ -------------------- ----------
db_recovery_file_dest 1
db_recovery_file_dest 2
##两个实例上都没有设置
db_recovery_file_dest值,由上面的分析可知两个实例使用的参数文件中db_recovery_file_dest_size值的不一致导致,第二个RAC第二个实例启动时报ORA-19808错误。
2.解决方案:
修改第二个实例上的db_recovery_file_dest_size值与第一个实例相同,再次启动实例成功。
alter system set db_recovery_file_dest_size=10g;