如何从 db2 中的 diaglog 获取特定的错误日志

Posted

技术标签:

【中文标题】如何从 db2 中的 diaglog 获取特定的错误日志【英文标题】:how to get particular error logs from diaglog in db2 【发布时间】:2015-08-25 14:14:53 【问题描述】:

我正在尝试使用 db2diag 命令来获取在 diaglog 中捕获的所有日志,其中包含特定的 SQLCODE。任何人都可以帮助我执行命令吗?

【问题讨论】:

Henrik 在下面的回答是正确的。出于好奇,您打算如何处理这些数据?如果您想保留它以用于根本原因分析,最好保存或检查整个 db2diag.log。有时问题在产生 SQL 代码之前就开始了,前面的诊断消息可能非常重要。 问题是我的数据库崩溃了,说数据库堆内存中没有可用的存储空间。根据 IBM 的说法,它在 10.1 中存在错误,他们在 10.5 中修复了 gvn。为了避免将来发生这种数据库崩溃,我计划使用一个脚本来监控我的诊断日志,因为它会看到任何这样的错误都已被捕获,它会提醒我。但问题是这个错误被捕获了,我无法找到任何常见的东西,我可以使用它来概括命令。这就是我要找的。用于监控此错误的通用命令。 如果返回码始终相同(例如 SQLO_NOMEM 或类似的东西),您也可以使用db2diag 或简单的grep 进行简单的字符串搜索。 感谢 pavel_sustr,这个 grep 选项对我有用。 【参考方案1】:

使用db2diag 命令并过滤DATA 部分的“sqlcode”,后跟特定代码:

db2diag -g 'data:=sqlcode: -1063' 将搜索 SQLCODE -1063(错误 SQL1063N)。

您可能拥有db2diag tool 的完整文档。然后,您可以格式化输出并仅提取您需要的部分日志记录。

【讨论】:

我还有一个问题。我的数据库中有一个数据库堆内存已满问题,因此一旦数据库崩溃并且备份也失败了。捕获的错误显示数据库堆内存中没有可用的存储空间。但是所有错误的细节都是不同的,我需要一个通用命令来获取所有严重级别的错误,并说数据库堆内存中没有可用的存储空间,这样我就可以监控我的诊断日志,并且可以避免数据库崩溃未来。你能帮帮我吗? 提出一个新问题并提供您迄今为止尝试过的详细信息。并将其标记为完成。 我试过这个命令:db2diag -g -rc:ret_code level=Severe n=000;但它没有返回任何东西 db2diag -g -msg:=SQL9001N 级别=严重 n=000;但它没有返回任何东西 我尝试用 grepping 搜索一个特定的单词,我猜这是唯一的选择。

以上是关于如何从 db2 中的 diaglog 获取特定的错误日志的主要内容,如果未能解决你的问题,请参考以下文章

如何从 db2 中的现有表中获取 CREATE TABLE 语句?

如何从 db2 中的选定日期获取接下来 24 小时的所有数据?

如何从 Db2 中的十进制字段中获取无效值列表?

如何从 DB2 中的两个时间戳中获取差异?

如何通过SQL从IBM db2中的查询中获取列名

如何从 DB2 的特定分区中选择数据?