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

DB2 11.5.9 zLinux环境下,如何用SQL查询持有特定包内部计划锁的应用

查找持有特定包内部计划共享锁的应用信息

核心SQL语句

替换语句中的占位符为你的目标包模式和名称即可执行:

WITH pkg_locks AS (
    SELECT 
        l.lock_handle,
        l.application_handle,
        l.connection_handle,
        l.lock_mode,
        p.package_schema,
        p.package_name,
        p.package_id
    FROM 
        TABLE(MON_GET_LOCKS('', -1)) AS l
    JOIN 
        TABLE(MON_GET_PACKAGE('', '', '', -1)) AS p
        ON l.lock_object_id = p.package_id
    WHERE 
        l.lock_type = 'PLAN'
        AND l.lock_mode = 'S'
        AND p.package_schema = 'TARGET_SCHEMA'  -- 替换为目标包模式
        AND p.package_name = 'TARGET_PACKAGE'    -- 替换为目标包名称
)
SELECT 
    a.application_handle,
    a.application_name,
    a.session_auth_id,
    c.connection_handle,
    c.client_ipaddr,
    c.client_hostname,
    pl.lock_mode,
    pl.package_schema,
    pl.package_name
FROM 
    pkg_locks pl
JOIN 
    TABLE(MON_GET_APPLICATION('', -1)) AS a
    ON pl.application_handle = a.application_handle
JOIN 
    TABLE(MON_GET_CONNECTION('', -1)) AS c
    ON pl.connection_handle = c.connection_handle
ORDER BY 
    a.application_handle;

关键说明

  • 内部计划锁的lock_type固定为PLAN,共享锁对应lock_mode='S';通过MON_GET_PACKAGE获取包的package_id,与MON_GET_LOCKS中的lock_object_id关联,这是定位包锁的核心关联逻辑。
  • 关联MON_GET_APPLICATION可获取应用名称、会话授权用户等应用层信息,MON_GET_CONNECTION补充客户端IP、主机名等连接细节。
  • 执行用户需具备DATAACCESS或MONITOR1权限,否则无法访问这些监控视图。
  • 若包存在多版本(不同包令牌),可添加p.package_token条件过滤特定版本的锁。

排查注意事项

  • 先执行SELECT * FROM TABLE(MON_GET_PACKAGE('TARGET_SCHEMA', 'TARGET_PACKAGE', '', -1))验证目标包是否存在且有活跃执行上下文。
  • 若需跨分区查询,将MON_GET_LOCKS、MON_GET_PACKAGE等函数的第二个参数(分区号)改为-2(覆盖所有分区)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:15:03