KILL

说明

强制终止一个session

语法

kill ::=

参数

sid

将要被强制结束的 session 号,必须 0 <= sid < 65535。可以从系统视图V_SYS_SESSIONS 中查询。

IMMEDIATE | ABORT | TRANSACTIONAL | NORMAL

  • IMMEDIATE立即终止这个 session ,同 ABORT 。
  • ABORT立即终止这个 session ,同 IMMEDIATE 。
  • TRANSACTIONAL如果该 session 在事务中,等待事务结束再强制终止这个 session ,同 NORMAL。
  • NORMAL如果该 session 在事务中,等待事务结束再强制终止这个 session ,同TRANSACTIONAL 。

默认为NORMAL

注解

只有超级用户才有强制终止其他 session的权限。另外,不允许强制终止自己所在的 session 。

如果使用 NORMAL 或 TRANSACTIONAL 终止一个 session ,同时该 session 正处于一个事务中,则强制终止该 session 的操作直到该 session 结束其当前事务时才返回,这可能引起等待。

示例

--  当前用户为超级用户
--  查询会话信息
SELECT "SESSION ID", "CURRENT SQL" FROM V_SYS_SESSIONS;

--  返回结果为
--  +------------+---------------------------------------------------------+
--  | SESSION ID |            CURRENT SQL                                  |
--  +------------+---------------------------------------------------------+
--  |          0 | SELECT "SESSION ID", "CURRENT SQL" FROM V_SYS_SESSIONS; |
--  |          1 | idle                                                    |
--  +------------+---------------------------------------------------------+


--  可见 1 号 session 在 idle
--  终止 session
KILL SESSION 1 IMMEDIATE;

--  查询会话信息
SELECT "SESSION ID", "CURRENT SQL" FROM V_SYS_SESSIONS;

-- 返回结果为
--  +------------+---------------------------------------------------------+
--  | SESSION ID |            CURRENT SQL                                  |
--  +------------+---------------------------------------------------------+
--  |          0 | SELECT "SESSION ID", "CURRENT SQL" FROM V_SYS_SESSIONS; |
--  +------------+---------------------------------------------------------+