无法删除断开连接的 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;
我正在尝试从 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;