为何QZDASOINIT作业(QUSER用户)持有的PF*SHRRD锁查询新PF后仍未释放?
IBM i ACS Run SQL Scripts 文件锁问题分析与解决
为什么CUSTPF的*SHRRD锁未自动释放?
- ACS的Run SQL Scripts依赖IBM i的DB2服务作业QZDASOINIT,该作业属于QUSER用户,默认会维持数据库连接会话。当你完成CUSTPF的查询后,只要会话未关闭,驱动会保留文件的共享读锁以优化后续重复查询,减少锁操作开销。即便是切换查询EMPPF,只要同一个会话还处于活跃状态,CUSTPF的锁不会主动释放。
执行DLCOBJ命令无效的原因
DLCOBJ仅能释放当前作业持有的对象锁,而持有CUSTPF锁的是QZDASOINIT作业,并非你执行DLCOBJ的交互式作业(比如QPADEV开头的作业)。跨作业的锁无法通过当前作业的DLCOBJ命令释放,因此锁状态无变化。
有效解锁方法
- 关闭对应会话:直接关闭ACS中执行CUSTPF查询的标签页,或断开当前数据库连接,QZDASOINIT作业会自动释放持有的锁资源。
- 结束QZDASOINIT作业:通过命令
WRKACTJOB SBS(QUSRWRK)找到目标QZDASOINIT作业,执行ENDJOB JOB(作业编号) OPTION(*IMMED)强制结束作业(注意:会中断该会话的所有数据库操作)。 - 调整连接属性:在ACS的Run SQL Scripts连接配置中,开启**自动提交(Auto-Commit)**并设置合理的空闲超时时间,让闲置会话自动关闭,避免锁资源长期占用。
内容的提问来源于stack exchange,提问作者ojay
相关产品推荐
相关产品推荐

