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掉进程即可。
评论回复