You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何终止指定对象块相关Schema?如何获取对应Owner的SID和Serial#

问题解答

先明确概念:不是终止Schema,而是终止访问目标对象的会话

Schema是数据库对象(表、视图等)的逻辑集合,本身无法被“终止”。你实际需要的是终止正在访问这些%JOBS_LOG%对象的数据库会话。


1. 获取对应会话的SID和Serial#

使用以下SQL关联对象、缓冲块和会话视图,找出所有访问目标对象的会话信息:

SELECT DISTINCT
    s.sid,
    s.serial#,
    s.username AS session_owner,
    o.object_name,
    s.status
FROM
    DBA_OBJECTS o
JOIN V$BH bh ON o.data_object_id = bh.OBJD
JOIN V$SESSION s ON bh.sid = s.sid
WHERE
    o.owner != 'SYS'
    AND o.object_name LIKE '%JOBS_LOG%'
ORDER BY
    s.username, o.object_name;

这个查询会返回关键信息:

  • sid:会话ID
  • serial#:会话序列号(必须和SID配合才能唯一标识会话)
  • session_owner:会话所属的用户名
  • object_name:被访问的目标对象名
  • status:会话当前状态(ACTIVE/INACTIVE等)

2. 终止目标会话

拿到SID和Serial#后,使用以下语句终止会话:

-- 基础终止语句
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

-- 若为RAC集群环境,需指定实例号(可从V$SESSION的inst_id字段获取)
ALTER SYSTEM KILL SESSION 'sid,serial#,instance_number' IMMEDIATE;

注意事项:

  • 执行该语句需要ALTER SYSTEM系统权限
  • IMMEDIATE参数会立即标记会话为终止状态,正在执行的事务会自动回滚
  • 如果会话处于ACTIVE状态,可能需要等待回滚完成;若需强制断开,可使用ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;
  • 终止会话前务必确认这些会话是非必要的,避免影响正常业务操作

内容的提问来源于stack exchange,提问作者DIPAK SHAH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:23:03