经常可以碰到oracle的内部错误ORA-600和ORA-7445,这个PL/SQL的内部错误还是第一次碰到。
在11g中建立10.1或10.2基表的物化视图,就会引发这个错误:
SQL> CONN YANGTK/YANGTK@192.25.1.101/TEST101已连接。
SQL> CREATE TABLE T (ID NUMBER);
表已创建。
SQL> CREATE MATERIALIZED VIEW LOG ON T WITH ROWID;
实体化视图日志已创建。
SQL> CONN YANGTK/yangtk@192.25.1.103/ORA11G_P.YTK_THINKPAD已连接。
SQL> CREATE MATERIALIZED VIEW MV
2 REFRESH FAST
3 WITH ROWID
4 AS SELECT * FROM T@TEST101.YTK;
CREATE MATERIALIZED VIEW MV
*第 1 行出现错误:
ORA-04052: 在查找远程对象 SYS.DBMS_SNAPSHOT@TEST101.YTK 时出错
ORA-00604: 递归 SQL 级别 2 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [55916], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [55916]
ORA-02063: 紧接着 2 lines (起自 TEST101.YTK)
和其他内部错误有所区别的是,这个错误不会出现在后台告警日志中。
当前的数据库版本为11.1.0.6,而物化视图基表数据库的版本为10.1.0.2:
SQL> SELECT * FROM V$VERSION;
BANNER
-----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
SQL> CONN YANGTK/YANGTK@192.25.1.101/TEST101已连接。
SQL> SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Prod
PL/SQL Release 10.1.0.2.0 - Production
CORE 10.1.0.2.0 Production
TNS for 32-bit Windows: Version 10.1.0.2.0 - Production
NLSRTL Version 10.1.0.2.0 - Production
通过检查metalink,在文档Doc ID: Note:4511371.8中详细描述了这个bug,只要在11g中调用10.1版本(补丁小于10.1.0.5)或10.2版本(补丁小于10.2.0.2)数据库中的过程,就会引发这个错误。
除了打补丁升级之外,没有什么好的临时解决方法。将10g的数据库升级到10.1.0.5或10.2.0.2版本以上,可以避免问题的产生。