半夏微凉

半夏微凉

ORA-01940: cannot drop a user that is currently connected

SQL> drop user lentim cascade;

drop user lentim cascade

*

ERROR at line 1:

ORA-01940: cannot drop a user that is currently connected

删除用户时报错,不能删除一个正在连接的用户。既然是正在连接中,那么在oracle中清除一下会话连接再试一下。做法如下:

SQL> select sid,serial# from v$session where username='LENTIM';

       SID    SERIAL#

---------- ----------

36  131

43  109

SQL> alter system kill session '43,109';    

System altered.

SQL> alter system kill session '36,131';

System altered.

SQL> drop user lentim cascade;

User dropped.


查看数据库所有用户连接和相关删除连接语句:

select 'alter system kill session '''||sid||','||serial#||''';' from v$session;


如果上述方法还是无法实现删除用户,可能是该用户在操作系统层面有进程正在进行中,会自动重新连接session。那么如果要删除用户的话还要在操作系统层面进行用户删除,方法如下:

select  'kill -9 '|| c.spid ||' ;' FROM v$session s,v$process c WHERE s.paddr=c.addr and s.username in ('user_name');

其中user_name表示你要终止进程的用户名,查询出来的语句用root用户执行一下,直接kill掉进程即可。



评论回复


·