Oracle 10g RAC环境数据库执行ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL DATABASE操作,
试图将当前的物理STANDBY数据库切换为PRIMARY数据库时,出现下面的错误:
已连接。
SWITCHOVER_STATUS
--------------------
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
*第 1行出现错误:
ORA-00600:内部错误代码,参数: [kcctrdf_2], [/export/home/oracle/oradata/testrac/group_1.259.6185911
[], [], []
105E36DF0 5741524E 494E4721 20434C45 4152494E [WARNING! CLEARIN]
105E36E00 47205245 444F204C 4F472057 48494348 [G REDO LOG WHICH]
105E36E10 20484153 204E4F54 20424545 4E204152 [ HAS NOT BEEN AR]
105E36E20 43484956 45442E20 4241434B 55505320 [CHIVED. BACKUPS ]
105E36E30 54414B45 4E0A2020 20204245 464F5245 [TAKEN. BEFORE]
105E36E40 20257320 28434841 4E474520 25732920 [ %s (CHANGE %s) ]
105E36E50 43414E4E 4F542042 45205553 45442046 [CANNOT BE USED F]
105E36E60 4F522052 45434F56 4552592E 0A000000 [OR RECOVERY.....]
105E36E70 5741524E 494E4721 20434C45 4152494E [WARNING! CLEARIN]
105E36E80 47205245 444F204C 4F47204E 45454445 [G REDO LOG NEEDE]
105E36E90 4420464F 52205245 434F5645 5259204F [D FOR RECOVERY O]
105E36EA0 46205448 45204F46 464C494E 45204441 [F THE OFFLINE DA]
结合在metalink上查询的信息,基本上可以断定问题是由于造成的。关于metalink上面的bug描述,可以参考Bug No. 2848315。
Metalink虽然指出了问题和RECOVERY AREA有关,但是并没有给出相应的解决方法,而且Oracle目前的版本还没有fixed这个bug,目前也没有任何补丁可以解决这个bug。
既然错误是由于引起的,那么尝试将其DISABLE。在此之前,需要将主库和从库的状态恢复:
已连接。
ORA-01507:未装载数据库
ORACLE例程已经关闭。
ORACLE例程已经启动。
Total System Global Area 2147483648 bytes
Fixed Size 2031480 bytes
Variable Size 520093832 bytes
Database Buffers 1610612736 bytes
Redo Buffers 14745600 bytes
数据库装载完毕。
数据库已更改。
数据库已更改。
DATABASE_ROLE
----------------
PRIMARY
已连接。
SWITCHOVER_STATUS
--------------------
RECOVERY NEEDED
ORA-01109:数据库未打开
已经卸载数据库。
ORACLE例程已经关闭。
ORACLE例程已经启动。
Total System Global Area 2147483648 bytes
Fixed Size 2031480 bytes
Variable Size 520093832 bytes
Database Buffers 1610612736 bytes
Redo Buffers 14745600 bytes
数据库装载完毕。
数据库已更改。
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY SESSIONS ACTIVE
至此DATA GUARD环境恢复。
系统已更改。
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 5G
再次尝试SWITCHOVER切换错误依旧。
仔细查看从库上的错误信息,ORA-600错误的第一个参数是一个日志文件名,而这个文件正是RECOVERY AREA的日志:
GROUP# TYPE IS_
---------- ------- ---
1 ONLINE YES