ORA-01940:无法删除当前已链接的用户

删除用户tbrooke时:

drop user tbrooke cascade;

报错:ORA-01940:无法删除当前已链接的用户

解决办法:

1    查看用户tbrooke的连接状况

select username,sid,serial# from v$session where username='TBROOKE';


wKiom1MUAE_RB8vTAAAikPPgr2w950.jpg

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):

wKioL1MUARvQUrjpAAJMxW-T17g308.jpg

删除成功状态(KILLED):

wKiom1MUAVfQ6uuBAAJN5E4z5zo771.jpg


备注:锁表 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技术学习与交流” 博客,谢绝转载!

你可能感兴趣的:(oracle,ORA-01940)