一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

Oracle数据库的日志断点和日志文本数据采集方法与流程

2022-12-13 20:49:17 来源:中国专利 TAG:

oracle数据库的日志断点和日志文本数据采集方法
技术领域
1.本发明涉及计算机技术领域,具体提供一种oracle数据库的日志断点、日志文本数据采集方法、装置及介质。


背景技术:

2.从oracle数据库到其它数据库(例如mysql数据库)的异构数据库的数据同步过程中,包括oracle数据库的数据解析和存储在mysql数据库中两个步骤。针对第一个步骤,可以采用oracle开发的logminer来帮助实现日志文本数据的解析归档。
3.但是在日志文本数据解析过程中,会由于某些原因(如线程down机或人为重启等)导致出现解析线程中断的情况。这时,要么就需要从头开始对日志文本数据进行重新解析,这种情况下,就可能会导致存在已经解析过的日志文本数据被大量重复解析的情况;要么根据oracle实际产生的scn重新开始解析,则可能会导致一些日志文本数据被遗漏,未被解析的情况。
4.在申请号为cn201810150258.8,公开号为cn110162448a,专利名称为日志采集的方法和装置的专利申请中公开了保存日志采集时的采集子节点数,以便于准确快速地确定某一日志在前一次采集时的断点位置,以实现断点续采的方案。但是该方案在实现断点续采时需要将解析的日志先进行本地存储,再进行解析,解析完成后将对应的scn状态进行修改。当解析进程进行重启时,重复解析原先的日志文件时,scn对应的日志文件可能需要整个进行重复解析,解析效率低。
5.相应地,本领域需要一种新的日志断点续传采集方案来解决上述问题。


技术实现要素:

6.为了克服上述缺陷,提出了本发明,以提供解决或至少部分地解决日志文本数据断点续采过程中解析效率低,容易出现日志文本数据被遗漏解析的问题。
7.在第一方面,本发明提供一种oracle数据库的日志断点采集方法,所述方法包括:
8.根据解析线程对oracle logminer产生的每条日志文本数据的解析结果,获取每条日志文本数据的启动scn;
9.每间隔预设时间,将当前解析完成的最后一条日志文本数据的启动scn存储至预设的分布式数据库中。
10.在上述oracle数据库的日志断点采集方法的一个技术方案中,所述根据解析线程对oracle logminer产生的每条日志文本数据的解析结果,获取每条日志文本数据的启动scn,包括:
11.应用所述解析线程对所述日志文本数据进行解析,获取所述日志文本数据的解析结果;
12.根据所述解析结果,获取所述日志文本数据的启动scn;
13.将所述日志文本数据的启动scn存储至消息队列中。
14.在上述oracle数据库的日志断点采集方法的一个技术方案中,所述每间隔预设时间,将当前解析完成的最后一条日志文本数据的启动scn存储至预设的分布式数据库中,包括:
15.每间隔预设时间,从所述消息队列中读取当前解析完成的最后一条日志文本数据的启动scn,并存储至所述分布式数据库中。
16.在上述oracle数据库的日志断点采集方法的一个技术方案中,所述方法还包括:
17.当当前解析完成的最后一条日志文本数据的启动scn未存储成功时,人为设定一个启动scn作为最后一条日志文本数据的启动scn。
18.在上述oracle数据库的日志断点采集方法的一个技术方案中,所述将最后一条日志文本数据的启动scn存储至预设的分布式数据库中,还包括:
19.将所述最后一条日志文本数据的启动scn存储至所述分布式数据库中并覆盖所述分布式数据库中在先存储的启动scn
20.在第二方面,本发明提供一种oracle数据库的日志文本数据采集方法,其特征在于,所述方法包括:
21.在应用解析线程对oracle logminer产生的日志文本数据进行解析时,若所述解析线程重启,读取预设的分布式数据库中存储所述解析线程重启前解析获得的最后一条日志文本数据的启动scn;所述最后一条日志文本数据的启动scn根据上述权利要求1至5中任一项所述的oracle数据库的日志断点采集方法获得;
22.将所述启动scn对应的数据位置作为所述解析线程重启后的日志文本数据的起始位置;
23.根据所述起始位置对每条日志文本数据进行解析,获取每条日志文本数据的解析结果;
24.根据所述解析结果获取业务应用数据,以实现oracle日志文本数据的采集。
25.在上述日志文本数据采集方法的一个技术方案中,所述解析结果包括每条日志文本数据的待处理业务数据和启动scn;
26.所述方法还包括:
27.将每条日志文本数据的解析获得的启动scn存储至消息队列中。
28.在上述日志文本数据采集方法的一个技术方案中,所述根据所述解析结果获取业务应用数据,包括:
29.对所述待处理业务数据进行业务处理,获得业务应用数据;
30.将所述业务应用数据存储至消息队列中,以待消费者进行消费。
31.在第三方面,提供一种控制装置,该控制装置包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行上述oracle数据库的日志断点采集方法的技术方案中任一项技术方案所述的oracle数据库的日志断点采集方法或上述oracle数据库的日志文本数据采集方法的技术方案中任一项技术方案所述的oracle数据库的日志文本数据采集方法。
32.在第四方面,提供一种计算机可读存储介质,该计算机可读存储介质其中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行上述oracle数据库的日志断点采集方法的技术方案中任一项技术方案所述的oracle数据库的日志断点采集方法或上
述oracle数据库的日志文本数据采集方法的技术方案中任一项技术方案所述的oracle数据库的日志文本数据采集方法。
33.本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
34.在实施本发明的技术方案中,本发明能够定时将解析获得的oracle logminer产生的最后一条日志文本数据的启动scn保存至预设的分布式数据库中。当解析线程重启时,可以读取分布式数据库中存储的解析线程重启前获得的最后一条日志文本数据的启动scn,并将该启动scn作为解析线程重启后的日志文本数据的起始位置,来对日志文本数据进行解析,以实现oracle日志文本数据的采集。通过上述配置方式,本发明能够避免在解析线程由于某些原因重启时,需要将已经解析的日志文本数据进行重复解析的情况,也避免了解析线程重新启示后,一些日志文本数据被遗漏的情况。且本发明保存启动scn的方法不需要存储日志文本数据,在避免日志文本数据遗漏的前提下,有效地提升了的oracle数据库的日志文本数据采集效率。
附图说明
35.参照附图,本发明的公开内容将变得更易理解。本领域技术人员容易理解的是:这些附图仅仅用于说明的目的,而并非意在对本发明的保护范围组成限制。其中:
36.图1是根据本发明的一个实施例的oracle数据库的日志断点采集方法的主要步骤流程示意图;
37.图2是根据本发明的一个实施例的oracle数据库的日志文本数据采集方法的主要步骤流程示意图;
38.图3是根据本发明实施例的一个具体示例的oracle数据库的日志文本数据采集方法的主要步骤流程示意图。
具体实施方式
39.下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
40.在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“a和/或b”表示所有可能的a与b的组合,比如只是a、只是b或者a和b。术语“至少一个a或b”或者“a和b中的至少一个”含义与“a和/或b”类似,可以包括只是a、只是b或者a和b。单数形式的术语“一个”、“这个”也可以包含复数形式。
41.参阅附图1,图1是根据本发明的一个实施例的oracle数据库的日志断点采集方法的主要步骤流程示意图。如图1所示,本发明实施例中的oracle数据库的日志断点采集方法主要包括下列步骤s101-步骤s102。
42.步骤s101:根据解析线程对oracle logminer产生的每条日志文本数据的解析结
果,获取每条日志文本数据的启动scn。
43.在本实施例中,可以应用解析线程对oracle logminer产生的日志文本数据进行解析,根据解析结果,获取日志文本数据的启动scn。其中,scn(system change number,系统修订号)是当oracle数据库更新后,由dbms(database management system,数据库管理系统)自动维护去累积递增的一个数字。在oracle数据库中,有四种scn,分别为:系统检查点scn、数据文件检查点scn、启动scn、终止scn。在本实施例中,需要获取的是每条日志文本数据的启动scn。logminer是oracle公司提供的一个分析工具,使用该工具可以轻松获得oracle归档日志文件中的具体内容。
44.一个实施方式中,解析线程可以为单条解析线程和批量解析线程。
45.步骤s102:每间隔预设时间,将当前解析完成的最后一条日志文本数据的启动scn存储至预设的分布式数据库中。
46.在本实施例中,可以每间隔预设时间,将当前解析完成的最后一条日志文本数据的启动scn存储至预设的分布式数据库中。
47.一个实施方式中,预设时长可以为5分钟。
48.一个实施方式中,分布式数据库可以为zookeeper。其中,zookeeper是分布式数据库的一种,其主要解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
49.基于上述步骤s101-步骤s102,本发明实施例能够定时将解析线程对oracle logminer产生的最后一条日志文本数据进行解析获得的启动scn保存至预设的分布式数据库中,使得在任何时刻能够有效获取解析线程解析完成的日志文本数据的启动scn。
50.下面对步骤s101和步骤s102作进一步地说明。
51.在本发明实施例的一个实施方式中,步骤s101可以进一步包括以下步骤s1011至步骤s1013:
52.步骤s1011:应用解析线程对日志文本数据进行解析,获取日志文本数据的解析结果。
53.在本实施方式中,可以先应用解析线程对日志文本数据进行解析,以获取每条日志文本数据的解析结果。其中,解析结果中可以包括每条日志文本数据的待处理业务数据和启动scn。
54.步骤s1012:根据解析结果,获取日志文本数据的启动scn。
55.步骤s1013:将日志文本数据的启动scn存储至消息队列中。
56.在本实施方式中,可以将每条日志文本数据的解析结果存储至消息队列中,即消息队列中存储着每条日志文本数据的待处理业务数据和启动scn。
57.一个实施方式中,消息队列可以为kafka。
58.在本发明实施例的一个实施方式中,步骤s102可以进一步包括以下步骤s1021:
59.步骤s1021:每间隔预设时间,从消息队列中读取当前解析完成的最后一条日志文本数据的启动scn,并存储至分布式数据库中。
60.在本实施方式中,每间隔预设时间,可以从消息队列中读取当前解析完成的最后一条日志文本数据的启动scn,并将其存储至分布式数据库中。
61.一个实施方式中,当当前解析完成的最后一条日志文本数据的启动scn未存储成
功时,人为设定一个启动scn作为最后一条日志文本数据的启动scn。
62.一个实施方式中,在将最后一条日志文本数据的启动scn存储至分布式数据库中时,覆盖分布式数据库中在先存储的启动scn。也就是说,分布数据库中仅存储一条日志文本数据的启动scn,该启动scn是最后存储的启动scn。
63.进一步,本发明还提供一种oracle数据库的日志文本数据采集方法。
64.参阅附图2,图2是根据本发明的一个实施例的oracle数据库的日志文本数据采集方法的主要步骤流程示意图。如图2所示,本发明实施例中的oracle数据库的日志文本数据采集方法主要包括下列步骤s201-步骤s204。
65.步骤s201:在应用解析线程对oracle logminer产生的日志文本数据进行解析时,若解析线程重启,读取预设的分布式数据库中存储解析线程重启前解析获得的最后一条日志文本数据的启动scn;其中,最后一条日志文本数据的启动scn根据上述oracle数据库的日志断点采集方法实施例获得。
66.在本实施例中,如果解析线程由于某些原因(如解析线程down机或者人为原因)重启时,可以从预设的分布式数据库中读取存储的解析线程重启前的最后一条日志文本数据的启动scn。
67.一个实施方式中,解析线程可以为单条解析线程,也可以为批量解析线程。
68.一个实施方式中,分布式数据库可以为zookeeper。
69.步骤s202:将启动scn对应的数据位置作为解析线程重启后的日志文本数据的起始位置。
70.在本实施例中,可以将获取的启动scn对应的数据位置作为解析线程重启后的日志文本数据的起始位置,即,根据启动scn确定解析线程重启后的日志文本数据的起始位置。
71.步骤s203:根据起始位置对每条日志文本数据进行解析,获取每条日志文本数据的解析结果。
72.在本实施例中,可以从起始位置开始对oracle logminer产生的每条日志文本数据进行解析,获取解析结果。
73.一个实施方式中,解析结果可以包括每条日志文本数据对应的待处理业务数据和启动scn。
74.步骤s204:根据解析结果获取业务应用数据,以实现oracle日志文本数据的采集。
75.在本实施例中,可以根据解析结果来获取业务应用数据,以实现对oracle日志文本数据的采集。
76.基于上述步骤s201-步骤s204,本发明实施例当解析线程重启时,可以读取分布式数据库中存储的解析线程重启前获得的最后一条日志文本数据的启动scn,并将该启动scn作为解析线程重启后的日志文本数据的起始位置,来对日志文本数据进行解析,以实现oracle日志文本数据的采集。通过上述配置方式,本发明能够避免在解析线程由于某些原因重启时,需要将已经解析的日志文本数据进行重复解析的情况,也避免了解析线程重新启示后,一些日志文本数据被遗漏的情况。且本发明保存启动scn的方法不需要存储日志文本数据,在避免日志文本数据遗漏的前提下,有效地提升了的oracle数据库的日志文本数据采集效率。
77.在本发明实施例的一个实施方式中,本发明除了可以包括上述步骤s201-步骤s204外,还可以包括以下步骤s205:
78.步骤s205:将每条日志文本数据的解析获得的启动scn存储至消息队列中。
79.在本实施方式中,可以将解析线程解析获得启动scn存储至消息队列中。
80.一个实施方式中,消息队列可以为kafka等。
81.在本发明实施例的一个实施方式中,步骤s204可以进一步包括以下步骤s2041和步骤s2042:
82.步骤s2041:对待处理业务数据进行业务处理,获得业务应用数据。
83.步骤s2042:将业务应用数据存储至消息队列中,以待消费者进行消费。
84.在本实施方式中,可以对待处理业务数据进行业务处理,以获取业务应用数据,并将业务应用数据存储至消息队列中,以待消费者进行消费。
85.一个实施方式中,业务处理可以为将待处理业务数据转换为业务应用数据。
86.下面参阅附图3,对本发明实施例的一个具体示例进行说明。图3是根据本发明实施例的一个具体示例的oracle数据库的日志文本数据采集方法的主要步骤流程示意图。
87.如图3所示,oracle logminer组件产生日志文本数据,需要对日志文本数据进行解析,解析过程可以应用单条解析线程和批量解析线程对日志文本数据进行解析。其中,单条解析线程每批次推送一条日志文本数据;批量解析线程每批次推送20000条日志文本数据。
88.在解析线程启动时,需要从zookeeper中获取启动scn。
89.解析线程对每条日志文本数据进行解析、处理、数据验证去重复、转换、筛选等,获取业务应用数据,保存至kafka中,定时job(任务)获取kafka中存储的最新的启动scn,并保存至zk(zookeeper)node节点中。
90.其中,本地cache(缓存)根据日志文本数据的ssid、ssn、rowid等生成日志文本数据的唯一缓存标识,通过唯一缓存标识来实现日志文本数据的解析结果的数据验证去重复。其中,rowid为用来唯一标记表中行的伪列;ssid为日志文本标识;ssn为日志文本位置标识。
91.在不使用本发明实例的oracle数据库的日志文本数据采集方法的情况下,当某些原因导致单条解析线程和批量解析线程重启时,一种情况是,单条解析线程和批量解析线程从头开始解析日志文本数据,即启动scn=1,但是实际上在重启前,已经解析完成并存储了部分日志文本数据对应的业务应用数据,如解析并存储到启动scn=3的日志文本数据,那么就存在启动scn=1和2位置处的日志文本数据进行重复解析的情况。
92.另一种情况是,记录解析线程的实际解析位置,如当前解析线程解析到的日志文本数据的启动scn=6,此时解析线程重启,解析线程会根据实际解析位置来继续对日志文本数据进行解析。在这种情况下,虽然重启前解析线程已经解析到了启动scn=6的数据位置,但是由于解析日志文本数据采集过程中在解析步骤之后,还需要对解析结果进行处理、数据验证去重复、转换、筛选以及存储至kafka等步骤,因而,很可能存在即使启动scn=6对应的数据位置的日志文本数据解析完成,实际可能只是scn=4对应的数据位置的日志文本数据对应的业务应用数据成功保存至kafka中。那么在解析线程重启后,从启动scn=6继续进行解析,就可能导致scn=5对应的数据位置的业务应用数据丢失。
93.而应用本发明实施例,则能够有效避免业务应用数据丢失的情况,且也不需要在解析线程重启后,每次都从头开始解析,使得在确保采集日志文本数据的过程中不丢失业务应用数据的前提下,确保了解析效率。
94.需要指出的是,尽管上述实施例中将各个步骤按照特定的先后顺序进行了描述,但是本领域技术人员可以理解,为了实现本发明的效果,不同的步骤之间并非必须按照这样的顺序执行,其可以同时(并行)执行或以其他顺序执行,这些变化都在本发明的保护范围之内。
95.本领域技术人员能够理解的是,本发明实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
96.进一步,本发明还提供了一种控制装置。在根据本发明的一个控制装置实施例中,控制装置包括处理器和存储装置,存储装置可以被配置成存储执行上述方法实施例的oracle数据库的日志断点采集方法的程序,处理器可以被配置成用于执行存储装置中的程序,该程序包括但不限于执行上述方法实施例的oracle数据库的日志断点采集方法的程序。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该控制装置可以是包括各种电子设备形成的控制装置设备。
97.进一步,本发明还提供了一种计算机可读存储介质。在根据本发明的一个计算机可读存储介质实施例中,计算机可读存储介质可以被配置成存储执行上述方法实施例的oracle数据库的日志断点采集方法的程序,该程序可以由处理器加载并运行以实现上述oracle数据库的日志断点采集方法。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机可读存储介质可以是包括各种电子设备形成的存储装置设备,可选的,本发明实施例中计算机可读存储介质是非暂时性的计算机可读存储介质。
98.进一步,本发明还提供了一种控制装置。在根据本发明的一个控制装置实施例中,控制装置包括处理器和存储装置,存储装置可以被配置成存储执行上述方法实施例的oracle数据库的日志文本数据采集方法的程序,处理器可以被配置成用于执行存储装置中的程序,该程序包括但不限于执行上述方法实施例的oracle数据库的日志文本数据采集方法的程序。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该控制装置可以是包括各种电子设备形成的控制装置设备。
99.进一步,本发明还提供了一种计算机可读存储介质。在根据本发明的一个计算机可读存储介质实施例中,计算机可读存储介质可以被配置成存储执行上述方法实施例的
oracle数据库的日志文本数据采集方法的程序,该程序可以由处理器加载并运行以实现上述oracle数据库的日志文本数据采集方法。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机可读存储介质可以是包括各种电子设备形成的存储装置设备,可选的,本发明实施例中计算机可读存储介质是非暂时性的计算机可读存储介质。
100.进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本发明的装置的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。
101.本领域技术人员能够理解的是,可以对装置中的各个模块进行适应性地拆分或合并。对具体模块的这种拆分或合并并不会导致技术方案偏离本发明的原理,因此,拆分或合并之后的技术方案都将落入本发明的保护范围内。
102.至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献