如何解决:SQL 错误:ORA-00604:递归 SQL 级别 1 发生错误

Posted

技术标签:

【中文标题】如何解决:SQL 错误:ORA-00604:递归 SQL 级别 1 发生错误【英文标题】:How to solve : SQL Error: ORA-00604: error occurred at recursive SQL level 1 【发布时间】:2015-05-27 09:15:18 【问题描述】:

当我尝试删除表时,我收到了错误

SQL Error: ORA-00604: error occurred at recursive SQL level 2
ORA-01422: exact fetch returns more than requested number of rows
00604. 00000 -  "error occurred at recursive SQL level %s"
*Cause:    An error occurred while processing a recursive SQL statement
           (a statement applying to internal dictionary tables).
*Action:   If the situation described in the next error on the stack
           can be corrected, do so; otherwise contact Oracle Support.

【问题讨论】:

你试过purge dba_recyclebin吗?看起来您遇到了一些 Oracle 错误。 我好像无法运行purge dba_recyclebin 如果您没有 DBA 角色,请清除回收站 这就是我尝试过的,我在帖子中提到过 但如果 drop 错误仅在清除错误之后才开始,则它们可能是相关的。 您是否尝试在问题开始之前重新删除 BIN$ 表?我认为无论如何您都需要联系 Oracle 支持,或者至少您的 DBA 可能能够修复它,或者可能必须联系支持。 【参考方案1】:

一种可能的解释是每个DROP TABLE 语句都会触发一个数据库触发器。要查找触发器,请查询 _TRIGGERS 字典视图:

select * from all_triggers
where trigger_type in ('AFTER EVENT', 'BEFORE EVENT')

使用

禁用任何可疑的触发器
   alter trigger <trigger_name> disable;

并尝试重新运行您的 DROP TABLE 语句

【讨论】:

完全是新用户。我刚刚创建了第一个对象并试图删除它。 如果它是一个触发器,它可能是在另一个模式中创建的。但我同意其他 cmets - 您绝对应该联系您的 DBA 和 - 如果需要 - Oracle 支持。【参考方案2】:

我注意到以下错误。

exact fetch returns more than requested number of rows

这意味着 Oracle 期望有一行,但它得到了多行。而且,只有对偶表才有这个特性,只返回一行。

后来我记得,我在双表和执行双表时做了一些更改。然后找到了多行。

所以,我截断了 dual 表并只插入了 X 值的行。而且,一切正常。

【讨论】:

你必须是 SYS 才能修改 dual,这是一个非常糟糕的主意 (weird things can and will happen),很奇怪你看不到 DBA 回收站。直接在任何内置架构中修改任何内容都是危险的。 正确。如果我们玩dual 表可能会很危险。但是,现在,我别无选择【参考方案3】:

我能够通过 Droping with purge 解决“ORA-00604:错误”。

DROP TABLE tablename PURGE

【讨论】:

以上是关于如何解决:SQL 错误:ORA-00604:递归 SQL 级别 1 发生错误的主要内容,如果未能解决你的问题,请参考以下文章

orcl表空间创建失败ORA-00604:递归SQL级别1出现错误ORA-01013这是哪的问题

oracle 表删除出错 ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01426: 数字溢出

ORA-00604: 递归 SQL 级别 1 发生错误

java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 发生错误

drop user sxoa cascade ORA-00604: 递归 SQL 级别 1 出现错误 ORA-00942: 表或视图不存在

java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01003: 语句未进行语法分析