有没有办法查看流程(agent_id
)当前跨越多少个事务日志?或列出它当前使用/跨越的交易日志?即是否可以检查是否即将到达NUM_LOG_SPAN
?
我们最近遇到了一个问题,即长时间运行的交易违反了NUM_LOG_SPAN
。当我们有105个日志时,这被设置为70。我们现在增加了这个,但可能还是不够。我们可以将NUM_LOG_SPAN
设置为0,但这是最后的手段......我们希望能够做的是至少监控情况(而不仅仅是等到它命中并导致问题) - 是能够运行一个命令来查看,例如,一个进程现在是否正在使用/ spanning,比如90个日志?然后我们可以决定是否取消它。
我们正在执行类似于以下语句的内容,您可以在其中查看事务日志使用的百分比:
select log_utilization_percent,dbpartitionnum from sysibmadm.log_utilization
- 监控流程是否有类似内容,以确保它们不会超过NUM_LOG_SPAN
阈值?
注意:这是在SAP系统(NW7.3)中...也许在DBACOCKPIT中有什么东西可以查看它?
答案 0 :(得分:1)
据我所知,您无法仅从监视器功能中计算出这一点,因为没有任何监视功能为工作单元公开Start LSN。
但是,您可以使用db2pd
执行此操作。使用db2pd -db <dbname> -logs
查找当前的LSN,并使用db2pd -db <dbname> -transactions
查找特定工作单元的 Firstlsn 。
使用这两个数字,您可以使用公式
(currentLSN - firstLSN)
Logs Files Spanned = -------------------------
logfilsiz * 4096
(您应该将当前LSN的十六进制值和db2pd
返回的firstLSN转换为十进制值)。