一种基于日志解析的DDL分析方法及装置制造方法及图纸

技术编号:27975590 阅读:11 留言:0更新日期:2021-04-06 14:09
本发明专利技术公开了一种基于日志解析的DDL分析方法及装置,所述方法包括如下步骤:步骤S1,连接数据库,从所述数据库中导出所需系统表的基本信息;步骤S2,读取重做日志文件redo,从读取的redo数据中分析出DLL事务及DML详细信息,对比匹配分析DLL事务中的详细信息与步骤S1中导出的所需系统表的基本信息,若出现匹配,则进入步骤S3,否则跳过当前事务,继续读取分析下一个事务;步骤S3,解析步骤S2得到的DLL事务,统计本DLL事务中对各个系统表的DML操作类型及数量,根据预先学习确定的DLL事务的特征确定当前DDL事务的类型;步骤S4,返回步骤S2,直至所述重做日志文件redo读取完毕。

【技术实现步骤摘要】
一种基于日志解析的DDL分析方法及装置
本专利技术涉及计算机数据库
,特别是涉及一种Oracle数据库基于日志解析的DDL(DataDefinitionLanguage,数据定义语言)分析方法及装置。
技术介绍
Oracle是一种非常流行的关系数据库,应用广泛,非常受市场欢迎。针对Oracle的各种研究也很活跃,其中基于在线日志(redolog)解析的数据库备份、保护、双活是一个重要方向。基于在线日志(redolog)的数据库备份有各种优点,例如对业务影响小,对数据库依赖低,性能影响小等。为了完整的实现数据库保护,从redo中分析DDL是很重要的一环。但由于DDL在日志中的记录方式较为复杂,解析较难且易错,因此目前大多产品不支持DDL分析,或者通过在库中创建触发器(修改了库)、定期查询系统表的方式获取,一般情况下,创建触发器、修改源库存在无法确定的影响,尤其是创建触发器,不但导致数据库性能下降,还可能导致数据错误,而定期查询则是一种效率低下、占用大量数据库IO的方案。
技术实现思路
为克服上述现有技术存在的不足,本专利技术之目的在于提供一种基于日志解析的DDL分析方法及装置,以完全基于日志redo分析从而实现DDL解析的目的。为达上述目的,本专利技术提出一种基于日志解析的DDL分析方法,包括如下步骤:步骤S1,连接数据库,从所述数据库中导出所需系统表的基本信息;步骤S2,读取重做日志文件redo,从读取的redo文件中分析出DLL事务及DML详细信息,对比匹配分析DLL事务中的详细信息与步骤S1中导出的所需系统表的基本信息,若出现匹配,则进入步骤S3,否则跳过当前事务,继续读取分析下一个事务;步骤S3,解析步骤S2得到的DLL事务,统计本DLL事务中对各系统表的DML操作类型及数量,根据预先学习确定的DLL事务的特征确定当前DDL事务的类型;步骤S4,返回步骤S2,直至所述重做日志文件redo读取完毕。优选地,所需系统表包括sys.obj$表、sys.tab$表、sys.col$表、sys.part$表。优选地,于步骤S2中,对比所述DLL事务中DML的对象号与步骤S1中导出的系统表对象号,若所述DLL事务中DML的对象号中出现了步骤S1中导出的系统表对象号,则进入步骤S3,若没有则跳过所述的DLL事务,继续读取redo文件分析并对比下一个事务。优选地,于步骤S2中,若读取的是在线日志并已读到最新redo末尾,则等待预设时长后重新尝试读取,如果不是末尾则继续分析,从读到的重做日志文件redo数据中分析出DLL事务及DML详细信息。优选地,于步骤S3之前,还包括如下步骤:步骤S0,运行解析过程读取到在线日志最新位置,保证当前库中没有其他事务,执行DDL事务,记录下本事务的日志中系统表的DML操作类型及数量,并选取有代表性的系统表及操作类型作为判断此DDL事务的特征,多次运行上述过程从而得到多个DLL事务的特征。优选地,于步骤S0中,进一步分析DML操作的具体数据内容,以此作为判断DLL事务的特征。为达到上述目的,本专利技术还提供一种基于日志解析的DDL分析装置,包括:系统表基本信息获取单元,用于连接数据库,从所述数据库中导出所需系统表的基本信息;重做日志文件读取对比单元,用于读取重做日志文件redo,从读取的redo数据中分析出DLL事务及DML详细信息,对比匹配分析DLL事务中的详细信息与所述系统表基本信息获取单元中导出的所需系统表的基本信息,若出现匹配,则进入DLL事务解析单元,否则跳过当前事务,继续读取分析下一个事务;DLL事务解析单元,用于解析所述重做日志文件读取对比单元得到的DLL事务,统计本DLL事务中对各个系统表的DML操作类型及数量,根据预先学习确定的DLL事务的特征确定当前DDL事务的类型。优选地,所述重做日志文件读取对比单元对比所述DLL事务中DML的对象号与系统表基本信息获取单元中导出的系统表对象号,若所述DLL事务中DML的对象号中出现了系统表基本信息获取单元中导出的系统表对象号,则进入所述DLL事务解析单元,若没有则跳过所述的DLL事务,继续读取redo文件分析并对比下一个事务。优选地,所述基于日志解析的DDL分析装置还包括:学习单元,用于运行解析过程读取到在线日志最新位置,保证当前库中没有其他事务,执行DDL操作,记录下本事务的日志中系统表的DML操作类型及数量,并选取有代表性的系统表及操作类型作为判断此DDL事务的特征,多次运行上述过程从而得到多个DLL事务的特征。优选地,所述学习单元还分析DML操作的具体数据内容,以此作为判断DLL事务的特征。与现有技术相比,本专利技术一种基于日志解析的DDL分析方法及装置通过先从数据库中导出所需系统表的基本信息,然后读取重做日志文件redo,从读取的redo数据中分析出DLL事务及DML详细信息,对比匹配分析DLL事务中的详细信息与步骤S1中导出的所需系统表的基本信息,若出现匹配,则解析得到的DLL事务,统计本DLL事务中对各个系统表的DML操作类型及数量,根据预先学习确定的DLL事务的特征确定当前DDL事务的类型,从而达到通过解析日志实现DDL事务分析的目的。附图说明图1为本专利技术一种基于日志解析的DDL分析方法的步骤流程图;图2为本专利技术一种基于日志解析的DDL分析装置的系统架构图;图3为本专利技术实施例之基于日志解析的DDL分析的流程图。具体实施方式以下通过特定的具体实例并结合附图说明本专利技术的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本专利技术的其它优点与功效。本专利技术亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本专利技术的精神下进行各种修饰与变更。在Oracle数据库中,Oracle的数据库对象的详细信息以数据表的形式存储在库中,例如sys.obj$表、sys.tab$表、sys.col$表、sys.ind$表等,其中sys.obj$表是oracle数据库字典表中的对象基础表,sys.obj$表中存储了对象的对象号、名称、所属用户号、类型、创建时间、修改时间等,sys.tab$表存储了所有表的对象号、部分属性值,sys.col$表用于保存表列的定义信息,其存储了所有表的对象号、列ID、列名称、列长度、列数据类型等,sys.ind$表存储了所有索引的对象号、所属表、创建修改时间等。所有系统表(如sys.obj$、sys.tab$等,系统表除包含上述列举的几个表外还有大量其他系统表)也是数据表,其基本信息如对象号、名称、列信息、索引信息等,也存储在系统表中,即系统表的结构信息也由系统表维护,同时也维护了用户数据表的结构信息,如sys.tab$是一个系统表,其对象号可以在sys.obj$中查询得到,其各个列的信息则可以在sys.col$中查询得到。一个DDL操作实际是对一个或多个系统表的一系列本文档来自技高网...

【技术保护点】
1.一种基于日志解析的DDL分析方法,包括如下步骤:/n步骤S1,连接数据库,从所述数据库中导出所需系统表的基本信息;/n步骤S2,读取重做日志文件redo,从读取的redo文件中分析出DLL事务及DML详细信息,对比匹配分析DLL事务中的详细信息与步骤S1中导出的所需系统表的基本信息,若出现匹配,则进入步骤S3,否则跳过当前事务,继续读取分析下一个事务;/n步骤S3,解析步骤S2得到的DLL事务,统计本DLL事务中对各系统表的DML操作类型及数量,根据预先学习确定的DLL事务的特征确定当前DDL事务的类型;/n步骤S4,返回步骤S2,直至所述重做日志文件redo读取完毕。/n

【技术特征摘要】
1.一种基于日志解析的DDL分析方法,包括如下步骤:
步骤S1,连接数据库,从所述数据库中导出所需系统表的基本信息;
步骤S2,读取重做日志文件redo,从读取的redo文件中分析出DLL事务及DML详细信息,对比匹配分析DLL事务中的详细信息与步骤S1中导出的所需系统表的基本信息,若出现匹配,则进入步骤S3,否则跳过当前事务,继续读取分析下一个事务;
步骤S3,解析步骤S2得到的DLL事务,统计本DLL事务中对各系统表的DML操作类型及数量,根据预先学习确定的DLL事务的特征确定当前DDL事务的类型;
步骤S4,返回步骤S2,直至所述重做日志文件redo读取完毕。


2.如权利要求1所述的一种基于日志解析的DDL分析方法,其特征在于:所需系统表包括sys.obj$表、sys.tab$表、sys.col$表、sys.part$表。


3.如权利要求2所述的一种基于日志解析的DDL分析方法,其特征在于:于步骤S2中,对比所述DLL事务中DML的对象号与步骤S1中导出的系统表对象号,若所述DLL事务中DML的对象号中出现了步骤S1中导出的系统表对象号,则进入步骤S3,若没有则跳过所述的DLL事务,继续读取redo文件分析并对比下一个事务。


4.如权利要求3所述的一种基于日志解析的DDL分析方法,其特征在于:于步骤S2中,若读取的是在线日志并已读到最新redo末尾,则等待预设时长后重新尝试读取,如果不是末尾则继续分析,从读到的重做日志文件redo数据中分析出DLL事务及DML详细信息。


5.如权利要求4所述的一种基于日志解析的DDL分析方法,其特征在于:于步骤S3之前,还包括如下步骤:
步骤S0,运行解析过程读取到在线日志最新位置,保证当前库中没有其他事务,执行DDL事务,记录下本事务的日志中系统表的DML操作类型及数量,并选取有代表性的系统表及操作类型作为判断此DDL事务的特征,多次运行上述过程从而得到多个DLL事务的特征...

【专利技术属性】
技术研发人员:崔梦华高志会周华江俊
申请(专利权)人:上海英方软件股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1