启用 DB2_CAPTURE_LOCKTIMEOUT=ON 后找不到 db2锁定超时日志



基于以下链接:

https://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.regvars.doc/doc/r0005657.html

我打开DB2_CAPTURE_LOCKTIMEOUT=ON,然后我检查我是否成功更改了它db2set -all,我可以看到它已经打开了。

之后,我通过以下链接成功模拟了锁定超时:

https://db2forum.wordpress.com/2011/10/17/new-options-for-analyzing-lock-timeouts-in-db2-9-5/

我成功地得到了Reason code "68". SQLSTATE=40001.

但是,我仍然无法在/home/db2inst1/sqllib/db2dump获得任何db2locktimeout日志。

我只能在这条路径中看到db2diag.log,而看不到db2locktimeout日志。

我可以知道我犯了什么错误吗?

正如您引用的 V10.5 页面,我假设您的 Db2 服务器至少在该版本。在寻求帮助时,请始终编写 Db2 版本和修订包。

此已弃用(但仍有效)变量仅对新编译的SQL 语句有效。 这意味着,如果您的包缓存已经缓存了 SQL 语句(用于重新创建 -911 原因码 68 的语句),那么如果这些 SQL 涉及 -911,则不会显示这些文件。

如果您的创建方案可以在开发数据库或测试数据库上工作,那么您可以刷新动态语句高速缓存(不要在生产环境中执行此操作),也可以退回 Db2 实例(这具有清除包高速缓存的副作用)。

如果您的重新创建场景仅使用 static-SQL,那么需要重新绑定这些包(不要在生产环境中执行此操作),或者您可以退回 Db2 实例。

如果只能在生产环境中重现问题,并且刷新、反弹或重新绑定对该环境的侵入性太大,则建议使用事件监视器进行锁定的替代方法,尽管这需要更多的努力。

要了解有关 Db2 如何编译 SQL,以及如何将动态 SQL 语句及其访问计划及其访问计划存储在内存中(称为包缓存)的更多信息,请学习 Db2-Knowledge Center 或查阅任何 Db2 参考书。

相关内容

  • 没有找到相关文章

最新更新