Oracle 10g开归档碰到ORA-00600错误,惊,险
有一个测试环境的Oracle数据库,原来工作在归档模式的,现在觉得在上面测试的应用有好几个了,也不能轻意挂掉,就打算不定期的进行RMAN备份。在线RMAN备份需要工作在归档模式下,于是早上趁大家还没开始工作时,把数据库切换到归档模式下。可在关闭Oracle数据库时,异常发生了。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORA-00600: internal error code, arguments: [LibraryCacheNotEmptyOnClose], [], [], [], [], [], [], []
看到是LibraryCacheNotEmptyOnClose错误,感觉问题好像不是很严重,就先把归档打开,把数据库启动好再说。幸运的时,在重启到Mount,打开归档,打开数据库这个过程都没有报错。
事后,用Google搜索了一下ora-00600 librarycachenotemptyonclose,发现是一个bug [Bug 4483084 OERI[LibraryCacheNotEmptyOnClose],Metalink账号过期了,也没办法下载了,测试环境也不打算打补丁。
看了网上一个博客,说建个触发器,在关闭系统时执行“ALTER SYSTEM FLUSH SHARED_POOL”就可以了。没有亲测,再说也是不定期发生。
附触发器脚本
CREATE or replace TRIGGER flush_shared_pool
BEFORE SHUTDOWN ON DATABASE
BEGIN
execute immediate ‘ALTER SYSTEM FLUSH SHARED_POOL’;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (num => -20000, msg => ‘Error flushing pool’);
END;
–The End–
