删除用户tbrooke时:
1
|
drop
user
tbrooke
cascade
;
|
报错:ORA-01940:无法删除当前已链接的用户
解决办法:
1 查看用户tbrooke的连接状况
1
|
select
username,sid,serial#
from
v$session
where
username=
'TBROOKE'
;
|
2 删除用户tbrooke的sid和serial
1
|
alter
system kill session
'160,2301'
;
|
3 删除用户
1
|
drop
user
tbrooke
cascade
;
|
如果在drop 后还提示ORA-01940:无法删除当前已链接的用户,说明还有连接的session,可以通过查看session的状态来确定该session是否被kill 了,用如下语句查看:
1
|
select
saddr,sid,serial#,paddr,username,status
from
v$session
where
username
is
not
null
;
|
未删除是状态(INACTIVE):
删除成功状态(KILLED):
备注:锁表 ORA-00031: session marked for kill
1
2
3
|
select
spid, osuser, s.program
from
v$session s,v$process p
where
s.paddr=p.addr
and
s.sid=160
|
在OS上杀死这个进程(线程):
Linux上,用root身份或是相应的oracle身份执行命令:
1
|
#kill -9 9846
--9846 上一步查询出的spid
|
windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:
orakill sid thread
PS:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
exp:
c:>orakill orcl 9846
本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1366326,如需转载请自行联系原作者