Logminer是Oracle提供的实用日志分析工具,可以方便的获取Oracle重做日志(redo log)中的具体内容,Logminer使用一组PL/SQL包作为分析接口,分析出的数据内容通过v$logmnr_contents视图获得。
我们通过对Oracle日志格式的分析,自己开发了一个类似Logminer的工具,分析参数通过命令行直接传送给程序,分析的内容输出到一个csv格式的文件中,这个文件的格式类似v$logmnr_contents的字段结构,为了看起来方便,省略了一些意义不大的字段。分析完成后,可以用Excel打开查看里面的内容。程序的主要功能是通过重做日志(包括归档和在线)的修改记录重新构造了原始操作的SQL语句。为了方便程序的阅读,在开发时没有使用数据字典,所以分析出来的SQL格式与Logminer不使用字典时的输出格式类似。
这个软件除了源代码以外,还包含一份对Oracle redo log的详细分析文档,描述了日志中使用的数据结构。描述了Block0和Block1中各字段的含义,日志块的结构。
详细描述了一个重做记录的组成部分,包括重做记录头,重做向量,改变记录等。重点分析了ktudh,ktudb,ktubl,ktubu,ktucm等事务结构,还有KTB块事务结构,
以及KTB F,KTB C,KTBZ,KTB L,KTB R之间的区别,还描述了行数据操作KDO的IRP,DRP,URP,QMI,QMD等操作,包括数据结构和数据的排列方式。分析了DDL的操作,
以及DDL中各个元素的组合。还详细分析了补充日志(supplemental log)的结构和补充字段的格式。
Oracle日志解析是技术含量非常高的工作,Oracle GoldenGate和Quest SharePlex,DSG RealSync等数据复制软件都是通过解析Oracle的归档或在线日志,提取其中的事务数据来进行数据复制的,对日志格式的理解是这些软件运行的基础。我们提供的日志分析文档涵盖了大部分的事务数据格式,通过这个软件能够分析还原出大量的用户操作。在这个基础上再深入研究,开发一个与GoldenGate类似的复制软件也并非不可能的事情。在我们的产品页面中就有一个类似的软件,可以试用感受一下它的功能。