在删除oracle用户时提示报错:ORA-01940: 无法删除当前连接的用户
解释:
ORA-01940错误表示你正在尝试删除当前正在连接数据库的用户。Oracle不允许在用户连接到数据库时删除该用户,因为这样会导致用户会话失效,从而引发异常
解决:
(1)查询V$SESSION
视图来查询要删除的用户的会话信息。
SELECT SID, SERIAL#, username, program
FROM V$SESSION
WHERE USERNAME = '你要删除的username';
记下SID和SERIAL#
(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;