ORA-00604: error occurred at recursive SQL level 1
ORA-01422: exact fetch returns more than requested number of rows
删除一个用户下的表,出现如上错误(oracle10.2.0.4)
SQL> drop table aidm_etl_id;
drop table aidm_etl_id
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-01422: exact fetch returns more than requested number of rows
尝试方法一:通过SQL_TRACE进行直接跟踪和利用10046 events跟踪,结果 .trc 文件中并没有错误信息。
方法二:找metalink ,发现这是个bug,bugID为6333310 ,在oracle11g中提供了解决方法。引起这个问题的原因是表 sys.dual 中有多行数据。本来张表中只有个“X”的值,上次我为了试一下 select count(*) from dual 和select * from dual对比,插入了几条记录,忘了删了。导致删除另一个schema下的表报错。
解决方法:将sys.dual表中非 “X”的值的记录全部删掉(随便保留一个值可不可以没试过)。
另外:执行如下操作后
SQL> insert into dual values('A'); COMMIT;
在linux后台登录sqlplus 查询的结果与 用 PL/SQL DEVELOPER查询的结果不同。
PL/SQL DEVELOPER 中执行 select * from dual; 总是能得到2条记录,而在后台也不一定,至于select count(*) from dual 在PL/SQL DEVELOPER 中则有时候能返回2,有时候能返回1。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/297293/viewspace-567091/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/297293/viewspace-567091/