cannot drop a user that is currently connected

当尝试在Oracle数据库中删除用户usr_sg时,如果遇到'正在连接的用户无法删除'的错误,可以通过查询V$SESSION获取占用用户连接的SID和SERIAL#,然后使用ALTER SYSTEM KILL SESSION命令强制结束这些会话。执行完成后,可以安全地删除用户,注意此操作将导致用户所有数据丢失。
摘要由CSDN通过智能技术生成

删除用户时,提示正在连接的用户无法删除。那就强制断开连接吧!

错误信息

SQL> drop user usr_sg cascade;
drop user usr_sg cascade
*
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected

解决办法

查询占用情况

比如查询usr_sg用户的连接情况,这里你要换成大写的USR_SG
语句:

SELECT SID, SERIAL#,USERNAME FROM V$SESSION WHERE USERNAME = 'USR_SG'; 

执行结果:

SQL> SELECT SID, SERIAL#,USERNAME FROM V$SESSION WHERE USERNAME = 'USR_SG';

       SID    SERIAL# USERNAME
---------- ---------- ------------------------------
	58	 1471 USR_SG
	59	 4039 USR_SG

强制kill会话

后面的参数是SID+SERIAL#

ALTER SYSTEM KILL SESSION '58,1471'; 
ALTER SYSTEM KILL SESSION '59,4039'; 

如果觉得,手动拼太麻烦了,可以执行下面语句自动生成sql脚本。
命令:

SELECT 'ALTER SYSTEM KILL SESSION '''||SID||','||SERIAL#||''';' FROM V$SESSION WHERE USERNAME = 'USR_SG';

执行结果:

SQL> SELECT 'ALTER SYSTEM KILL SESSION '''||SID||','||SERIAL#||''';' FROM V$SESSION WHERE USERNAME = 'USR_SG';

'ALTERSYSTEMKILLSESSION'''||SID||','||SERIAL#||''';'
--------------------------------------------------------------------------------
ALTER SYSTEM KILL SESSION '58,1471';
ALTER SYSTEM KILL SESSION '59,4039';

杀进程执行结果如下:

SQL> ALTER SYSTEM KILL SESSION '58,1471';

System altered.

SQL> ALTER SYSTEM KILL SESSION '59,4039';

System altered.

这里我们在来删除用户试试(所有的用户数据会丢失请谨慎操作)。
执行结果:

SQL> drop user usr_sg cascade;

User dropped.

参考

https://blog.csdn.net/Hello_World_QWP/article/details/78687886

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值