1、该用户仍然有连接。
select username,sid,serial# from v$session where
username=用户名;
好吧,我是属于坏人一类的,查到了就无情的KILL掉它。
alter system kill session
'138,10332'; ---前是sid,后是serial#
2、删除用户时出现:ORA-24005: must use DBMS_AQADM.DROP_QUEUE_TABLE to
drop queue tables 错误。
select OWNER,QUEUE_TABLE from USER_QUEUE_TABLES where
OWNER=用户名;
好吧查到了吗?一般是DEF$_AQCALL,DEF$_AQERROR这两个小坏蛋,呵呵,删除吧。
alter session set events'10851 trace name context forever,level
2';
begin
DBMS_AQADM.DROP_QUEUE_TABLE('用户名.DEF$_AQCALL',TRUE,true);
end;
begin
DBMS_AQADM.DROP_QUEUE_TABLE('用户名.DEF$_AQERROR',TRUE,true);
end;
好吧,你再试一下看能删除不?一般就OK了。
注:当然,我可勤劳的做了一个事,就是把该用户下所有的对象删除后,再删除用户,这个唯一就是麻烦点而已。
先删除该用户所有东西,请用该用户登录:
select 'drop table ' || table_name ||';'||chr(13)||chr(10) from
user_tables; --delete tables
select 'drop view ' || view_name||';'||chr(13)||chr(10) from
user_views; --delete views
select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10)
from user_sequences;--delete seqs
select 'drop function ' || object_name||';'||chr(13)||chr(10) from
user_objects where object_type='FUNCTION';--delete functions
select 'drop procedure ' || object_name||';'||chr(13)||chr(10) from
user_objects where object_type='PROCEDURE';--DELETE PROCEDURE
select 'drop package ' || object_name||';'||chr(13)||chr(10) from
user_objects where object_type='PACKAGE';--delete pags
把脚本拷出来,运行就OK了。