Oracle 11g:ORA-00604:递归SQL级别1发生错误
我执行了下面的脚本,它工作正常:Oracle 11g:ORA-00604:递归SQL级别1发生错误,sql,oracle11g,Sql,Oracle11g,我执行了下面的脚本,它工作正常: BEGIN FOR cur_rec IN (SELECT object_name, object_type FROM user_objects WHERE object_type IN ('TABLE', 'VIEW', 'PACKAGE'
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:表或视图不存在
请帮忙。谢谢。递归SQL错误的一个可能原因是触发器。您可能遇到了以下情况:
- 您有一个触发每个DDL语句的触发器
- 此触发器尝试将记录插入某种审核/日志表中
- 您的审核/日志表已被清理脚本删除
select * from dba_triggers
where trigger_type not in ('BEFORE EACH ROW','AFTER EACH ROW')
(您可以排除行级触发器,因为它们在概念上属于表,并且在您删除表时会自动删除)。识别出违规触发器后,您可以禁用或删除它。请告诉我您没有以SYS或SYSTEM用户身份运行该脚本…否。我使用另一个用户运行这个脚本,它是ICBI.hi,谢谢你的输入。我想你是对的。但问题是在执行SELECT语句时仍然显示错误。