著录项信息
专利名称 | 基于oracle数据库系统的range分区表的维护方法和系统 |
申请号 | CN201210573616.9 | 申请日期 | 2012-12-26 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2013-03-20 | 公开/公告号 | CN102982186A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 厦门市美亚柏科信息股份有限公司 | 申请人地址 | 福建省厦门市软件园二期观日路12号美亚柏科大厦
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 厦门市美亚柏科信息股份有限公司 | 当前权利人 | 厦门市美亚柏科信息股份有限公司 |
发明人 | 余有能;庄进发;吴鸿伟 |
代理机构 | 北京恒都律师事务所 | 代理人 | 邸建凯 |
摘要
本发明提供了一种基于oracle数据库系统的range分区表的维护方法和系统,其中维护方法包括至少一次的维护过程,维护过程包括:获取一个需要维护的range分区表及其对应的元数据;根据需要维护的range分区表的元数据和当前日期,获得当前日期所对应分区的上个周期的分区名称及下个周期的分区名称、表空间值、分区键划分值;若上个周期的分区存在,删除上个周期的分区;若下个周期的分区不存在,增加下个周期的分区;根据分区的删除和/或增加重新建立range分区表索引;更新元数据,并将更新的元数据进行存储;将增加的下个周期分区的统计信息存储到分区表统计信息中;通过本发明的方法和系统,可实现oracle数据库的range分区表由自动维护来代替oracleDBA的手动维护。
1.一种基于oracle数据库系统的range分区表的维护方法,其特征在于,包括至少一次的维护过程,所述维护过程包括:
创建用于存储所有range分区表的元数据的元数据表,具体为将数据库中所有range分区表的元数据通过sql语句初始化到元数据表中,其中,元数据包括表基本信息、表分区信息、表存储策略和表数据报告日期;
获取一个需要维护的range分区表及其对应的元数据;
根据所述需要维护的range分区表的元数据和当前日期,获得所述当前日期所对应分区的上个周期的分区名称及下个周期的分区名称、表空间值、分区键划分值;
若上个周期的分区存在,则删除上个周期的分区;
若下个周期的分区不存在,则增加下个周期的分区;
根据分区的删除和/或增加重新建立range分区表索引;
更新元数据,并将更新后的元数据进行存储;
将增加的下个周期分区的统计信息存储到所述range分区表的统计信息中。
2.如权利要求1所述的方法,其特征在于,获取一个需要维护的range分区表及其对应的元数据的步骤,具体为通过当前日期和表存储策略来获取需要维护的range分区表及其对应的元数据。
3.如权利要求1所述的方法,其特征在于,所述维护过程可通过调度工具触发或通过任务定时器定时触发。
4.如权利要求1所述的方法,其特征在于,所述表基本信息包括表名、表属主;所述表分区信息包括分区键、分区序号和当前数据分区值;所述表存储策略包括当前表空间大小、存点类型、保留数值;所述表数据报告日期包括数据报告日志的日期、数据更新日期。
5.一种基于oracle数据库系统的range分区表的维护系统,其特征在于,包括:
元数据表创建单元,用于创建用于存储所有range分区表的元数据的元数据表,具体为将数据库中所有range分区表的元数据通过sql语句初始化到元数据表中,其中,元数据包括表基本信息、表分区信息、表存储策略和表数据报告日期;
分区表获取单元,用于获取一个需要维护的range分区表及其对应的元数据;
分区信息获取单元,用于根据所述需要维护的range分区表的元数据和当前日期,获得所述当前日期所对应分区的上个周期的分区名称及下个周期的分区名称、表空间值、分区键划分值;
分区删除单元,用于当上个周期的分区存在时,删除上个周期的分区;
分区增加单元,用于当下个周期的分区不存在时,增加下个周期的分区;
索引重建单元,用于根据分区的删除和/或增加重新建立range分区表索引;
元数据更新单元,用于更新元数据,并将更新后的元数据进行存储;
统计信息更新单元,用于将增加的下个周期分区的统计信息存储到所述range分区表的统计信息中。
6.如权利要求5所述的系统,其特征在于,分区表获取单元,具体为通过当前日期和表存储策略来获取需要维护的range分区表及其对应的元数据。
7.如权利要求5所述的系统,其特征在于,所述系统还包括调度工具或任务定时器,用于触发所述维护系统。
8.如权利要求5所述的系统,其特征在于,所述表基本信息包括表名、表属主;所述表分区信息包括分区键、分区序号和当前数据分区值;所述表存储策略包括当前表空间大小、存点类型、保留数值;所述表数据报告日期包括数据报告日志的日期、数据更新日期。
基于oracle数据库系统的range分区表的维护方法和系统\n技术领域\n[0001] 本发明涉及分区表的维护方法和系统,特别地,涉及一种基于oracle数据库系统的range分区表的维护方法和系统。\n背景技术\n[0002] 分区(partitioning)是oracle数据库的一个组件,数据分区技术最早是在Oracle 8.0中引入的,分区是将一个表或索引物理地分解为多个更小、更可管理的部分。就访问数据库的应用而言,从逻辑上讲只有一个表或一个索引,但在物理上这个表或索引可能由数十个物理分区组成,每个分区都是一个独立的对象,可以独自处理,也可以作为一个更大对象的一部分进行处理。\n[0003] 目前,oracle关系数据库管理系统(RDBMS)已发展到11G R2,分区的方式有范围分区(range分区)、列表分区(list分区)、哈希分区(hash分区)以及上述三种分区组合的复合分区。其中,range分区是oracle最早推出的分区方式,在决策支持型的海量数据oracle数据库系统(如数据挖掘、数据仓库等)中,大量使用着range分区技术。range分区的最显著特点就是分区表的分区键是按照时间顺序或者数值顺序作为分区的标准,数据按日期时间轴或者数值顺序递增。这种类型的数据表在数据库中占用量巨大,对于oracle数据库管理员(DBA)来说,维护Range分区表的工作量是非常大的。\n[0004] 当range分区技术应用于海量数据的相关领域时,由于分区表的数量众多(少则几十来张,多则上百张),维护这些range分区表的工作量是非常大的,每个技术细节的的失误都有可能导致整个oracle数据库系统的性能下降,甚至导致某些业务严重积压而无法正常处理。其中,Range分区表的维护内容包括:单个range分区表中分区数量的维护,比如分区的新增和删除;单个range分区表中过期数据的清理,比如按照不同的存储策略来清理分区,其中存储策略可根据分区表的业务特性和数据需求来设定,比如分区表按天来分区的,可将其存储策略设定为保留20天内的数据,比如分区表按月来分区的,可将其存储策略设定为保留6个月以内的数据;单个range分区表中实效索引的重建;单个range分区表统计信息的更新,其中统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息,比如,表的行数,块数,平均每行的大小,索引的leaf blocks,索引字段的行数,不同值的大小,都属于统计信息。\n[0005] 此外在oracle 11G R2还推出了Interval分区,即range分区根据分区键值自动添加新的分区,但Interval分区技术只能做到按时间或范围自动新增range分区表,不能做到分区表内的数据自动删除及索引自动维护、统计信息的实时更新等,这些都还需要oracle DBA进行手动维护。\n[0006] 总之,需要本领域技术人员迫切解决的一个技术问题就是:如何实现由自动维护oracle数据库中的range分区表来代替oracle DBA手动维护oracle数据库中的range分区表,从而达到range分区表的自动运维。\n发明内容\n[0007] 为了解决上述问题,本发明提供了基于oracle数据库系统的range分区表的维护方法和系统,可实现由自动维护oracle数据库中的range分区表来代替oracle DBA手动维护oracle数据库中的range分区表,从而有效解决现有技术中DBA复杂、枯燥的手动维护且易因误操作给oracle数据库带来性能隐患的问题。\n[0008] 本发明一方面提供了一种基于oracle数据库系统的range分区表的维护方法,其包括至少一次的维护过程,所述维护过程包括:\n[0009] 获取一个需要维护的range分区表及其对应的元数据;\n[0010] 根据所述需要维护的range分区表的元数据和当前日期,获得所述当前日期所对应分区的上个周期的分区名称及下个周期的分区名称、表空间值、分区键划分值;\n[0011] 若上个周期的分区存在,则删除上个周期的分区;\n[0012] 若下个周期的分区不存在,则增加下个周期的分区;\n[0013] 根据分区的删除和/或增加重新建立range分区表索引;\n[0014] 更新元数据,并将更新后的元数据进行存储;\n[0015] 将增加的下个周期分区的统计信息存储到所述range分区表的统计信息中。\n[0016] 其中,获取一个需要维护的range分区表及其对应的元数据的步骤,具体为通过当前日期和表存储策略来获取需要维护的range分区表及其对应的元数据。\n[0017] 优选的,在进行维护过程之前,还包括创建用于存储所有range分区表的元数据的元数据表。\n[0018] 其中,所述元数据包括表基本信息、表分区信息、表存储策略和表数据报告日期。\n具体的,所述表基本信息包括表名、表属主;所述表分区信息包括分区键、分区序号和当前数据分区值;所述表存储策略包括当前表空间大小、存点类型、保留数值;所述表数据报告日期包括数据报告日志的日期、数据更新日期。\n[0019] 优选的,所述维护过程可通过调度工具触发或通过任务定时器定时触发。\n[0020] 本发明同时还提出了一种基于oracle数据库系统的range分区表的维护系统,包括:\n[0021] 分区表获取单元,用于获取一个需要维护的range分区表及其对应的元数据;\n[0022] 分区信息获取单元,用于根据所述需要维护的range分区表的元数据和当前日期,获得所述当前日期所对应分区的上个周期的分区名称及下个周期的分区名称、表空间值、分区键划分值;\n[0023] 分区删除单元,用于当上个周期的分区存在时,删除上个周期的分区;\n[0024] 分区增加单元,用于当下个周期的分区不存在时,增加下个周期的分区;\n[0025] 索引重建单元,用于根据分区的删除和/或增加重新建立range分区表索引;\n[0026] 元数据更新单元,用于更新元数据,并将更新后的元数据进行存储;\n[0027] 统计信息更新单元,用于将增加的下个周期分区的统计信息存储到所述range分区表的统计信息中。\n[0028] 优选的,所述系统还包括元数据表创建单元,用于创建存储所有分区表的元数据的元数据表。\n[0029] 优选的,所述元数据包括表基本信息、表分区信息、表存储策略和表数据报告日期。具体的,所述表基本信息包括表名、表属主;所述表分区信息包括分区键、分区序号和当前数据分区值;所述表存储策略包括当前表空间大小、存点类型、保留数值;所述表数据报告日期包括数据报告日志的日期、数据更新日期。\n[0030] 其中,分区表获取单元,具体为通过当前日期和表存储策略来获取需要维护的range分区表及其对应的元数据。\n[0031] 优选的,所述系统还包括调度工具或任务定时器,用于触发所述维护系统。\n[0032] 通过本发明提供的基于oracle数据库系统的range分区表的维护方法和系统,可实现由自动维护oracle数据库中的range分区表来代替oracle DBA手动维护oracle数据库中的range分区表,从而有效解决现有技术中oracle DBA复杂、枯燥的手动维护且易因误操作给oracle数据库带来性能隐患的问题。\n附图说明\n[0033] 图1是本发明基于oracle数据库系统的range分区表的维护方法实施例的流程图;\n[0034] 图2是本发明基于oracle数据库系统的range分区表的维护系统实施例的示意图。\n具体实施方式\n[0035] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。\n[0036] 参照图1,示出了本发明一种基于oracle数据库系统的range分区表的维护方法实施例的流程图,其包括至少一次的维护过程,所述维护过程为一个oracle的存储过程,可通过调度工具触发或通过任务定时器定时触发。优选的,还可以包括一个判断是否适合使用本发明的维护方法的步骤,若不适合使用,则采用DBA手工维护的方式进行维护;若适合使用,则采用本发明提供的维护过程。\n[0037] 所述维护过程包括:S1,获取一个需要维护的range分区表及其对应的元数据,作为后续步骤的依据,具体为通过当前日期和表存储策略来获取需要维护的range分区表及其对应的元数据,其中,表存储策略可如以下方式但不限于如下方式制定,比如,分区表按天来分区的,业务需要保留20天内的数据;分区表按月来分的,业务需要保留6个月以内的数据等;S2,根据所述需要维护的range分区表的元数据和当前日期,获得所述当前日期所对应分区的上个周期的分区名称及下个周期的分区名称、表空间值、分区键划分值;S3,判断上个周期的分区是否存在,若上个周期的分区不存在,则无需任何操作,若上个周期的分区存在,则通过sql语句删除上个周期的分区,以进行分区内数据的清理;S4,判断下个周期的分区是否存在,若下个周期的分区不存在,则通过sql语句增加下个周期的分区,若下个周期的分区存在,则无需任何操作;S5,根据分区的删除和/或增加,建立索引维护sql脚本,使用for循环重新建立分区表索引,以解决分区表的分区删除和/或增加后分区表索引的变化问题,当然,对于本地分区表索引除外;S6,更新元数据,并将更新的元数据进行存储,例如将每次更新的数据报告日期、数据更新时间、分区信息等更新到元数据表中,以便于下次维护;S7,将增加的下个周期分区的统计信息进行收集、统计,并生成相应的sql脚本,通过执行sql脚本将增加的下个周期的统计信息存储到所述分区表的统计信息中,以解决分区表的统计信息中没有新增的下个周期的统计信息的问题,从而完成range分区表维护。\n[0038] 上述维护过程可进行多次,例如通过for循环进行,直到维护完成数据库所有需要维护的range分区表。\n[0039] 优选的,在进行上述维护过程之前,还包括创建用于存储所有range分区表的元数据的元数据表的步骤,可将数据库中所有range分区表的元数据通过sql语句初始化到元数据表中,以便于对数据库中所有range分区表的元数据进行统一管理。其中,元数据包括表基本信息、表分区信息、表存储策略和表数据报告日期等信息,更详细的,所述表基本信息包括表名、表属主等信息;所述表分区信息包括分区键、分区序号和当前数据分区值等信息;所述表存储策略包括当前表空间大小、存点类型、保留数值等信息;所述表数据报告日期包括数据报告日志的日期、数据更新日期等信息。\n[0040] 通过本发明提供的基于oracle数据库系统的range分区表的维护方法,可实现由自动维护oracle数据库中的range分区表来代替oracle DBA手动维护oracle数据库中的range分区表,从而有效解决现有技术中oracle DBA复杂、枯燥的手动维护且易因误操作给oracle数据库带来性能隐患的问题。\n[0041] 同时,还提出一种与上述数据库分区表的维护方法相对应的维护系统,所述系统包括调度工具或任务定时器,用于触发所述维护系统。参看图2为本发明基于oracle数据库系统的range分区表的维护系统实施例的示意图,包括:分区表获取单元21,用于获取需要维护的range分区表及其对应的元数据,作为后续步骤的依据,具体为通过当前日期和表存储策略来获取需要维护的range分区表及其对应的元数据,其中,表存储策略可以如下方式但不限于如下方式制定,比如,若分区表按天来分区的,业务需要保留20天内的数据,分区表按月来分的,业务需要保留6个月以内的数据等;分区信息获取单元22,用于根据所述需要维护的range分区表的元数据和当前日期,获取所述当前日期所对应分区的上个周期的分区名称及下个周期的分区名称、表空间值、分区键划分值;分区删除单元23,用于当上个周期的分区存在时,通过sql语句删除上个周期的分区,以进行分区内数据的清理,若上个周期的分区不存在,则无需任何操作;分区增加单元24,用于当下个周期的分区不存在时,通过sql语句增加下个周期的分区,若下个周期的分区存在,则无需任何操作;\n索引重建单元25,用于根据分区的删除和/或增加重新建立分区表索引,以解决分区的删除和/或增加而导致的分区表索引变化的问题,根据分区的删除和/或增加,建立索引维护sql脚本,使用for循环重新建立分区表索引,以解决range分区表的分区删除和/或增加后分区表索引的变化问题,当然,对于本地分区表索引除外;元数据更新单元26,用于更新元数据,并将更新的元数据进行存储,例如将每次更新的数据报告日期、数据更新时间、分区信息等更新到元数据表中,以便于下次维护;统计信息更新单元27,用于将增加的下个周期分区的统计信息进行收集、统计,并生成相应的sql脚本,通过执行sql脚本将增加的下个周期的统计信息存储到所述range分区表的统计信息中,以解决range分区表的统计信息中没有新增的下个周期的统计信息的问题,从而完成range分区表维护。\n[0042] 优选的,所述系统还包括元数据表创建单元20,用于创建存储所有range分区表的元数据的元数据表,通过元数据表来实现对所有元数据的统一管理。其中,元数据包括表基本信息、表分区信息、表存储策略和表数据报告日期等信息,更详细的,所述表基本信息包括表名、表属主等信息;所述表分区信息包括分区键、分区序号和当前数据分区值等信息;所述表存储策略包括当前表空间大小、存点类型、保留数值等信息;所述表数据报告日期包括数据报告日志的日期、数据更新日期等信息。\n[0043] 通过本发明提供的基于oracle数据库系统的range分区表的维护系统,可实现由自动维护oracle数据库中的range分区表来代替oracle DBA手动维护oracle数据库中的range分区表,从而有效解决现有技术中oracle DBA复杂、枯燥的手动维护且易因误操作给oracle数据库带来性能隐患的问题。\n[0044] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。\n[0045] 以上对本发明所提供的一种数据库分区表的维护方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
法律信息
- 2023-03-17
专利实施许可合同备案的生效
IPC(主分类): G06F 17/30
合同备案号: X2023350000036
专利申请号: 201210573616.9
申请日: 2012.12.26
让与人: 厦门市美亚柏科信息股份有限公司
受让人: 小马宝莉(厦门)网络科技有限公司
发明名称: 基于oracle数据库系统的range分区表的维护方法和系统
申请公布日: 2013.03.20
授权公告日: 2016.01.20
许可种类: 普通许可
备案日期: 2023.03.01
- 2016-01-20
- 2013-04-17
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201210573616.9
申请日: 2012.12.26
- 2013-03-20
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-06-06
|
2010-12-03
| | |
2
| |
2008-07-09
|
2007-01-05
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |