客户数据库在将STANDBY数据库启用为主库时出现了这个错误。
错误信息为:
Thu Jan 12 08:57:50 2012 Errors IN file /oracle/admin/qtsys/udump/qtsys2_ora_21561380.trc: ORA-00600: internal error code, arguments: [2141], [3099815372], [0], [], [], [], [], [] Thu Jan 12 08:57:50 2012 Errors IN file /oracle/admin/qtsys/udump/qtsys2_ora_21561380.trc: ORA-00600: internal error code, arguments: [2141], [3099815372], [0], [], [], [], [], [] Thu Jan 12 08:57:50 2012 Error: Controlfile was changed externally while mounted Please CHECK IF another Oracle DATABASE IS running AND accessing the same controlfile |
其实从随后的控制文件错误信息也可以基本推断出错误的原因。当前应该还存在另一个实例也在读取相同的控制文件,导致这个问题的原因很可能是之前打开的一个数据库还没有完全关闭导致的。
为了验证这个问题查询了MOS,果然发现了类似的情况:Bug 6908933: ORA-600 [KCBZ_CHECK_OBJD_TYP_3] AND DB CRASH,虽然当前并没有出现ORA-600 [KCBZ_CHECK_OBJD_TYP_3]的错误信息,但是在这篇文章介绍的案例中确实出现ORA-600 [2141]的错误,而且同样的Error: Controlfile was changed externally while mounted信息。
这个bug最终被关闭,由于当前的数据库被两个实例同时打开。由于客户经常需要通过备份建立STANDBY环境并打开,因此出现这个问题也不足为奇。