在删除oracle用户时提示报错:ORA-01940: 无法删除当前连接的用户

解释:

ORA-01940错误表示你正在尝试删除当前正在连接数据库的用户。Oracle不允许在用户连接到数据库时删除该用户,因为这样会导致用户会话失效,从而引发异常

解决:

(1)查询V$SESSION视图来查询要删除的用户的会话信息。

SELECT SID, SERIAL#, username, program
  FROM V$SESSION
 WHERE USERNAME = '你要删除的username';

记下SID和SERIAL#

ORA-01940: 无法删除当前连接的用户_删除用户

(2)终止用户的会话

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

注意:将sid和serial#替换成上面查询到的

注意:在执行ALTER SYSTEM KILL SESSION时,如果你不想等待会话自然终止,可以添加IMMEDIATE选项。但请谨慎使用,因为强制终止会话可能会导致未提交的事务被回滚。

(3)确定会话是否终止

查看session的状态来确定该session是否被kill 了,status 为要删除用户的session状态

如果还为inactive,说明没有被kill掉,如果状态为killed,说明已kill。

select saddr,sid,serial#,paddr,username,status from v$session where username is not null AND username = '你的username';

终止所有会话后,你就可以安全地删除用户了

(3)删除用户

drop user 你需要删除的username cascade;