关于 : ORA-01940: cannot drop a user that is currently connected(不能删除当前连接的用户的解决办法) 的解决办法
这个异常是我以前项目开发过程中使用Oracle时遇到的一个问题,近期被几个小师妹经常问道起,我就将这个问题分享出来了,要是下次再问我直接就把链接发过去,自己看了。
问题的复现,如下图:
由错误信息可知“ 不能删除当前连接的用户 ”,一般这个问题是由于回话被占用导致无法删除的,遇到这个问题很正常。
解决办法:
使用Oracle的系统用户登陆,如下图:
查询需要删除用户回话占用情况,输入 " SELECT SID, SERIAL# FROM V$SESSION WHERE USERNAME = 'ETC'; ",如下图:
如上图可知当前我们的ETC用户有13条回话在使用中。
注意:用户名一定要大写,在 V$SESSION 中不管你的用户名时大写还是小写,在这儿都要大写,好多人重复的问我,都是这儿用户名小写导致无法查询到,包括网上好多的解决办法都有这个问题,最后还是没有解决。
接下来就是各个击破了,挨个干掉占用用户的回话,输入 " ALTER SYSTEM KILL SESSION '13,772'; " ,如下图:
最后,占用的回话关闭完成后,就可删除指定用户了,输入 " drop user etc cascade; " ;
好了关于Oracle中 “ 不能删除当前连接的用户 ” 的问题就解决了,如果期间还遇到其他什么问题欢迎留言。