如何从 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 语句?