无法删除断开连接的 oracle 用户

Cannot drop disconnected oracle user

我正在尝试从 Oracle 数据库(版本 12c)中删除用户,但无法正常工作。我得到的错误是:

ORA-01940: cannot drop a user that is currently connected

我自然而然地环顾四周,发现了如何强行断开连接并终止会话。所以我使用了查询:

select s.sid, s.serial#, status, s.username 
from v$session s 
where username = 'user_i_want_to_drop';

然后使用

终止了唯一的活动会话
alter system kill session '<sid>,<serial#>' IMMEDIATE;

自然地使用查询中的值。

当我再次 运行 查询时,正如预期的那样,它是空的。但是,我仍然无法删除用户并收到相同的错误消息。

我注意到,当我查询 gv$session 时,会显示该用户的两个会话。但是,我无法使用上面使用的 alter system kill session 语句杀死那些人。

我在这里错过了什么?

其他会话连接到您集群的另一个实例。

inst_id 添加到您的 gv$session 查询中,如下所示:

select sid,serial#,inst_id 
from gv$session 
where username = 'user_i_want_to_drop';

然后,在 alter system kill session 命令中包含 inst_id,如下所示:

alter system kill session '<sid>,<serial#>,@<inst_id>' immediate;

例如,

alter system kill session '15,1891,@1' immediate;