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

DB2 for i 7.3中如何定位锁定表/行的应用程序?

DB2 for i 7.3中SQL0913行锁的持有应用信息排查方案

1. 通过系统视图查询锁详情

DB2 for i 7.3提供了多个系统视图可直接查询锁信息,以下是常用的两种方式:

方式一:使用QSYS2.LOCK_INFO视图(推荐)

该视图整合了对象锁与行锁信息,字段直观易懂:

SELECT 
  LOCK_OWNER_JOB_NAME,
  LOCK_OWNER_USER_NAME,
  LOCK_TYPE,
  LOCK_MODE,
  OBJECT_SCHEMA,
  OBJECT_NAME,
  ROW_NUMBER
FROM QSYS2.LOCK_INFO
WHERE OBJECT_SCHEMA = 'MYLIB' 
  AND OBJECT_NAME = 'MYTAB00002'
  AND LOCK_LEVEL = 'ROW';

关键字段说明:

  • LOCK_OWNER_JOB_NAME:持有锁的作业名称
  • LOCK_OWNER_USER_NAME:持有锁的用户账号
  • LOCK_MODE:锁模式(如X代表排他锁,会阻止UPDATE操作)
  • ROW_NUMBER:被锁定行的相对记录号

方式二:使用SYSLIB.SYSLKROW视图

专门用于查询行级锁的系统视图:

SELECT 
  LK_JOB,
  LK_USER,
  LK_TYPE,
  LK_MODE,
  LK_OBJ,
  LK_OBJLIB,
  LK_ROW
FROM SYSLIB.SYSLKROW
WHERE LK_OBJLIB = 'MYLIB' 
  AND LK_OBJ = 'MYTAB00002';

2. 使用CL命令快速排查

查看特定对象的所有锁

执行以下CL命令,会弹出交互式界面展示所有持有该对象锁的作业:

WRKOBJLCK OBJ(MYLIB/MYTAB00002) OBJTYPE(*FILE)

按F11切换视图,可查看锁的级别(行级/对象级)与锁模式。

查看单个作业的锁资源

若已锁定可疑作业,使用WRKJOB命令进入作业管理界面,选择Work with locks选项,可查看该作业持有的所有锁:

WRKJOB JOB(作业名)

3. 关联锁定行与主键值

如果知道失败UPDATE语句的主键值,可通过相对记录号(RRN)关联锁信息:

  1. 查询目标行的相对记录号:
SELECT 
  RRN(MYTAB00002) AS ROW_NUMBER,
  PRIMARY_KEY,
  *
FROM MYLIB.MYTAB00002
WHERE PRIMARY_KEY = '你的主键值';
  1. 将得到的ROW_NUMBER代入之前的锁查询视图,即可定位持有该行锁的作业。

4. 深入分析作业上下文

拿到作业名后,可使用以下命令获取作业详细信息:

  • DSPJOB JOB(作业名):查看作业的程序调用栈、当前执行的SQL语句,确认锁的来源
  • WRKJOB JOB(作业名):查看作业状态、资源使用情况,必要时可结束异常作业(需谨慎操作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:05:31