从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
答案 0 :(得分:0)
错误消息ORA-00942: table or view does not exist
表示某些软件尝试执行drop table I_DO_NOT_EXIST
之类的操作。但是,您不是删除表而是删除用户。
更好地查看错误消息,您还会看到ORA-00604
和line 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安装中成功重现此错误。该解决方案解决了这个问题。