db2日志分析笔记

这几天又回去做db2的日志分析,由于db2自带了日志分析的api接口,所以先打算跑一跑看什么情况,不过这个api接口是用c写的,赤裸裸的硬伤,但也只能硬上了。

        先到例子目录,执行一下例子

   

    输出如下

    db2日志分析笔记_第1张图片

结果还挺让人满意的,有我想要的操作类型,rowid,commit时间,但还少了操作对应的tablespace id,table id,事务id,只好把例子改一改了。

关于日志的标识位,除了db2 9.7版本不同之外,9.7以后的标识位都一样,可以从官网找到,如下

db2日志分析笔记_第2张图片

按照文档,在utilrecov.c文件把tablespace id和table id的标识位也读出来

db2日志分析笔记_第3张图片

然后是事务id的位置,如图

db2日志分析笔记_第4张图片

按照文档,这里用一个BASE_LOG_RECORD_HEADER的struct用来做转换

db2日志分析笔记_第5张图片

这里把6个字节长度的事务id转成12位16进制的数字字符串

db2日志分析笔记_第6张图片

最后将读到的数据再整理一下,修改输入参数保存到文件


可以看到tablespace id,table id,事务id都有了

db2日志分析笔记_第7张图片

然后保存到文件

db2日志分析笔记_第8张图片

最后还要搞清楚这个api依赖哪些so文件和环境变量,因为要在没安装db2的情况下也能运行

主要依赖以下so文件,都在db2的安装目录下的lib64文件里面,还要设置环境变量DB2INSTANCE和建立一个和DB2INSTANCE值一样的用户

db2日志分析笔记_第9张图片

但是这个例子只是分析了dml的操作,ddl的标识位并没有分析,这还要研究下ddl到底什么个情况,这时我发现真要借本c的书看一看了。


你可能感兴趣的:(db2)