CN112559511B - 一种存款系统历史数据清理方法和系统 - Google Patents
一种存款系统历史数据清理方法和系统 Download PDFInfo
- Publication number
- CN112559511B CN112559511B CN202110210386.9A CN202110210386A CN112559511B CN 112559511 B CN112559511 B CN 112559511B CN 202110210386 A CN202110210386 A CN 202110210386A CN 112559511 B CN112559511 B CN 112559511B
- Authority
- CN
- China
- Prior art keywords
- source table
- source
- data
- partition
- history
- 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
- 238000004140 cleaning Methods 0.000 title claims abstract description 97
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000005192 partition Methods 0.000 claims abstract description 193
- 238000012986 modification Methods 0.000 claims description 18
- 230000004048 modification Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 14
- 230000009466 transformation Effects 0.000 claims description 6
- 230000001131 transforming effect Effects 0.000 claims description 6
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 abstract description 11
- 230000002159 abnormal effect Effects 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 6
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000002354 daily effect Effects 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种存款系统历史数据的清理方法和系统,该清理方法运行在应用程序侧,包括如下步骤:接收调度平台信号,触发任务;查询并判断数据清理参数表是否为空,若不为空,则进行下一步;调取杂项参数表中的配置参数,所述配置参数包括结束时间、操作条数和开关状态;循环调取数据清理参数表中的每条源表参数;根据配置参数,判断当前时间和开关状态是否符合要求,若符合,则对与所述源表参数对应的源表进行数据清理任务;任务完毕同时更新所述数据清理参数表。本发明着眼于银行存款业务系统,基于oracle数据库分区表技术,可以实现数据清理进行前、进行中和进行后的全阶段监控以及异常情况的及时告警。
Description
技术领域
本发明涉及数据清理领域,具体而言,涉及一种存款系统历史数据清理方法和系统。
背景技术
随着银行业务的发展、客户规模的增加以及各类存款产品的推出,银行存款系统的数据规模成倍增加,每日新增千万乃至上亿规模的数据。目前流行的基于微服务架构银行业务系统,通过水平扩展可以增加应用的性能,从而增加交易处理速度,减少交易耗时,因此数据库容易成为瓶颈。为此诞生出各类数据清理方法来管理历史数据,从而减少日常业务所需要处理的数据量级,提高业务效率。
在数据清理的实际过程当中,目前各类方法、系统往往以数据准确为目标,确保历史数据可以被完整、不重复的保存,但缺少一些可扩展的机制。如系统缺少自动监控清理过程有无异常,对于每一个数据清理的环节能否监控全面;如系统缺少对于清理作业的时间灵活控制手段,除了作业的开始、结束时间可控制化,还能够灵活停止正在执行的作业,待下次继续执行;如系统缺少对已经建成的数据表的改造能力,对于业务系统上线时未按照数据清理系统标准进行建库建表的,能否在不影响业务的前提下进行适配改造。
发明内容
鉴于上述问题,本发明提供了一种存款系统历史数据清理方法和系统。
为解决上述技术问题,本发明采用的技术方案是:
第一方面,本发明提供了一种存款系统历史数据的清理方法,运行在应用程序侧,包括如下步骤:接收调度平台信号,触发任务;查询并判断数据清理参数表是否为空,若不为空,则进行下一步;调取杂项参数表中的配置参数,所述配置参数包括结束时间、操作条数和开关状态;循环调取数据清理参数表中的每条源表参数;根据配置参数,判断当前时间和开关状态是否符合要求,若符合,则对与所述源表参数对应的源表进行数据清理任务;任务完毕同时更新所述数据清理参数表。
作为优选方案,所述判断当前时间和开关状态是否符合要求,包括:判断当前时间是否小于数据清理的结束时间,若小于,则判断数据清理的开关状态是否为打开。
第二方面,本发明提供了一种存款系统历史数据的清理方法,运行在存储过程侧,包括如下步骤:对源表进行改造,生成与所述源表对应的临时表和历史表;接收应用程序侧传入的源表参数;根据所述源表参数,检查与源表对应的临时表是否存在,并检查源表的交换分区是否存在,以及检查历史表的交换分区是否存在,若三者均存在,则进行下一步;将源表的交换分区数据交换至临时表,再将临时表交换至历史表的指定交换分区;检查源表和历史表的新分区是否存在,若不存在,则构建新分区,并对所述新分区重建索引;检查源表交换后的交换分区是否为空,若为空,则删除源表的交换分区;确认源表和历史表的新分区是否存在,若存在,则返回全部清理标志和开关状态。
作为优选方案,所述对源表进行改造,包括:确定源表的数据范围,所述源表具有唯一索引;确认所述唯一索引的字段是否存在非空约束,如果不存在,则增加非空约束;验证所述源表是否符合重定义条件,若符合,则进行下一步,反之,返回上一步进行约束的修改;建立所述源表的中间表,所述中间表的数据结构与源表相同;对所述源表进行重定义操作;拷贝所述源表的索引及约束至对应的中间表,并将所述源表的数据同步至中间表,同时收集中间表在数据同步过程中的统计信息;再次将所述源表的数据同步至中间表;完成重定义,所述源表由普通表改造成分区表,中间表由分区表改造成普通表;检查源表的约束是否正常;
删除所述源表的所有索引,重建本地索引;建立与所述源表数据结构相同的历史表,并按需建立索引;建立与所述源表对应的临时表;处理完所述源表后,进行下一张源表的处理。
作为优选方案,所述构建新分区,包括:判断新分区的日期是否小于交换分区的日期,若小于,则分割上限分区生成新分区和分割后的上限分区,反之,则直接构建新分区。
作为优选方案,在建立与所述源表数据结构相同的历史表之前,还包括检查源表当前日期的分区是否有正常的数据插入。
第三方面,本发明提供了一种存款系统历史数据的清理系统,包括:任务触发模块,用于接收调度平台信号,触发任务;第一判断模块,用于查询并判断数据清理参数表是否为空,若不为空,则进行下一步;配置参数调取模块,用于调取杂项参数表中的配置参数,所述配置参数包括结束时间、操作条数和开关状态;循环调取模块,用于循环调取数据清理参数表中的每条源表参数;第二判断模块,用于根据配置参数,判断当前时间和开关状态是否符合要求,若符合,则对与所述源表参数对应的源表进行数据清理任务;更新模块,用于在任务完毕同时更新所述数据清理参数表。
作为优选方案,所述第二判断模块包括:时间判断模块,用于判断当前时间是否小于数据清理的结束时间;开关判断模块,用于判断数据清理的开关状态是否为打开。
第四方面,本发明提供了一种存款系统历史数据的清理系统,包括:源表改造模块,用于对源表进行改造,生成与所述源表对应的临时表和历史表;源表参数接收模块,用于接收应用程序侧传入的源表参数;第一检查模块,用于根据所述源表参数,检查与源表对应的临时表是否存在,并检查源表的交换分区是否存在,以及检查历史表的交换分区是否存在,若三者均存在,则进行下一步;分区交换模块,用于将源表的交换分区数据交换至临时表,再将临时表交换至历史表的指定交换分区;新分区及索引构建模块,用于检查源表和历史表的新分区是否存在,若不存在,则构建新分区,并对所述新分区重建索引;第二检查模块,用于检查源表交换后的交换分区是否为空,若为空,则删除源表的交换分区;确认及返回模块,用于确认源表和历史表的新分区是否存在,若存在,则返回全部清理标志和开关状态。
作为优选方案,所述源表改造模块,包括:数据范围确定单元,用于确定源表的数据范围,所述源表具有唯一索引;约束增加单元,用于确认所述唯一索引的字段是否存在非空约束,如果不存在,则增加非空约束;重定义验证单元,用于验证所述源表是否符合重定义条件,若符合,则进行下一步,反之,返回上一步进行约束的修改;中间表建立单元,用于建立所述源表的中间表,所述中间表的数据结构与源表相同;重定义操作单元,用于对所述源表进行重定义操作;拷贝及同步单元,用于拷贝所述源表的索引及约束至对应的中间表,并将所述源表的数据同步至中间表,同时收集中间表在数据同步过程中的统计信息;再次同步单元,用于再次将所述源表的数据同步至中间表;重定义完成单元,用于完成重定义,所述源表由普通表改造成分区表,中间表由分区表改造成普通表;约束检查单元,用于检查源表的约束是否正常;索引重建单元,用于删除所述源表的所有索引,重建本地索引;历史表建立单元,用于建立与所述源表数据结构相同的历史表,并按需建立索引;临时表建立单元,用于建立与所述源表对应的临时表;
重复单元,用于在处理完所述源表后,进行下一张源表的处理。
与现有技术相比,本发明的有益效果包括:本发明着眼于银行存款业务系统,基于oracle数据库分区表技术,可以实现数据清理进行前、进行中和进行后的全阶段监控以及异常情况的及时告警;可以实现数据清理作业时间的灵活设置,不需要系统发版,并且在极端其况下可以在保证数据准确一致的前提下灵活停止作业;可以适用于已经上线的业务系统数据库,在不影响到业务的前提下,改造线上数据库表适配该系统。
附图说明
参照附图来说明本发明的公开内容。应当了解,附图仅仅用于说明目的,而并非意在对本发明的保护范围构成限制。在附图中,相同的附图标记用于指代相同的部件。其中:
图1为本发明实施例所涉及的一种实施环境的结构示意图;
图2为本发明实施例所涉及的另一种实施环境的结构示意图;
图3为本发明实施例的存款系统历史数据清理方法的流程示意图;
图4为本发明实施例的存款系统历史数据清理方法(应用程序侧)的流程示意图;
图5为本发明实施例的存款系统历史数据清理方法(存储过程侧)的流程示意图;
图6为本发明实施例对源表进行改造的流程示意图;
图7为本发明实施例的存款系统历史数据清理系统(应用程序侧)的结构示意图;
图8为本发明实施例的存款系统历史数据清理系统(存储过程侧)的结构示意图。
具体实施方式
容易理解,根据本发明的技术方案,在不变更本发明实质精神下,本领域的一般技术人员可以提出可相互替换的多种结构方式以及实现方式。因此,以下具体实施方式以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。
请参考图1,其示出了本发明实施例所涉及的一种实施环境的结构示意图。该实施环境包括由Jboss存款应用服务模块和存款oracle数据库组成的存款系统,本发明提供的数据清理系统与存款系统进行消费服务的交互。该实施环境将数据清理系统放在单独的系统中,这样可以搭建统一的数据清理系统进行处理。
请参考图2,其示出了本发明实施例所涉及的另一种实施环境的结构示意图。该实施环境包括由Jboss存款应用服务模块和存款oracle数据库组成的存款系统,本发明提供的数据清理系统整合在存款应用服务模块中,不需要新建额外的系统。
应理解,该数据清理系统用于对接银行内部的批量调度平台,但不局限于该实施例。本系统的数据清理主程序和应用程序为分开设计,具有较强的适用性,对于应用程序端,不局限于java语言,可适用其他语言。在数据库端,本发明适用一切基于oracle数据库的业务系统,清理程序以存储过程的形式存在于数据库中。
为了便于对本方案的理解,下面对下文涉及到的专业术语进行说明。
普通表:指的是未经过改造的非分区表。
分区表:符合oracle分区标准的分区表,可以是创建时就指定为分区形式的表,也可以是经过oracle在线重定义技术将普通表转化而成的分区表。
分区字段:分区字段为分区表进行分区的基准,例如日志表中的日期,流水表中的金额等,将该表的数据按照一定日期规则,金额规则等进行分区。
源表:需要进行历史数据清理的表,本发明中涉及的源表均为分区表。
历史表:用于存放数据清理系统清理出的历史数据的表,本发明涉及的历史表也均为分区表。
中间表:用于oracle在线重定义过程中用到的分区表,结构与源表相同。
临时表:用于存款数据清理系统在执行清理作业时用户数据交换的表。
范围分区:分区字段具有范围属性,比如日志表中以日期字段为分区,将同一天归为一个分区。
杂项参数表,用于存储程序的各类参数,无表结构基准,按需设计。
参见图3,为本发明实施例的存款系统历史数据清理方法的流程示意图。本发明的数据清理方案主要包括两个方面,一方面是应用程序侧关于作业的控制,另一方面是数据库的存储过程侧执行的数据清理过程,存储过程是预先写入数据库的一段清理程序,应用程序运行时会调用数据库中的存储过程。
在清理方案中,由应用程序根据数据清理参数表中配置的需要清理的表名列表,以及对应的清理的日期,调起一张表一日的数据清理的存储过程,待处理完成后,应用程序调起该表下一日的数据清理存储过程,若该表需要清理的日期都已清理完毕,不存在需要清理的日期,则调起下一张表的数据清理存储过程,若无下一张表需要处理,则作业完成。
参见图4,为本发明实施例的存款系统历史数据的清理方法(应用程序侧)的流程示意图。该清理方法包括如下步骤:
1)接收调度平台信号,触发任务。
2)查询并判断数据清理参数表是否为空,若不为空,则进行下一步,若为空,则直接结束不进行清理。
3)调取杂项参数表中的配置参数,所述配置参数包括结束时间、操作条数和开关状态。其中,结束时间:默认为凌晨5点结束;操作条数:即设定每多少笔提交一次,默认10000笔;开关状态:0-关闭,1-打开,默认1-打开。
4)循环调取数据清理参数表中的每条源表参数。
5)根据配置参数,判断当前时间和开关状态是否符合要求,若符合,则对与所述源表参数对应的源表进行数据清理任务。具体的,判断当前时间是否小于数据清理的结束时间,若是,则继续处理,若不是,则直接结束不进行清理;判断批量数据清理的开关状态是否为打开,若打开,则继续处理;若关闭,则直接结束不进行清理。
6)调用存储过程进行数据清理,处理完毕回到步骤4)处理剩余数据。
7)任务处理完毕同时更新数据清理参数表。
上述数据清理参数表用于记录源表名、清理规则、历史表名等字段含义,具体见下表。
字段名称 | 字段类型 | 字段含义 |
SRC_TB_NM | VARchar2 | 源表名,用于存储需要清理的表名 |
DT_CLRG_RULE | VARchar2 | 清理规则,用于存储分区字段名 |
CPARTY_TB_NM | VARchar2 | 历史表名,用于存储数据清理的历史数据 |
ADDITNL_DATA | VARchar2 | 规则,用于存储分区表的第一个分区和最后一个分区名 |
LOWEST_RESERVED_DAY_NUM | NUMBER | 最少保留天数,用于存储源表数据保留天数 |
LAST_CLEAN_DT | VARchar2 | 上次清理日期,用于存储上一个清理日 |
MATAIN_DT | VARchar2 | 维护日期,用于存储作业的最近执行日期 |
MATAIN_TM | VARchar2 | 维护时间,用于存储作业的最近执行时间 |
TB_ORDER | NUMBER | 表序号,用于存储源表排序 |
RECD_STAT | VARchar2 | 记录状态,用于存储数据可用行 |
本发明实施例中,在每次执行完一张表的一个日期的清理后会去检查是否已经到结束时间,开关状态是否为打开,当任意一个条件不满足时,则不再继续进行清理作业,开关的状态和结束时间维护在数据库中,通过修改数据库数据实时生效,达到灵活停止作业的目的。本发明可以实现数据清理作业时间的灵活设置,不需要系统发版,完全参数化配置,并且在极端其况下可以在保证数据准确一致的前提下灵活停止作业,同时由于存储过程也是配置在数据库中,因此相应的修改不会涉及到应用的发版。
参见图5,为本发明实施例的存款系统历史数据清理方法(存储过程侧)的流程示意图,该清理方法包括如下步骤:
1)对源表进行改造,生成与所述源表对应的临时表和历史表。
2)接收应用程序侧传入的源表参数。
3)根据所述源表参数,检查与源表对应的临时表是否存在,并检查源表的交换分区是否存在,以及检查历史表的交换分区是否存在,若三者均存在,则进行下一步。 具体的,检查临时表是否存在,不存在则异常报错,标志置成ERR101并退出;检查源表的交换分区是否存在,不存在则异常报错,标志置成ERR102并退出;检查历史表的交换分区是否存在,不存在则异常报错,标志置成ERR103并退出。
4)将源表的交换分区数据交换至临时表,再将临时表交换至历史表的指定交换分区。
5)检查源表和历史表的新分区是否存在,若不存在,则构建新分区,并对所述新分区重建索引。若源表的新分区存在,则异常报错,标志置成ERR201并退出;若历史表的新分区存在,则异常报错,标志置成ERR202并退出。
其中,构建新分区,包括:判断新分区的日期是否小于交换分区的日期,若小于,则分割上限分区生成新分区和分割后的上限分区,反之,则直接构建新分区。例如,目前的上限分区名P20991231,交换分区的日期为21000101,因此如果新增的分区的日期小于21000101,则分割P20991231分区为新增分区及新的P20991231分区,如果日期大于21000101,则直接新增分区。由于交换分区、分割分区等操作会使分区索引失效,因此在构建新分区后需要对该新分区的索引进行重建。
6)检查源表交换后的交换分区是否为空,若为空,则删除源表的交换分区。若不为空,则异常报错,标志置成ERR301并退出。
7)确认源表和历史表的新分区是否存在,若存在,则将全部清理标志置为1,检查杂项参数表中数据清理开关状态,并返回全部清理标志和开关状态。若源表的新分区不存在,则异常报错,标志置成ERR401并退出;若历史表的新分区不存在,则异常报错,标志置成ERR402并退出。
本发明实施例中,上述步骤3)为对数据清理进行前的监控,若产生问题则会抛出告警,停止后续清理步骤;步骤5)和6)为对数据清理进行中的监控,若存在告警则会暂停清理,等待人工介入处理;步骤7)为对数据清理后的监控,若清理的结果与预期不符合,如:新分区不存在,则会抛出异常,等待人工解决。此外,还可以灵活增加额外的监控检查以达到精细化监控的目的,例如增加事前监控,在步骤3)中添加检查:检查源表的临时表是否为空、检查源表待清理的分区有无异常数据等。本发明可以实现数据清理进行前、进行中和进行后的全阶段监控以及异常情况的及时告警,通过存储过程中的一系列检查,抛出不同类型的异常,在应用程序端进行对应的处理即可实现前中后的检查与告警。
参见图6,为本发明实施例对源表进行改造的流程示意图。对源表进行改造,包括如下步骤:
(1)确定源表的数据范围,所述源表具有唯一索引。
(2)确认所述唯一索引的字段是否存在非空约束,如果不存在,则增加非空约束。
(3)验证所述源表是否符合重定义条件,若符合,则进行下一步,反之,返回上一步进行约束的修改。
(4)建立所述源表的中间表,所述中间表的数据结构与源表相同。
(5)对所述源表进行重定义操作。
(6)拷贝所述源表的索引及约束至对应的中间表,并将所述源表的数据同步至中间表,同时收集中间表在数据同步过程中的统计信息。
(7)再次将所述源表的数据同步至中间表。
(8)完成重定义,所述源表由普通表改造成分区表,中间表由分区表改造成普通表。
(9)检查源表的约束是否正常。
(10)删除所述源表的所有索引,重建本地索引。
(11)由于步骤(8)在操作的时候会进行锁表,所以需要检查源表此时当前日期的分区是否有正常的数据插入。
(12)建立与所述源表数据结构相同的历史表,并按需建立索引。
(13)建立与所述源表对应的临时表。
(14)处理完所述源表后,进行下一张源表的处理。
本发明实施例中,上述步骤(4)和步骤(12)分别建立的中间表和历史表都是新建的分区表,新建分区表适合新上线的业务系统数据库,改造成分区表适合已上线的业务系统的数据库。本发明可以适用于已经上线的业务系统数据库,在不影响到业务的前提下,通过提供的改造步骤,改造线上数据库表适配该系统。
下面以交易流水表为例,交易流水表的唯一索引的字段为交易日期和交易流水号,目前该表为普通表,要改造成以交易日期作为分区列的分区表,即交易流水表改造成分区表后,表中的记录为同一交易日期的记录会放在该表的同一个分区中。对上述源表进行改造的流程进行详细说明。
(1)确定源表的数据范围,所述源表具有唯一索引。确认交易需要进行改造的源表的日期的范围,例如:在交易流水表中,通过SQL语句查询出源表数据分布的日期范围,比如查询统计的显示交易日期为20210101至20210120,则首尾日期需进行记录,用于建立分区的范围和分区数。
(2)确认所述唯一索引的字段是否存在非空约束,如果不存在,则增加非空约束。在交易流水表中,唯一索引对应的交易日期字段和交易流水号字段都要有非空约束,如果没有则要加上,如果有则可以忽略,且交易日期需要在交易流水表的唯一索引字段中,显然交易流水表的索引字段是符合要求的。但在实际情况中可能该表之前未添加日期之类的字段作为索引,而需要以日期字段作为分区列改造成分区表,则需要先删除该表现有唯一索引,添加含有日期字段的唯一索引。
(3)验证所述源表是否符合重定义条件,若符合,则进行下一步,反之,返回上一步进行约束的修改。通过使用ORACLE数据库自带的方法DBMS_REDEFINITION.CAN_REDEF_TABLE()来验证需要改造成分区表的源表是否符合条件,如果语句执行未报错,则说明源表目前可以改造成分区表,若报错则需要回到上一步中检查约束是否都修改到位,进行约束的修改。
(4)建立所述源表的中间表,所述中间表的数据结构与源表相同。该中间表内容为空,不需要建立索引,但该中间表为分区表,分区字段即为日期字段。例如:交易流水表对应的中间表为交易流水中间表,交易流水中间表的分区列为交易日期字段,共有“M+1+N”个分区,“M”指的是步骤(1)中确认的日期数据范围,即为20210101至20210120,共有20个分区,“1”指的是设置一个上限分区保证异常日期的数据可以正确插入到交易流水中间表中,通常设置一个上限分区20991231,“N”指的是预留的分区,通常设置为7个,即20210121至20210127。这样,交易流水中间表含有28个分区,为20210101-20210127以及20991231。
(5)对所述源表进行重定义操作。使用ORACLE的方法DBMS_REDEFINITION.START_REDEF_TABLE()对源表进行重定义开始操作,例如:此处对交易流水表进行开始重定义操作。
(6)拷贝所述源表的索引及约束至对应的中间表,并将所述源表的数据同步至中间表,同时收集中间表在数据同步过程中的统计信息。使用ORACLE的方法DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS()对源表的索引及约束进行拷贝,拷贝至源表对应的中间表中,例如:通过拷贝操作将交易流水表的索引及约束拷贝至交易流水中间表中;使用ORACLE的方法DBMS_REDEFINITION.SYNC_INTERIM_TABLE()将源表的数据同步至中间表中,例如:将交易流水表中的数据同步至交易流水中间表中。使用ORACLE的方法DBMS_STATS.GATHER_TABLE_STATS()收集中间表在数据同步过程当中的统计信息,例如:在交易流水表同步数据至交易流水中间表时,统计交易流水中间表的各类统计信息。
(7)再次将所述源表的数据同步至中间表。再次使用ORACLE的方法DBMS_REDEFINITION.SYNC_INTERIM_TABLE()继续将源表的数据同步至中间表中,例如:将交易流水表中的数据继续同步至交易流水中间表中。
(8)完成重定义,所述源表由普通表改造成分区表,中间表由分区表改造成普通表。使用ORACLE的方法FINISH_REDEF_TABLE()结束在线重定义过程,结束时源表会产生短暂的锁表,锁表时间长短与表中的数据有关,三千万数据量的锁表时间在3秒左右。结束在线重定义后,源表与中间表进行了交换,源表会从普通表变成分区表,源表对应的中间表则会从分区表变成了普通表,源表中的数据按照日期分布在对应的分区中,例如:交易流水表经过前面1-10步完成重定义步骤,变成了分区表,分区列字段为交易日期,表中数据按照交易日期分布在各自对应的分区20210101至20210120中。
(9)检查源表的约束是否正常。查询DBA_constraints这张系统表中表名为源表表名,且VALIDATED = 'NOT VALIDATED'状态的记录,如果记录为空则正常,若记录不为空,则需要通过语句“alter table 表名 modify constraint 约束名 validate”来修改之前查询结果中的状态,例如:查询DBA_constraints中表名为交易流水表的记录,记录状态为validate则为正常。
(10)删除所述源表的所有索引,重建本地索引。在前面的在线重定义过程完成后,源表的索引都会失效,且在分区表中需要使用本地索引,即索引生效的范围仅在当个分区内,因此需要删除源表的所有索引,再进行新建。例如:在交易流水表中,删除A索引,然后重新建立A索引,且A索引为local性质的本地索引。
(11)由于步骤(8)在操作的时候会进行锁表,所以需要检查源表此时当前日期的分区是否有正常的数据插入。例如:之前假设当前日期为20210120,则检查交易流水表20210120分区中是否有数据正常插入。
(12)建立与所述源表数据结构相同的历史表,并按需建立索引。建立源表对应的历史表,用于存放每日从源表中清理出来的数据,历史表与源表表结构完全相同,索引按需进行建立,可与源表完全相同,例如:建立交易流水历史表,同时给交易流水历史表加上B索引,字段为交易流水号和交易日期。
(13)建立与所述源表对应的临时表。建立源表对应的临时表,无需建立索引,临时表用于每日清理时作为数据传递载体,具体为,先将要清理的日期对应的分区内的数据(作为一个整体)交换到临时表中,在从临时表中交换到历史表中,例如:建立交易流水临时表。
(14)处理完所述源表后,进行下一张源表的处理。
参见图7,本发明提供了一种存款系统历史数据的清理系统,包括:
任务触发模块,用于接收调度平台信号,触发任务。
第一判断模块,用于查询并判断数据清理参数表是否为空,若不为空,则进行下一步。
配置参数调取模块,用于调取杂项参数表中的配置参数,所述配置参数包括结束时间、操作条数和开关状态。
循环调取模块,用于循环调取数据清理参数表中的每条源表参数。
第二判断模块,用于根据配置参数,判断当前时间和开关状态是否符合要求,若符合,则对与所述源表参数对应的源表进行数据清理任务。其中,所述第二判断模块包括:时间判断模块,用于判断当前时间是否小于数据清理的结束时间;开关判断模块,用于判断数据清理的开关状态是否为打开。
更新模块,用于在任务完毕同时更新所述数据清理参数表。
参见图8,本发明提供了一种存款系统历史数据的清理系统,包括:
源表改造模块,用于对源表进行改造,生成与所述源表对应的临时表和历史表。
源表参数接收模块,用于接收应用程序侧传入的源表参数。
第一检查模块,用于根据所述源表参数,检查与源表对应的临时表是否存在,并检查源表的交换分区是否存在,以及检查历史表的交换分区是否存在,若三者均存在,则进行下一步。
分区交换模块,用于将源表的交换分区数据交换至临时表,再将临时表交换至历史表的指定交换分区。
新分区及索引构建模块,用于检查源表和历史表的新分区是否存在,若不存在,则构建新分区,并对所述新分区重建索引。
第二检查模块,用于检查源表交换后的交换分区是否为空,若为空,则删除源表的交换分区。
确认及返回模块,用于确认源表和历史表的新分区是否存在,若存在,则返回全部清理标志和开关状态。
其中,所述源表改造模块,包括:
数据范围确定单元,用于确定源表的数据范围,所述源表具有唯一索引。
约束增加单元,用于确认所述唯一索引的字段是否存在非空约束,如果不存在,则增加非空约束。
重定义验证单元,用于验证所述源表是否符合重定义条件,若符合,则进行下一步,反之,返回上一步进行约束的修改。
中间表建立单元,用于建立所述源表的中间表,所述中间表的数据结构与源表相同;重定义操作单元,用于对所述源表进行重定义操作。
拷贝及同步单元,用于拷贝所述源表的索引及约束至对应的中间表,并将所述源表的数据同步至中间表,同时收集中间表在数据同步过程中的统计信息;
再次同步单元,用于再次将所述源表的数据同步至中间表。
重定义完成单元,用于完成重定义,所述源表由普通表改造成分区表,中间表由分区表改造成普通表。
约束检查单元,用于检查源表的约束是否正常。
索引重建单元,用于删除所述源表的所有索引,重建本地索引。
历史表建立单元,用于建立与所述源表数据结构相同的历史表,并按需建立索引。
临时表建立单元,用于建立与所述源表对应的临时表;
重复单元,用于在处理完所述源表后,进行下一张源表的处理。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
应理解,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括 :U 盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本发明的有益效果包括:本发明着眼于银行存款业务系统,基于oracle数据库分区表技术,可以实现数据清理进行前、进行中和进行后的全阶段监控以及异常情况的及时告警;可以实现数据清理作业时间的灵活设置,不需要系统发版,并且在极端其况下可以在保证数据准确一致的前提下灵活停止作业;可以适用于已经上线的业务系统数据库,在不影响到业务的前提下,改造线上数据库表适配该系统。
本发明的技术范围不仅仅局限于上述说明中的内容,本领域技术人员可以在不脱离本发明技术思想的前提下,对上述实施例进行多种变形和修改,而这些变形和修改均应当属于本发明的保护范围内。
Claims (4)
1.一种存款系统历史数据的清理方法,运行在存储过程侧,其特征在于,包括如下步骤:
对源表进行改造,生成与所述源表对应的临时表和历史表,所述临时表为用于存款数据清理系统在执行清理作业时用户数据交换的表,所述历史表为用于存放数据清理系统清理出的历史数据的表;
接收应用程序侧传入的源表参数;
根据所述源表参数,检查与源表对应的临时表是否存在,并检查源表的交换分区是否存在,以及检查历史表的交换分区是否存在,若三者均存在,则进行下一步;
将源表的交换分区数据交换至临时表,再将临时表交换至历史表的指定交换分区;
检查源表和历史表的新分区是否存在,若不存在,则构建新分区,并对所述新分区重建索引,若源表的新分区存在,则异常报错,标志置成ERR201并退出,若历史表的新分区存在,则异常报错,标志置成ERR202并退出;
检查源表交换后的交换分区是否为空,若为空,则删除源表的交换分区,若不为空,则异常报错,标志置成ERR301并退出;
确认源表和历史表的新分区是否存在,若存在,则返回全部清理标志和开关状态,若源表的新分区不存在,则异常报错,标志置成ERR401并退出;若历史表的新分区不存在,则异常报错,标志置成ERR402并退出;
其中,所述对源表进行改造,包括如下步骤:
确定源表的数据范围,所述源表具有唯一索引;
确认所述唯一索引的字段是否存在非空约束,如果不存在,则增加非空约束;
验证所述源表是否符合重定义条件,若符合,则进行下一步,反之,返回上一步进行约束的修改;
建立所述源表的中间表,所述中间表的数据结构与源表相同;
对所述源表进行重定义操作;
拷贝所述源表的索引及约束至对应的中间表,并将所述源表的数据同步至中间表,同时收集中间表在数据同步过程中的统计信息;
再次将所述源表的数据同步至中间表;
完成重定义,所述源表由普通表改造成分区表,中间表由分区表改造成普通表;
检查源表的约束是否正常;
删除所述源表的所有索引,重建本地索引;
建立与所述源表数据结构相同的历史表,并按需建立索引;
建立与所述源表对应的临时表;
处理完所述源表后,进行下一张源表的处理。
2.根据权利要求1所述的存款系统历史数据的清理方法,其特征在于,所述构建新分区,包括:判断新分区的日期是否小于交换分区的日期,若小于,则分割上限分区生成新分区和分割后的上限分区,反之,则直接构建新分区。
3.根据权利要求1所述的存款系统历史数据的清理方法,其特征在于,在建立与所述源表数据结构相同的历史表之前,还包括:检查源表当前日期的分区是否有正常的数据插入。
4.一种存款系统历史数据的清理系统,其特征在于,包括:
源表改造模块,用于对源表进行改造,生成与所述源表对应的临时表和历史表,所述临时表为用于存款数据清理系统在执行清理作业时用户数据交换的表,所述历史表为用于存放数据清理系统清理出的历史数据的表;
源表参数接收模块,用于接收应用程序侧传入的源表参数;
第一检查模块,用于根据所述源表参数,检查与源表对应的临时表是否存在,并检查源表的交换分区是否存在,以及检查历史表的交换分区是否存在;
分区交换模块,用于将源表的交换分区数据交换至临时表,再将临时表交换至历史表的指定交换分区;
新分区及索引构建模块,用于检查源表和历史表的新分区是否存在,若不存在,则构建新分区,并对所述新分区重建索引,若源表的新分区存在,则异常报错,标志置成ERR201并退出,若历史表的新分区存在,则异常报错,标志置成ERR202并退出;
第二检查模块,用于检查源表交换后的交换分区是否为空,若为空,则删除源表的交换分区,若不为空,则异常报错,标志置成ERR301并退出;
确认及返回模块,用于确认源表和历史表的新分区是否存在,若存在,则返回全部清理标志和开关状态,若源表的新分区不存在,则异常报错,标志置成ERR401并退出;若历史表的新分区不存在,则异常报错,标志置成ERR402并退出;
其中,所述源表改造模块,包括:
数据范围确定单元,用于确定源表的数据范围,所述源表具有唯一索引;
约束增加单元,用于确认所述唯一索引的字段是否存在非空约束,如果不存在,则增加非空约束;
重定义验证单元,用于验证所述源表是否符合重定义条件;
中间表建立单元,用于建立所述源表的中间表,所述中间表的数据结构与源表相同;
重定义操作单元,用于对所述源表进行重定义操作;
拷贝及同步单元,用于拷贝所述源表的索引及约束至对应的中间表,并将所述源表的数据同步至中间表,同时收集中间表在数据同步过程中的统计信息;
再次同步单元,用于再次将所述源表的数据同步至中间表;
重定义完成单元,用于完成重定义,所述源表由普通表改造成分区表,中间表由分区表改造成普通表;
约束检查单元,用于检查源表的约束是否正常;
索引重建单元,用于删除所述源表的所有索引,重建本地索引;
历史表建立单元,用于建立与所述源表数据结构相同的历史表,并按需建立索引;
临时表建立单元,用于建立与所述源表对应的临时表;
重复单元,用于在处理完所述源表后,进行下一张源表的处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110210386.9A CN112559511B (zh) | 2021-02-25 | 2021-02-25 | 一种存款系统历史数据清理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110210386.9A CN112559511B (zh) | 2021-02-25 | 2021-02-25 | 一种存款系统历史数据清理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559511A CN112559511A (zh) | 2021-03-26 |
CN112559511B true CN112559511B (zh) | 2021-06-01 |
Family
ID=75034759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110210386.9A Active CN112559511B (zh) | 2021-02-25 | 2021-02-25 | 一种存款系统历史数据清理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559511B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115543983A (zh) * | 2022-10-10 | 2022-12-30 | 武汉众邦银行股份有限公司 | 一种数据清理及转存的方法、装置及存储介质 |
CN115617788B (zh) * | 2022-12-20 | 2023-04-07 | 广州嘉为科技有限公司 | 一种制品清理方法、装置及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247758A (zh) * | 2017-05-31 | 2017-10-13 | 深圳市长亮科技股份有限公司 | 基于银行核心系统的数据处理方法 |
CN108319694A (zh) * | 2018-02-02 | 2018-07-24 | 中国银行股份有限公司 | 一种历史数据的自动清理方法及装置 |
CN109885565A (zh) * | 2019-02-14 | 2019-06-14 | 中国银行股份有限公司 | 一种数据表清理方法和装置 |
-
2021
- 2021-02-25 CN CN202110210386.9A patent/CN112559511B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247758A (zh) * | 2017-05-31 | 2017-10-13 | 深圳市长亮科技股份有限公司 | 基于银行核心系统的数据处理方法 |
CN108319694A (zh) * | 2018-02-02 | 2018-07-24 | 中国银行股份有限公司 | 一种历史数据的自动清理方法及装置 |
CN109885565A (zh) * | 2019-02-14 | 2019-06-14 | 中国银行股份有限公司 | 一种数据表清理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112559511A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108959400B (zh) | 银行系统历史数据清理方法及装置 | |
CN112559511B (zh) | 一种存款系统历史数据清理方法和系统 | |
US9779128B2 (en) | System and method for massively parallel processing database | |
CN1601541B (zh) | 用于自维护的实时数据聚集的方法和数据处理装置 | |
AU694583B2 (en) | Database system and its data exploitation support apparatus | |
US6411985B1 (en) | Interserver data association apparatus | |
CN101046821B (zh) | 通用数据库操纵器 | |
CN108573006A (zh) | 跨机房数据同步系统、方法及装置、电子设备 | |
CN106557497A (zh) | 一种数据同步方法和装置 | |
CN105512939A (zh) | 外汇业务相关的数据存储、查询方法及申报方法和系统 | |
CN101794247A (zh) | 嵌套事务模型下实时数据库故障恢复方法 | |
JPH10207754A (ja) | 更新系データベースの複製方式 | |
CN108415990B (zh) | 数据质量监控方法、装置、计算机设备和存储介质 | |
CN108153747A (zh) | 一种并行数据清洗系统 | |
CN110222039A (zh) | 数据存储及垃圾数据清理方法、装置、设备及存储介质 | |
CN112948359A (zh) | 一种基于数据库分库分表的不停机客户数据迁移方法 | |
CN106648840A (zh) | 事务之间的时序确定方法和装置 | |
CN115617908A (zh) | 一种MySQL数据同步方法、装置、数据库终端、介质及系统 | |
CN106571940A (zh) | 一种融合网管数据与资源数据的方法和装置 | |
CN110389988A (zh) | 一种实时高效的用户数据处理方法及系统 | |
Grefen et al. | Integrity constraint checking in federated databases | |
WO2003001405A1 (en) | Method and system for performing concurrency control in a relational database | |
CN110119426A (zh) | 酒店订单报表数据同步的方法及系统 | |
CN1312628C (zh) | 金融联机系统及其信息更新处理方法 | |
CN108920522A (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: No.4 building, Hexi Financial City, Jianye District, Nanjing City, Jiangsu Province, 210000 Patentee after: Jiangsu Sushang Bank Co.,Ltd. Country or region after: China Address before: No.4 building, Hexi Financial City, Jianye District, Nanjing City, Jiangsu Province, 210000 Patentee before: JIANGSU SUNING BANK Co.,Ltd. Country or region before: China |