Oracle中终止会话KILL SESSION
终止会话:
将例程置于受限模式后,在执行管理任务前可能想终止所有当前用户会话。此操作可通过以下命令来实现:
ALTER SYSTEM KILL SESSION ‘integer1,integer2’
其中:
- integer1:V$SESSION 视图中的 SID 列的值
- integer2:V$SESSION 视图中的 SERIAL# 列的值
注:会话 ID 和序列号用来唯一地标识会话。这样,即使用户注销身份并且新会话使用相
同的会话 ID,也可确保 ALTER SYSTEM KILL SESSION 命令能够应用于正确的会话。
终止会话的影响:
ALTER SYSTEM KILL SESSION 命令一执行,将使后台进程 PMON 立即执行以下步骤:
- 回退用户的当前事务
- 释放所有当前持有的表或行锁定
- 释放用户当前保留的所有资源
终止特定实例上的会话
从 Oracle RAC 11gR1 开始,可以使用 ALTER SYSTEM KILL SESSION 语句终止特定实例上的会话。
幻灯片通过以下方式对此进行了说明:在另外一个不同于终止有问题会话的实例上,终止一个已启动的会话。
如果会话正在执行某个必须完成的活动(例如等待来自远程数据库的答复或者回退事务处理)则 Oracle DB 必须等待该活动完成,将该会话标记为“已终止”,然后将控制权返回给您。如果等待持续一段时间,则 Oracle DB 会将该会话标记为“待终止”并将控制权返回给您,同时向您发送一条消息说明会话被标记为“待终止”。然后,PMON 后台进程会在该活动完成后将该会话标记为“已终止”。
注:还可以在 ALTER SYSTEM 命令的末尾使用 IMMEDIATE 子句以便立即终止会话而不等待未完成活动完成。
SQL> SELECT SID, SERIAL#, INST_ID FROM GV$SESSION WHERE USERNAME='JFV'; SID SERIAL# INST_ID 140 3340 2 SQL> ALTER SYSTEM KILL SESSION '140,3340,@2'; System altered. SQL>
Leave a Reply