【问题标题】:Oracle 11g: ORA-00604: error occurred at recursive SQL level 1Oracle 11g:ORA-00604:递归 SQL 级别 1 发生错误
【发布时间】:2014-09-14 02:46:37
【问题描述】:

我执行了下面的脚本,它可以工作:

BEGIN
   FOR cur_rec IN (SELECT object_name, object_type
                 FROM user_objects
                WHERE object_type IN
                         ('TABLE',
                          'VIEW',
                          'PACKAGE',
                          'PROCEDURE',
                          'FUNCTION',
                          'SEQUENCE'
                         ))
 LOOP
  BEGIN
     IF cur_rec.object_type = 'TABLE'
     THEN
        EXECUTE IMMEDIATE    'DROP '
                          || cur_rec.object_type
                          || ' "'
                          || cur_rec.object_name
                          || '" CASCADE CONSTRAINTS';
     ELSE
        EXECUTE IMMEDIATE    'DROP '
                          || cur_rec.object_type
                          || ' "'
                          || cur_rec.object_name
                          || '"';
     END IF;
  EXCEPTION
     WHEN OTHERS
     THEN
        DBMS_OUTPUT.put_line (   'FAILED: DROP '
                              || cur_rec.object_type
                              || ' "'
                              || cur_rec.object_name
                              || '"'
                             );
  END;
   END LOOP;
END;
/

但问题是,在此之后,即使我使用的是 sysdba 用户,我也无法在我的数据库中授予、创建或删除等。

我收到错误:

ORA-00604: 递归 SQL 级别 1 发生错误 ORA-00942: 表或视图不存在

请帮忙。谢谢。

【问题讨论】:

  • 请告诉我您没有以 SYS 或 SYSTEM 用户身份运行该脚本...
  • 没有。我在运行这个脚本时使用了另一个用户,即 ICBI。

标签: sql oracle11g


【解决方案1】:

递归 SQL 错误的一个可能原因是触发器。您可能遇到过这种情况:

  • 您有一个针对每个 DDL 语句触发的触发器
  • 此触发器尝试将记录插入某种审计/日志表中
  • 您的审核/日志表已被您的清理脚本删除

要获取所有触发器的列表,您可以使用

select * from dba_triggers
where trigger_type not in ('BEFORE EACH ROW','AFTER EACH ROW')

(您可以排除行级触发器,因为它们在概念上属于表,并且在您删除表时会自动删除)。确定违规触发器后,您可以禁用或删除它。

【讨论】:

  • 嗨,感谢您的意见。我想你是正确的。但问题是执行 SELECT 语句时仍然显示错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 2019-05-01
  • 1970-01-01
相关资源
最近更新 更多