一种数据库的日志优化分析方法及装置与流程

文档序号:19155103发布日期:2019-11-16 00:38阅读:327来源:国知局
一种数据库的日志优化分析方法及装置与流程

本发明涉及数据库日志分析技术领域,具体涉及一种数据库的日志优化分析方法及装置。



背景技术:

oracle作为数据库软件,应用范围非常广泛,其中oracle12c作为其较新版本,提出了cdb和pdb的概念。cdb全称为containerdatabase,即数据库容器,它由多个pdb组成,并统一管理。pdb全称为pluggabledatabase,即插件数据库,它作为数据库容器的组成部分,可随时从数据库容器中进入退出,并且不影响数据库对外提供服务。由于这种不同数据库类型的引入,导致传统的数据库日志分析方法并不十分适合。传统的数据库日志分析方法会针对每个数据库给出单独的日志分析线程,如果一个cdb中有多个pdb,那么就需要每个pdb的日志分析线程都去读取解析此pdb对应的日志,而实际解析的归档日志却是同一份,这就造成了资源的浪费,降低了日志分析效率,特别是在一个cdb有多个pdb的情况下。由于cdb由多个pdb组成,而其日志管理系统仅针对cdb,在常用的数据库日志捕获模块中就必须针对每个pdb给出一个日志捕获模块对其进行读取、解析,在解析过程中删除掉不属于自己的部分。但是,这样的日志捕获方式,有一个非常突出的问题,就是冗余读取,只有在读取所有日志后,每个捕获模块才能过滤掉不属于自己的部分;在这样的设计中,造成了磁盘读写的压力,不利于服务器的运行,也不利于数据库同步效率。



技术实现要素:

本发明的目的在于克服上述技术不足,提供一种数据库的日志优化分析方法及装置,解决现有技术中数据库容器日志分析时冗余读取,造成磁盘读写压力,不利于服务器运行的技术问题。

为达到上述技术目的,本发明的技术方案提供一种数据库的日志优化分析方法,用于分析包含多个插件数据库的数据库容器的日志,包括以下步骤:

创建与所述插件数据库数量相等且一一对应的多个日志捕获线程,创建虚拟日志捕获线程;

通过所述虚拟日志捕获线程捕获所述数据库容器的归档日志;

对所述归档日志中各日志记录的归属进行识别,并将各所述日志记录投递至其所属的日志捕获线程;

各所述日志捕获线程对相应的日志记录进行解析。

本发明还提供一种数据库的日志优化分析装置,包括处理器以及存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述数据库的日志优化分析方法。

本发明还提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现所述数据库的日志优化分析方法。

与现有技术相比,本发明的有益效果包括:本发明首先创建虚拟日志捕获线程,专门对归档日志进行读取,然后将日志记录投递到相应的日志捕获线程,每个插件数据库的日志捕获线程对自身的日志记录进行解析。通过虚拟日志捕获线程实现归档日志的读取以及日志记录的分配投递,减少日志的冗余读取,减少了磁盘压力,加快数据库同步效率。

附图说明

图1是本发明提供的数据库的日志优化分析方法一实施方式的流程图;

图2是现有技术中插件数据库日志管理示意图;

图3是现有技术中日志分析时日志读取示意图;

图4是本发明提供的数据库的日志优化分析方法一实施方式的日志读取分配示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

实施例1

如图1所示,本发明的实施例1提供了数据库的日志优化分析方法,用于分析包含多个插件数据库的数据库容器的日志,包括以下步骤:

s1、创建与所述插件数据库数量相等且一一对应的多个日志捕获线程,创建虚拟日志捕获线程;

s2、通过所述虚拟日志捕获线程捕获所述数据库容器的归档日志;

s3、对所述归档日志中各日志记录的归属进行识别,并将各所述日志记录投递至其所属的日志捕获线程;

s4、各所述日志捕获线程对相应的日志记录进行解析。

以下简称数据库容器为cdb,简称插件数据库为pdb。如图2所示,在cdb中可以有多个pdb,其中存在一个根容器pdb$root、一个种子容器pdb$seed和多个pdbs。所有的pdb共用一个硬件系统资源。根容器pdb$root用来对每个pdb进行统一管理,种子容器pdb$seed作为新插入的pdb,即newpdb的模板而存在。pdb用来存放数据库,数据库可以插入或拔出。pdb虽然有单独的数据库数据文件,但是其归档日志由cdb统一管理,且存放在相同的日志文件中。

由于cdb由多个pdb组成,而其日志管理系统仅针对cdb,采用现有的数据库日志捕获模块就必须针对每个pdb给出一个日志捕获线程对其进行读取、解析,在解析过程中删除掉不属于自己的部分,如图3所示。

如图4所示,本发明针对现有技术中存在的多插件数据库共用同一数据库日志的特点,在针对n个插件数据库创建相应的n个日志捕获线程pdb(1)、pdb(2)、···、pdb(n)的同时,虚拟出一个日志捕获模块pdb(n+1),专门对归档日志进行读取;虚拟日志捕获线程pdb(n+1)负责读取磁盘中的归档日志,再将日志记录投递到相应的日志捕获线程。每个pdb的日志捕获线程只会接收到自身的日志记录,只负责对其自身的日志记录进行解析。通过此方法第一减少了日志的冗余读取,第二减小了磁盘io压力,加快了数据库数据同步的效率。

优选的,如图4所示,对所述归档日志中各日志记录的归属进行识别,具体为:

根据各所述日志记录中记录的插件数据库的识别号id进行归属识别。

虚拟日志捕获模块负责读取磁盘中的归档日志,再根据pdb的识别号id对当前日志记录的归属进行识别,投递到与当前日志记录的pdb识别号id相同的pdb的日志捕获线程。

优选的,创建多个与插件数据库数量相等且一一对应的日志捕获线程,具体为:

读取所述数据库容器的配置文件,获取所述数据库容器的配置信息,根据所述数据库容器的配置信息获取所述数据库容器的归档文件位置,根据所述数据库容器的归档文件位置创建所述虚拟日志捕获线程。

读取配置文件,获取所有pdb的配置信息;根据pdb的配置信息获取pdb归档文件位置。

根据n个pdb的归档文件位置创建n个日志捕获线程,n个日志捕获线程与n各pdb一一对应。

优选的,创建虚拟日志捕获线程,具体为:

读取所述数据库容器的配置文件,获取各所述插件数据库的配置信息,根根据所述插件数据库的配置信息获取所述插件数据库的归档文件位置,根据所述插件数据库的归档文件位置创建所述日志捕获线程。

读取配置文件,获取cdb的配置信息;根据cdb的配置信息获取cdb归档文件位置,创建一个虚拟日志捕获线程,不对应任何pdb。

各所述日志捕获线程对相应的日志记录进行解析,具体为:

根据初始化时的表定义,将所述日志记录的结构化数据还原为可执行sql文本。

由于包含多个插件数据库的数据库容器的日志中只包含对数据库数据的变更,不包含sql文本。因此,我们需要根据日志给出的结构化信息,还原出可执行的sql文本。分析的日志字段结构包含有:redo字节地址、记录长度、系统改变号、改变的日期和时间、改变向量等。

具体的,在数据同步时,源端数据库装载初始数据至目的端数据库,并将需要同步的表定义存储,源端数据库读取日志,根据初始化时的表定义将日志记录中的结构化数据还原成可执行的sql文本,并发送至目的端数据库,目的端数据库执行还原的sql文本,完成数据同步过程。

实施例2

本发明的实施例2提供了数据库的日志优化分析装置,包括处理器以及存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现以上任一实施例提供的数据库的日志优化分析方法。

具体的,数据库的日志优化分析方法为:

创建与所述插件数据库数量相等且一一对应的多个日志捕获线程,创建虚拟日志捕获线程;

通过所述虚拟日志捕获线程捕获所述数据库容器的归档日志;

对所述归档日志中各日志记录的归属进行识别,并将各所述日志记录投递至其所属的日志捕获线程;

各所述日志捕获线程对相应的日志记录进行解析。

本发明提供的数据库的日志优化分析装置,用于实现数据库的日志优化分析方法,因此,上述数据库的日志优化分析方法所具备的技术效果,数据库的日志优化分析装置同样具备,在此不再赘述。

实施例3

本发明的实施例3提供了计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现以上任一实施例提供的数据库的日志优化分析方法。

具体的,数据库的日志优化分析方法为:

创建与所述插件数据库数量相等且一一对应的多个日志捕获线程,创建虚拟日志捕获线程;

通过所述虚拟日志捕获线程捕获所述数据库容器的归档日志;

对所述归档日志中各日志记录的归属进行识别,并将各所述日志记录投递至其所属的日志捕获线程;

各所述日志捕获线程对相应的日志记录进行解析。

本发明提供的计算机存储介质,用于实现数据库的日志优化分析方法,因此,上述数据库的日志优化分析方法所具备的技术效果,计算机存储介质同样具备,在此不再赘述。

以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。

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