SqlPlus无法删除正在连接的用户

网上看的其他博客的方法均无效:

1、首先查找目标用户的进程
select sid,serial# from v$session where username='xxx';
使用此语句会返回一个进程列表,每行有两个数字,然后用数字替代下面的sid和serial  
2、alter system kill session 'sid,serial';  
通过select查询的语句可能会出现多行记录。
3、也可以批量生成语句
SELECT 'alter system kill session ' || '''' ||t.sid ||','||t.SERIAL#|| '''' FROM v$session t WHERE t.USERNAME='CGBCRM';

以上代码即使执行成功,但最后调用也依然会提示无法删除正在连接的用户

SqlPlus无法删除正在连接的用户_第1张图片
具体原因大致为连接未真正释放,所以此时需要通过杀进程的方式

以下为亲测有效方法

1.查询用户对应的sid

select sid from v$session where username='xxx';

SqlPlus无法删除正在连接的用户_第2张图片

2.通过sid获取spid

select pro.spid from v$session ses,v$process pro where ses.sid=81 and ses.paddr=pro.addr;

SqlPlus无法删除正在连接的用户_第3张图片

3.再开一个cmd窗口,输入

orakill orcl 10632

在这里插入图片描述
把第一步中sid对应的spid都杀掉后,就可以正常删除用户了
在这里插入图片描述

你可能感兴趣的:(开发,oracle)