CN112764996B - 一种数据库容灾环境下对目标库的会话监控的方法及装置 - Google Patents
一种数据库容灾环境下对目标库的会话监控的方法及装置 Download PDFInfo
- Publication number
- CN112764996B CN112764996B CN202110109466.5A CN202110109466A CN112764996B CN 112764996 B CN112764996 B CN 112764996B CN 202110109466 A CN202110109466 A CN 202110109466A CN 112764996 B CN112764996 B CN 112764996B
- Authority
- CN
- China
- Prior art keywords
- session
- dml
- log
- database
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种数据库容灾环境下对目标库的会话监控的方法及装置,所述方法包括如下步骤:步骤S1,获取并初始化当前目标库已连接的会话并予以保存,建立会话id和建立会话的应用名之间的关联;步骤S2,获取重做日志,启动日志分析程序,从当前位置或指定位置对重做日志开始分析;步骤S3,通过所述重做日志分析用户会话,并保存会话信息至会话信息结构中;步骤S4,分析所述重做日志的DML信息,在保存DML信息的同时,保存DML操作数到相应的会话信息结构中;步骤S5,保存会话信息到文件或输出显示。
Description
技术领域
本发明涉及计算机数据库技术领域,特别是涉及一种数据库容灾环境下对目标库的会话监控的方法及装置。
背景技术
数据库是数据管理的有效技术,是由一批数据构成的有序集合,这些数据被存放在结构化的数据表里,数据表之间相互关联,反映客观事物间的本质联系,数据库能有效地帮助一个组织或企业科学地管理各类信息资源。
目前,在生产环境中为了满足容灾和读写分离等需求,经常会部署数据库同步软件,将源库实时同步到目标库。在数据库同步中,需要保证两边数据库的数据一致性,也就是表的数据一致,这就需要当源库的数据在实时变化,目标库也随之实时更新时,也就需要保证没有会话对目标库相应的表进行操作,因此,就需要对目标库的会话进行监控,其中,会话监控的难点在于如何在源库和目标库实时同步时分析目标库会话对哪些表进行了DML(Data Manipulation Language,数据操纵语言)操作。
目前,现在技术一般不会对会话进行监控,当导致数据不一致出现时,很难判断是同步软件出的问题,还是有会话对相应表进行了操作。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种数据库容灾环境下对目标库的会话监控的方法及装置,以实现在数据库实时同步过程中进行监控目标库所有会话所进行的DML操作的目的。
为达上述目的,本发明提出一种数据库容灾环境下对目标库的会话监控的方法,包括如下步骤:
步骤S1,获取并初始化当前目标库已连接的会话并予以保存,建立会话id和建立会话的应用名之间的关联;
步骤S2,获取重做日志,启动日志分析程序,从当前位置或指定位置对重做日志开始分析;
步骤S3,通过所述重做日志分析用户会话,并保存会话信息至会话信息结构中;
步骤S4,分析所述重做日志的DML信息,在保存DML信息的同时,保存DML操作数到相应的会话信息结构中
步骤S5,保存会话信息到文件或输出显示。
优选地,于步骤S1中,保存的会话信息包括获取的会话id、建立会话的应用名prog以及操作的DML数量,其中操作的DML数量初始化赋值为0。
优选地,于步骤S2中,所述当前位置指数据库当前写日志的位置,所述指定位置指通过配置文件指定的日志文件中的位置。
优选地,于步骤S4中,分析所述重做日志中的DML操作,当分析到DML操作时,通过会话的id确定相应的会话,则在保存DML操作信息的同时,保存DML操作数到相应的会话信息结构中。
优选地,所述DML操作指插入、删除以及修改操作。
优选地,所述会话信息结构通过一个map(int,sessionlog)进行映射保存,其第一项为会话id,第二项为sessionlog,sessionlog包括会话id、执行会话的应用名称prog,操作的表对象id以及DML操作的计数dmlcount。
为达到上述目的,本发明还提供一种数据库容灾环境下对目标库的会话监控的装置,包括:
初始化模块,用于获取并初始化当前目标库已连接的会话并予以保存,建立会话id和建立会话的应用名之间的关联;
日志分析启动模块,用于获取重做日志,启动日志分析程序,从当前位置或指定位置对重做日志开始分析;
日志分析模块,通过所述重做日志分析用户会话,并保存会话信息至会话信息结构中,并分析所述重做日志的DML信息,在保存DML信息的同时,保存DML操作数到相应的会话信息结构中;
会话输出模块,用于保存会话信息到文件或输出显示。
优选地,所述当前位置指数据库当前写日志的位置,所述指定位置指通过配置文件指定的日志文件中的位置。
优选地,所述日志分析模块分析所述重做日志中的DML操作,当分析到DML操作时,通过会话的id确定相应的会话,则在保存DML操作信息的同时,保存DML操作数到相应的会话信息结构中。
优选地,所述会话信息结构通过一个map(int,sessionlog)进行映射保存,其第一项是会话id,第二项为sessionlog,sessionlog包括会话id、执行会话的应用名称prog,操作的表对象id以及DML操作的计数dmlcount。
与现有技术相比,本发明一种数据库容灾环境下对目标库的会话监控的方法及装置通过获取并初始化当前目标库已连接的会话,然后获取重做日志,启动日志分析程序,从当前位置或指定位置对重做日志开始分析,根据所述重做日志中的会话信息,分析所述会话信息中的DML操作,当分析到DML操作时,保存DML操作信息的同时,保存DML操作数到相应的会话信息结构中,实现了在数据库实时同步过程中进行监控目标库所有会话所进行的DML操作的目的。
附图说明
图1为本发明一种数据库容灾环境下对目标库的会话监控的方法的步骤流程图;
图2为本发明一种数据库容灾环境下对目标库的会话监控的装置的系统架构图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种数据库容灾环境下对目标库的会话监控的方法的步骤流程图。如图1所示,本发明一种数据库容灾环境下对目标库的会话监控的方法,应用于目标库端,包括如下步骤:
步骤S1,初始化当前目标库已连接的会话并予以保存,建立会话id和建立会话的应用名之间的关联。
在本发明具体实施例中,通过数据库查询获取当前目标库已连接的会话,具体地说,这里的初始化则是在监控会话程序开启时查询当前数据库是否有连接的会话,查询获取的是会话信息,包括会话id(sid)、建立会话的应用名(prog)以及操作的DML数量,其中操作的DML数量初始化赋值为0,并将查询获取的会话信息保存在内存中,即,初始化的目的则是将会话id(sid)和建立会话的应用名(prog)建立关联。由于在监控程序启动后,会从当前位置或指定位置开始分析redo日志,但其实往往当前数据库的会话可能在当前分析点以前就已经连接了,因此必须进行初始化,若不初始化,则后续分析到该会话操作DML时,则无法确定是哪个会话,例如在1点10分的时候有一个会话(sid=1)连接到数据库(这时数据库会把会话信息记录到redo日志中)并一直没断开,进行DML操作,假设当前的分析点是在1点30分,那么sid=1的会话就需要初始化了(因为sid=1是在1点10分写入日志的,而分析点是1点30分,所以1点30分前的日志就不会进行分析,导致无法初始化这个会话),不然当分析到sid=1的会话进行的操作就无法确定是哪个应用程序操作的。在本发明中,初始化最主要的目的是把sid和建立会话的应用名建立关联(只有通过分析会话连接时的日志才能解析到,如果过了这段日志,就无法解析到他们的关联性了,以后的日志只能分析到sid,但无法知道是哪个应用在操作,本发明通过初始化查询数据库获取到当前还在连接的会话的sid和建立会话的应用名prog),也就是说,不初始化虽可以进行分析,但结果只知道sid和操作DML的数量,无法知道具体哪个应用程序操作的。
步骤S2,获取重做(redo)日志,启动日志分析程序,从当前位置或指定位置对重做(redo)日志开始分析。
在数据库中,重做(redo)日志记录着数据库所发生的变化,例如当进行一条DML语句时,若提交该DML语句,则会先写入重做(redo)日志中。当数据库出现问题时,则可以根据重做(redo)日志进行恢复。
具体地,启动日志分析程序,从当前位置或指定位置对日志开始分析,所述当前位置是指数据库当前写日志的位置,即查询数据库时得到的位置,所述指定位置则是通过配置文件指定的日志文件中的位置。
步骤S3,通过所述重做(redo)日志分析用户会话,并保存会话信息至会话信息结构中。
对于数据库来说,每当有一个新的会话连接到数据库时,都会记录一条记录并保存到redo日志中(例如会话id(sid),建立会话的应用名prog),因此,通过对所述重做(redo)日志分析,获取会话信息存储至会话信息结构中。
在本发明中,所述会话信息结构通过一个map(int,sessionlog)进行映射保存,其第一项是sid(会话id),第二项是sessionlog,sessionlog包括sid(会话id),prog(执行会话的应用名称),objn(操作的表对象id),dmlcount(操作DML(包括插入,删除,修改)的计数)。
步骤S4,分析所述重做(redo)日志的DML信息,在保存DML信息的同时,保存DML操作数到相应的会话信息结构中。
具体地,分析redo日志中的DML操作,所述DML操作指插入(insert),删除(delete),改(update)操作,每条DML记录都会记录会话的id(sid),当分析到DML操作时,通过会话的id(sid)就能知道是哪个会话的操作,在保存DML操作信息的同时(这里保存DML操作信息的目的是将其从redo日志中分析出来保存在内存或文件里,以便用户了解有哪些会话进行了DML操作),保存DML操作数到相应的会话信息结构中,
步骤S5,保存会话信息到文件或输出显示。
图2为本发明一种数据库容灾环境下对目标库的会话监控的装置的系统架构图。如图1所示,本发明一种数据库容灾环境下对目标库的会话监控的装置,应用于目标库端,包括:
初始化模块201,用于初始化当前目标库已连接的会话并予以保存,建立会话id和建立会话的应用名之间的关联。
在本发明具体实施例中,初始化模块201通过数据库查询获取当前目标库已连接的会话,并对其初始化后予以保存。具体地说,这里的初始化则是在监控会话程序开启时查询当前数据库是否有连接的会话,查询获取的是会话信息,包括会话id(sid)、建立会话的应用名(prog)以及操作的DML数量,其中操作的DML数量初始化赋值为0,并将查询获取的会话信息保存在内存中,即,初始化的目的则是将会话id(sid)和建立会话的应用名(prog)建立关联。
日志分析启动模块202,用于获取重做(redo)日志,启动日志分析程序,从当前位置或指定位置对重做(redo)日志开始分析。
在数据库中,重做(redo)日志记录着数据库所发生的变化,例如当进行一条DML语句时,若提交该DML语句,则会先写入重做(redo)日志中。当数据库出现问题时,则可以根据重做(redo)日志进行恢复。
具体地,日志分析启动模块202用于启动日志分析程序,从当前位置或指定位置对日志开始分析,所述当前位置是指数据库当前写日志的位置,即查询数据库时得到的位置,所述指定位置则是通过配置文件指定的日志文件中的位置。
日志分析模块203,通过所述重做(redo)日志分析用户会话,并保存会话信息至会话信息结构中,并分析所述重做(redo)日志的DML信息,在保存DML信息的同时,保存DML操作数到相应的会话信息结构中。
对于数据库来说,每当有一个新的会话连接到数据库时,都会记录一条记录并保存到redo日志中(比如会话id(sid),建立会话的应用名prog),因此,日志分析模块203通过对所述重做(redo)日志分析,获取会话信息存储至会话信息结构中。
在本发明中,所述会话信息结构通过一个map(int,sessionlog)进行映射保存,其第一项是sid(会话id),第二项是sessionlog,sessionlog包括sid(会话id),prog(执行会话的应用名称),objn(操作的表对象id),dmlcount(操作DML(包括插入,删除,修改)的计数)。
日志分析模块203分析redo日志中的DML操作,所述DML操作指插入(insert),删除(delete),改(update)操作,每条DML记录都会记录会话的id(sid),当分析到DML操作时,通过会话的id(sid)就能知道是哪个会话的操作,在保存DML操作信息的同时(这里保存DML操作信息的目的是将其从redo日志中分析出来保存在内存或文件里,以便用户了解有哪些会话进行了DML操作),保存DML操作数到相应的会话信息结构中,
会话输出模块204,用于保存会话信息到文件或输出显示。
实施例
步骤1,通过数据库查询获取目标库当前已连接的会话,并进行初始化,并保存。
步骤2,启动日志分析程序,从当前或指定位置对redo日志开始分析。
步骤3,通过redo日志分析用户会话,保存会话信息,比如会话id(sid)、该会话的应用程序名prog及对DML操作的数量(初始化为0)。
对数据库操作时,会将会话信息保存在redo日志中,比如sid和操作了什么表等记录在日志中,通过分析日志得以获取到这些会话信息。
步骤4,分析redo日志的DML信息,每条DML日志中包含会话id(sid),通过会话id(sid)与对应的会话联系起来,并在保存DML信息的同时,保存DML操作数到相应的会话(通过sid)信息结构中。
步骤5,保存会话信息到文件或输出到屏幕显示。
步骤6,重复步骤3-步骤5,直至日志分析程序退出。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (10)
1.一种数据库容灾环境下对目标库的会话监控的方法,包括如下步骤:
步骤S1,获取并初始化当前目标库已连接的会话并予以保存,建立会话id和建立会话的应用名之间的关联;
步骤S2,获取重做日志,启动日志分析程序,从当前位置或指定位置对重做日志开始分析;
步骤S3,通过所述重做日志分析用户会话,并保存会话id,执行会话的应用名称prog,至会话信息结构中;
步骤S4,分析所述重做日志的DML信息,在保存DML信息的同时,保存DML操作数到相应的会话信息结构中;
步骤S5,保存会话信息到文件或输出显示。
2.如权利要求1所述的一种数据库容灾环境下对目标库的会话监控的方法,其特征在于:于步骤S1中,保存的会话信息包括获取的会话id、建立会话的应用名prog以及操作的DML数量,其中操作的DML数量初始化赋值为0。
3.如权利要求1所述的一种数据库容灾环境下对目标库的会话监控的方法,其特征在于:于步骤S2中,所述当前位置指数据库当前写日志的位置,所述指定位置指通过配置文件指定的日志文件中的位置。
4.如权利要求1所述的一种数据库容灾环境下对目标库的会话监控的方法,其特征在于:于步骤S4中,分析所述重做日志中的DML操作,当分析到DML操作时,通过会话的id确定相应的会话,则在保存DML操作信息的同时,保存DML操作数到相应的会话信息结构中。
5.如权利要求4所述的一种数据库容灾环境下对目标库的会话监控的方法,其特征在于:所述DML操作指插入、删除以及修改操作。
6.如权利要求5所述的一种数据库容灾环境下对目标库的会话监控的方法,其特征在于:所述会话信息结构通过一个map(int,sessionlog)进行映射保存,其第一项为会话id,第二项为sessionlog,sessionlog包括会话id、执行会话的应用名称prog,操作的表对象id以及DML操作的计数dmlcount。
7.一种数据库容灾环境下对目标库的会话监控的装置,包括:
初始化模块,用于获取并初始化当前目标库已连接的会话并予以保存,建立会话id和建立会话的应用名之间的关联;
日志分析启动模块,用于获取重做日志,启动日志分析程序,从当前位置或指定位置对重做日志开始分析;
日志分析模块,通过所述重做日志分析用户会话,并保存会话id,执行会话的应用名称prog至会话信息结构中,并分析所述重做日志的DML信息,在保存DML信息的同时,保存DML操作数到相应的会话信息结构中;
会话输出模块,用于保存会话信息到文件或输出显示。
8.如权利要求7所述的一种数据库容灾环境下对目标库的会话监控的装置,其特征在于:所述当前位置指数据库当前写日志的位置,所述指定位置指通过配置文件指定的日志文件中的位置。
9.如权利要求7所述的一种数据库容灾环境下对目标库的会话监控的装置,其特征在于:所述日志分析模块分析所述重做日志中的DML操作,当分析到DML操作时,通过会话的id确定相应的会话,则在保存DML操作信息的同时,保存DML操作数到相应的会话信息结构中。
10.如权利要求7所述的一种数据库容灾环境下对目标库的会话监控的装置,其特征在于:所述会话信息结构通过一个map(int,sessionlog)进行映射保存,其第一项是会话id,第二项为sessionlog,sessionlog包括会话id、执行会话的应用名称prog,操作的表对象id以及DML操作的计数dmlcount。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110109466.5A CN112764996B (zh) | 2021-01-27 | 2021-01-27 | 一种数据库容灾环境下对目标库的会话监控的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110109466.5A CN112764996B (zh) | 2021-01-27 | 2021-01-27 | 一种数据库容灾环境下对目标库的会话监控的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764996A CN112764996A (zh) | 2021-05-07 |
CN112764996B true CN112764996B (zh) | 2023-01-17 |
Family
ID=75706047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110109466.5A Active CN112764996B (zh) | 2021-01-27 | 2021-01-27 | 一种数据库容灾环境下对目标库的会话监控的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764996B (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8086564B2 (en) * | 2007-12-12 | 2011-12-27 | Oracle International Corporation | Techniques for the logical replication of high-level procedures |
US9438672B2 (en) * | 2014-02-14 | 2016-09-06 | Prakash Khemani | Method for client specific database change propagation |
JP6556851B2 (ja) * | 2015-09-08 | 2019-08-07 | 株式会社東芝 | データベースシステム、サーバ装置、プログラムおよび情報処理方法 |
CN106412071A (zh) * | 2016-10-08 | 2017-02-15 | 中国工商银行股份有限公司 | 一种数据同步方法及装置 |
US11010267B2 (en) * | 2017-09-22 | 2021-05-18 | Oracle International Corporation | Method and system for automatic maintenance of standby databases for non-logged workloads |
US10949413B2 (en) * | 2017-09-29 | 2021-03-16 | Oracle International Corporation | Method and system for supporting data consistency on an active standby database after DML redirection to a primary database |
CN108845915A (zh) * | 2018-07-02 | 2018-11-20 | 山东浪潮商用系统有限公司 | 一种数据库数据监控方法 |
CN110188114B (zh) * | 2019-05-27 | 2021-09-10 | 上海达梦数据库有限公司 | 一种数据操作的优化方法、装置、系统、设备和存储介质 |
CN110427423A (zh) * | 2019-06-28 | 2019-11-08 | 苏州浪潮智能科技有限公司 | 一种避免数据库会话中断的方法、设备及可读介质 |
-
2021
- 2021-01-27 CN CN202110109466.5A patent/CN112764996B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112764996A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11604782B2 (en) | Systems and methods for scheduling concurrent summarization of indexed data | |
CN102236705B (zh) | 数据库重放的细粒度同步 | |
EP3396555B1 (en) | Method and system for automated enterprise testing system | |
KR102423125B1 (ko) | 데이터베이스 동기화 | |
US8805777B2 (en) | Data record collapse and split functionality | |
US11126938B2 (en) | Targeted data element detection for crowd sourced projects with machine learning | |
KR20040088397A (ko) | 트랜잭션적으로 일관성있는 트리거 기반 데이터베이스변경 추적 방법 및 시스템 | |
CN105426234B (zh) | 数据库死锁检测方法及装置 | |
US20080195670A1 (en) | System and method for log management | |
US11436133B2 (en) | Comparable user interface object identifications | |
US20180267888A1 (en) | Automatic regression identification | |
US20170293551A1 (en) | Separating test verifications from test executions | |
US10394844B2 (en) | Integrating co-deployed databases for data analytics | |
US7072912B1 (en) | Identifying a common point in time across multiple logs | |
US11221862B2 (en) | Capturing data from a live web application to populate a demo application | |
WO2022127557A1 (zh) | 代码分析的方法和相关设备 | |
CN115292307A (zh) | 数据同步系统、方法及相应计算机设备和存储介质 | |
CN112764996B (zh) | 一种数据库容灾环境下对目标库的会话监控的方法及装置 | |
CN107168822B (zh) | Oracle streams的异常修复系统及方法 | |
CN114816470A (zh) | 元数据库的管理方法、装置、电子设备和介质 | |
US20040243558A1 (en) | Quiescing work bounded by application transactions consisting of multiple relational database transactions | |
CN109145000B (zh) | 一种工业实时数据库opc ua数据接口实现方法 | |
CN113742415A (zh) | 增量数据同步方法、装置及电子设备 | |
CN109710688A (zh) | 一种数据实时比对校验方法及消息中间件 | |
CN113434509B (zh) | 一种增量索引的更新方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |