今天测试服务器删除存储过程的时候出现:ORA-00604,ORA-00942错误,如下:
-------------------------------------------------
SQL> drop procedure zgym.sp_test;
drop procedure zgym.sp_test
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level
ORA-00942: table or view does not exist
-------------------------------------------------
经过google这方面的问题很多,有的是删除表出现该错误,有的是删除用户出现该错误,我试着建立一个表,并插入数据,然后删除该表,删除成功。后来及进行跟踪
具体如下:
SQL> alter session set events '10046 trace name context forever,level 12'; Session altered SQL> drop procedure sp_test; drop procedure sp_test ORA-00604: error occurred at recursive SQL level 1 ORA-00942: table or view does not exist SQL> alter session set events '10046 trace name context off'; Session altered |
然后查看G:\oracle\product\10.1.0\admin\orcl\udump下的 orcl_ora_5608.trc文件,在cmd下用命令:tkprof orcl_ora_5608.trc 导出111.log文件,111.log文件如下:
... ... The following statement encountered a error during parse: delete from argument$ where obj#=: Error encountered: ORA-00942 |
经分析应该是sys下面的 argument$ 表不存在,
经查询sys该表确实不存在,然后用plsql导出其他数据库中的sys下argument$ 表,然后在问题数据库中创建或者导入,然后删除过程,过程删除成功!
总结:ora-00604错误需要经trace分析才能确定问题所在,然后解决。
附件:
------------------------------------------------ spool argument$.log prompt prompt Creating table ARGUMENT$ create table SYS.ARGUMENT$
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3090/viewspace-670782/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/3090/viewspace-670782/