删除用户tbrooke时:
drop user tbrooke cascade;
报错:ORA-01940:无法删除当前已链接的用户
解决办法:
1 查看用户tbrooke的连接状况
select username,sid,serial# from v$session where username='TBROOKE';
2 删除用户tbrooke的sid和serial
alter system kill session '160,2301';
3 删除用户
drop user tbrooke cascade;
如果在drop 后还提示ORA-01940:无法删除当前已链接的用户,说明还有连接的session,可以通过查看session的状态来确定该session是否被kill 了,用如下语句查看:
select saddr,sid,serial#,paddr,username,status from v$session where username is not null;
未删除是状态(INACTIVE):
删除成功状态(KILLED):
备注:锁表 ORA-00031: session marked for kill
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身份执行命令:
#kill -9 9846 --9846 上一步查询出的spid
windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:
orakill sid thread
PS:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
exp:
c:>orakill orcl 9846
本文出自 “IT技术学习与交流” 博客,谢绝转载!