无法删除Oracle DB中的用户

时间:2014-01-28 12:16:39

标签: oracle11g

从oracle db中删除用户时出现错误。该错误消息对诊断此问题没有多大帮助。如果您知道这个问题,请告诉我。

SQL> drop user sshil_lrg_2 cascade;
drop user sshil_lrg_2 cascade
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist
ORA-06512: at line 36

2 个答案:

答案 0 :(得分:0)

错误消息ORA-00942: table or view does not exist表示某些软件尝试执行drop table I_DO_NOT_EXIST之类的操作。但是,您不是删除表而是删除用户。

更好地查看错误消息,您还会看到ORA-00604line 36。这表明您的原始SQL语句导致其他SQL(ORA-00604)和PL / SQL(第36行)被触发。

可能你有一个在DDL语句上执行的数据库触发器。检查用户sys的user_triggers的内容并禁用/调试这些触发器。

写一个触发DDL的好触发器是非常重要的,因为你需要确保你不会自己锁定自己。

答案 1 :(得分:0)

大多数Oracle安装中的问题是缺少系统表。 在删除所有用户对象的CASCADE操作期间,Oracle尝试删除不存在的系统表。

解决方案:

在Oracle实例中创建缺少的表。

请参阅:https://community.oracle.com/thread/1048567?tstart=0

然后再次尝试DROP USER {name} CASCADE命令。

能够在没有创建特定触发器的普通Oracle安装中成功重现此错误。该解决方案解决了这个问题。