KILL¶
说明¶
强制终止一个session
参数¶
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; |
-- +------------+---------------------------------------------------------+