一种应用于数据库日志分析的解析模型的制作方法

文档序号:17398451发布日期:2019-04-13 01:00阅读:268来源:国知局
一种应用于数据库日志分析的解析模型的制作方法

本发明涉及数据库技术领域,特别涉及一种应用于数据库日志分析的解析模型。



背景技术:

随着信息技术的深入发展,应用系统的不断升级,系统之间的集成贯通越来越多的需要数据交互,数据抽取已经逐步成为了信息系统融合的关键部分。然而,所有针对数据的抽取与交互都包含着一个基本的假设—数据的可用性和可靠性。数据库附件日志解析技术作为确定数据变化的关键,其数据的可用性和与可靠性自然备受关注。数据库前映像附件日志解析技术正是在这种要求下产生的。

oracle数据库undo日志中详细记录着数据库操作的所有变化前的备份信息,undo日志记录所有的前印象,用于回滚操作,oracle数据库undo日志有着严格的格式与内部规律,但由于oracle数据库厂商的技术壁垒,无法直接获取相关资料。数据库前映像数据抽取是数据复制领域中的关键技术,当前业界主要是以goldengate为代表的逻辑级数据库日志抽取产品,现有技术源数据库信息不能与抽取后的数据进行比对,抽取数据的完整性得不到验证,复制模型应用价值不高。



技术实现要素:

发明的目的在于提供一种应用于数据库日志分析的解析模型,本发明从undo日志中抽取出变化附加日志信息,将抽取后的数据与源数据库信息进行比对,验证了抽取数据的完整性,进一步说明复制模型具较好的工程应用价值,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:

一种应用于数据库日志分析的解析模型,其搭建的前映像数据抽取模型软件系统由数据复制层和管理层,所述数据复制层由数据库抽取工具组成,数据库抽取工具分别部署在源端数据库服务器和目标端数据库服务器,源端数据库服务器连接于目标端数据库服务器,所述管理层由数据库抽取管理工具组成,数据库抽取管理工具部署在管理库服务器、应用服务器以及转换器,管理库服务器以及两台的应用服务器均连接于转换器,其中一个所述应用服务器和转换器均与目标端数据库服务器连接。

进一步地,源端数据库服务器、目标端数据库服务器、管理库服务器以及应用服务器均采用16核64gb内存,oracle11g数据库。

进一步地,oracle数据库前映像undo数据解析步骤如下:

步骤1:1undo日志文件解析

先模拟一次数据库操作,找到对应操作的trace文件,再用bbed块读取工具读取对应的数据块,通过trace文件注释与二进制数据块结合进行解析,找出其中的格式与规律流程;

步骤2:追踪文件解析

根据追踪文件可以查询到详细的数据库操作过程;

步骤3:undo数据块文件解析

利用oracle内部工具数据库块浏览编辑器查看和修改日志数据块文件;

步骤4:推断undo日志文件结构

通过分析追踪文件,将追踪文件内容与undo数据块与十六进制数据块相匹配,分析解读undo日志格式,经过多次比对,推断出redo日志文件结构;

进一步地,步骤4中redo日志由操作系统头、undo头标记段与undo数据块三种类型数据块组成,其中操作系统头位于第一个块,undo头标记段位于第二个块,从第三块开始为undo数据块。

进一步地,步骤2包括seq、scn、kdo、opcode的事务过程信息。

进一步地,前映像数据抽取模型中oracle数据库undo日志抽取包括物理数据块block处理,数据抽取引擎包括:

(1)undokdo结构

前映像日志的kdo结构记录着数据变化关键信息,利用oracle内部工具数据库块浏览编辑器可以直接查看和修改kdo数据;

(2)数据抽取引擎流程设计

通过获取数据库版本信息、解析前映像的change第4块中的kdo数据,提取其中的操作码;根据不同的操作码采用不同的解析方式,获取附加日志数据块编号;根据附加日志结构,获取附加日志内部的主键列数据;将获取的主键列数据依次添加到改变列数据中。

与现有技术相比,本发明的有益效果是:本发明提出的关系数据库前映像的附加日志解析模型,将抽取的数据对比统计后,结果表明本发明设计的前映像数据复制模型可以从undo日志中抽取出变化附加日志信息,将抽取后的数据与源数据库信息进行比对,验证了抽取数据的完整性,进一步说明复制模型具有一定的工程应用价值。

附图说明

图1为本发明的测试环境拓扑示意图;

图2为本发明的数据抽取记录示意图;

图3为本发明的undo日志解析流程示意图;

图4为本发明的trace文件结构示意图;

图5为本发明的undo数据块文件结构示意图;

图6为本发明的undo日志文件结构示意图。

图中:1、数据复制层;11、数据库抽取工具;111、源端数据库服务器;112、目标端数据库服务器;2、管理层;21、数据库抽取管理工具;211、管理库服务器;212、应用服务器;213、转换器。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

一种应用于数据库日志分析的解析模型,其搭建的前映像数据抽取模型软件系统由数据复制层1和管理层2,数据复制层1由数据库抽取工具11组成,数据库抽取工具11分别部署在源端数据库服务器111(1台16核64gb内存、oracle11g数据库)和目标端数据库服务器112(1台16核64gb内存、oracle11g数据库),源端数据库服务器111连接于目标端数据库服务器112,管理层2由数据库抽取管理工具21组成,数据库抽取管理工具21部署在管理库服务器211(16核64gb内存、oracle11g数据库)、应用服务器212(16核64gb内存、oracle11g数据库)以及转换器213(如图1),管理库服务器211以及两台的应用服务器212均连接于转换器213,转换器213进行数据交换,其中一个应用服务器212和转换器213均与目标端数据库服务器112连接,测试环境中网络带宽100mb/s,测试源端数据库执行dml操作时,数据抽取记录如图2所示,从图2可以看出执行的dml操作数据已被抽取转换成数据对象格式,数据对象记录了详细的操作过程数据,后续在数据投递到目标端后,可以根据目标端数据库类型,组装成相应的sql语句。

oracle数据库前映像undo数据解析步骤如下:

步骤1:1undo日志文件解析

先模拟一次数据库操作,找到对应操作的trace文件,再用bbed块读取工具读取对应的数据块,通过trace文件注释与二进制数据块结合进行解析,找出其中的格式与规律流程,undo日志文件解析流程如图3所示;

步骤2:追踪文件解析

追踪文件(tracefile)是以trc为后续的文本文件,它记录了各种sql操作及所消耗的时间等。根据追踪文件可以查询到详细的数据库操作过程,包括seq、scn、kdo、opcode等详细的事务过程信息。具体追踪文件内容如图4所示;通过追踪文件中的内容,可以依次推理出数据库每一种操作码对应的标记位以及对应的执行过程内容,为下一步抽取有效操作内容奠定基础;

步骤3:undo数据块文件解析

利用oracle内部工具数据库块浏览编辑器(bbed)可以直接查看和修改日志数据块文件。通过bbed工具dump日志文件块查看oracle内部undo日志块内容如图5所示;

步骤4:推断undo日志文件结构

通过分析追踪文件,将追踪文件内容与undo数据块与十六进制数据块相匹配,分析解读undo日志格式,经过多次比对,推断出redo日志文件结构;redo日志由操作系统头(osheadblock)、undo头标记段(undoheadblock)与undo数据块(undodatablock)三种类型数据块组成。其中操作系统头位于第一个块,undo头标记段位于第二个块,从第三块开始为undo数据块,各块内部结构如图6所示;日志文件通常使用操作系统的块大小,为512bytes,redologs循环写。日志格式依赖于操作系统与数据库版本,由日志文件头(redologsheader)以及后面的日志记录(redorecord)组成,日志记录同样由记录头(recordheader)以及多个日志操作(redochange)组成;数据库的许多变化都放在记录(record)中,记录可以大于一个块,也可以小于一个块,记录的大小和数据库的块大小有关,默认情况下最大的记录是三个数据块。记录是redo日志中表示数据库操作的一个原子单位。每个redo记录包含每个change所需的undo信息;

前映像数据抽取模型中oracle数据库undo日志抽取包括物理数据块block处理,数据抽取引擎设计两大部分,数据抽取引擎包括:

(1)undokdo结构

前映像日志的kdo结构记录着数据变化关键信息,利用oracle内部工具数据库块浏览编辑器(bbed)可以直接查看和修改kdo数据。通过bbed工具dump日志文件块查看oracle内部undo日志块内部kdo结构如表1所示;

表1undokdo结构

(2)数据抽取引擎流程设计

在确定kdo结构后,接着对前映像日志数据块内容进行具体的解析。针对前映像数据块内部结构特点,本发明设计了日志数据抽取引擎,通过获取数据库版本信息、解析前映像的change第4块中的kdo数据,提取其中的操作码;根据不同的操作码采用不同的解析方式,获取附加日志数据块编号;根据附加日志结构,获取附加日志内部的主键列数据;将获取的主键列数据依次添加到改变列数据中。前映像数据抽取引擎整体设计主要流程描述如下:

第一步:初始化undoreader、数据库连接,获取当前日志文件路径;

第二步:根据具体情况,打开存放在文件系统、裸设备、asm上的日志文件;

第三步:根据kdo公共结构解析change第4块中的kdo数据;

第四步:根据opkdo确定是哪一类dml操作,如果是insert操作,则进入第五步,如果是update操作,则执行第八步,如果是delete操作,则执行第十三步;

第五步:根据insert特定的kdo结构解析change第4块中余下kdo数据;

第六步:从第5块开始根据改变列数量(kdo.cc)读取各列的值;

第七步:计算附加日志开始change数据块编号index,然后执行第十五步;

第八步:根据update特定的kdo结构解析change第4块中余下kdo数据;

第九步:从第5块数据中获取改变的列编号,每两位一个;

第十步:从第5块数据中获取改变的列编号,每两位一个,返回改变列号list;

第十一步:从change第6块数据开始,根据kdo.nchanged,逐个解析,获得列数据,columnid与改变列号list对应;

第十二步:获取附加日志开始change数据块编号index,然后执行第十五步;

第十三步:opcode为delete,无剩余kdo数据;

第十四步:获取附加日志开始change数据块编号index=5;

第十五步:根据index在change的第index块中解析附加日志结构;

第十六步:设置附加日志标志信息、开始列信息;

第十七步:从change的index+1块中读取主键的列id(此id从1而非0开始),得到列号index;

第十八步:从change第index+3块数据开始,根据opsupplemental.totalcols,逐个解析,获得主键列数据,columnid与列号list对应;

第十九步:添加到之前的改变列数据list中,然后重新继续新的数据抽取。

本发明将抽取的数据对比统计后,结果表明本发明设计的前映像数据复制模型可以从undo日志中抽取出变化附加日志信息,将抽取后的数据与源数据库信息进行比对,验证了抽取数据的完整性,进一步说明复制模型具有一定的工程应用价值。

综上所述,本发明提出的关系数据库前映像的附加日志解析模型,通过trace文件注释与二进制数据块结合进行解析,找出其中的格式与规律流程,通过追踪文件中的内容,可以依次推理出数据库每一种操作码对应的标记位以及对应的执行过程内容,利用oracle内部工具数据库块浏览编辑器可以直接查看和修改日志数据块文件,通过分析追踪文件,将追踪文件内容与undo数据块与十六进制数据块相匹配,分析解读undo日志格式,经过多次比对,推断出redo日志文件结构,利用oracle内部工具数据库块浏览编辑器可以直接查看和修改kdo数据,通过获取数据库版本信息、解析前映像的change第4块中的kdo数据,提取其中的操作码;根据不同的操作码采用不同的解析方式,获取附加日志数据块编号;根据附加日志结构,获取附加日志内部的主键列数据;将获取的主键列数据依次添加到改变列数据中,将抽取的数据对比统计后,结果表明本发明设计的前映像数据复制模型可以从undo日志中抽取出变化附加日志信息,将抽取后的数据与源数据库信息进行比对,验证了抽取数据的完整性,进一步说明复制模型具有一定的工程应用价值。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1