ORA-00604: error occurred at recursive SQL level(递归 SQL 级别出错)
Oracle含义
Oracle 在后台内部运行的递归 SQL 执行期间发生错误。这是一个包装(外层)错误,隐藏了实际错误;真正的原因在其正下方列出的第二个错误代码中。
原因
数据字典访问、DDL 触发器失败、SYSTEM 表空间已满、临时空间不足、数据字典对象损坏,或会话登录时运行的 LOGON 触发器失败。
解决方法
阅读错误栈中 ORA-00604 之后的第二行;那才是真正的原因,并据此修正。例如,如果看到 ORA-01653,则扩展表空间。如果怀疑是 DDL/LOGON 触发器,暂时禁用它:ALTER TRIGGER trigger_name DISABLE; 通过 DBA_FREE_SPACE 检查 SYSTEM 和 TEMP 表空间的使用情况。
同一数据库的其他条目
- buffer busy waits等待:争用一个正被其他会话读取或修改的缓冲区
- gc buffer busy等待(RAC):争用正在实例间传输的 cache fusion 块
- library cache lock等待:library cache 对象句柄争用(解析/DDL 串行化)
- ORA-01438value larger than specified precision allowed for this column(值大于此列允许的指定精度)
- ORA-01400cannot insert NULL into (column)(无法将 NULL 插入(列))
- ORA-02291integrity constraint violated - parent key not found(违反完整约束条件 - 未找到父项关键字)
- ORA-02292integrity constraint violated - child record found(违反完整约束条件 - 已找到子记录)