发布信息

基于Oracle数据库的分区快速创建方法及系统与流程

作者:admin      2022-10-01 07:15:58     271



计算;推算;计数设备的制造及其应用技术基于oracle数据库的分区快速创建方法及系统技术领域::1.本发明涉及数据库技术领域::,尤其涉及一种基于oracle数据库的分区快速创建方法以及一种基于oracle数据库的分区快速创建系统。背景技术:::2.电信行业目前核心数据存放,使用oracle数据库仍占比较大,对于数据库中几百万或上千万的流水表来说,oracle给出的建议是做表分区管理(相比创建年月分表来说,创建表分区可以减少数据库对象的数量,方便管理)。因创建的分区会占用资源,故通常按年来创建未来年月分区来保证系统使用,由此形成了每年12月或1月开始批量创建未来1年系统要使用表分区的例行任务。3.在现有技术中,部门通常是一个个获取建表脚本,根据其当年的分区语句,修改为alter可执行语句,并将分区替换为下一年的分区,然后到数据库中执行。按该方法,通常需要投入至少5人参与脚本编写(每人平均2000+条语句),耗时3小时以上。技术实现要素:4.针对上述问题,本发明提供了一种基于oracle数据库的分区快速创建方法及系统,通过将oracle数据库中已有系统表的分区信息插入预设的临时数据表,拼装得到分区创建sql语句并对sql语句替换分区创建信息,利用形成的可执行sql语句进行分区创建,能够实现定期、快速、准确创建数据分区,从而保证系统稳定运行。5.为实现上述目的,本发明提供了一种基于oracle数据库的分区快速创建方法,包括:6.创建临时数据表,并在所述临时数据表中预设所需字段;7.根据oracle数据库的系统表,提取当前年份的所有分区信息,并插入所述临时数据表;8.根据所述临时数据表中的信息拼装得到分区创建sql语句,并将所述分区创建sql语句中的当前年份的年月信息替换为下一年份的年月信息,形成可执行sql语句;9.根据所述可执行sql语句分析得到创建分区所需的空间,并与所述oracle数据库的剩余空间进行比较;10.在判定所述oracle数据库的剩余空间足够创建分区时,执行所述可执行sql语句,完成下一年份数据表的分区创建。11.在上述技术方案中,优选地,基于oracle数据库的分区快速创建方法还包括:12.抽取所述系统表中散列的年月信息标签,并核查所创建的下一年份数据表中年月信息是否创建完全。13.在上述技术方案中,优选地,基于oracle数据库的分区快速创建方法还包括:14.检查所创建的下一年份数据表中索引状态,以分析是否存在因分区创建导致的索引失效,若有,则执行索引重建。15.在上述技术方案中,优选地,所述分区信息包括一维分区和二维分区方式,一维分区方式为按照年月分区,二维分区方式包括两种,一种为一维分区为区域范围、二维分区为年月分区,另一种为一维分区为年月分区、二维分区为区域范围或哈希值。16.在上述技术方案中,优选地,在创建临时数据表之前,确认操作用户针对所述oracle数据库的用户权限。17.本发明还提出一种基于oracle数据库的分区快速创建系统,应用如上述技术方案中任一项公开的基于oracle数据库的分区快速创建方法,包括:18.临时数表创建模块,用于创建临时数据表,并在所述临时数据表中预设所需字段;19.系统数表提取模块,用于根据oracle数据库的系统表,提取当前年份的所有分区信息,并插入所述临时数据表;20.语句拼装替换模块,用于根据所述临时数据表中的信息拼装得到分区创建sql语句,并将所述分区创建sql语句中的当前年份的年月信息替换为下一年份的年月信息,形成可执行sql语句;21.分区空间判断模块,用于根据所述可执行sql语句分析得到创建分区所需的空间,并与所述oracle数据库的剩余空间进行比较;22.数据分区创建模块,用于在判定所述oracle数据库的剩余空间足够创建分区时,执行所述可执行sql语句,完成下一年份数据表的分区创建。23.在上述技术方案中,优选地,基于oracle数据库的分区快速创建系统还包括信息完全核查模块,用于抽取所述系统表中散列的年月信息标签,并核查所创建的下一年份数据表中年月信息是否创建完全。24.在上述技术方案中,优选地,基于oracle数据库的分区快速创建系统还包括索引失效检查模块,用于检查所创建的下一年份数据表中索引状态,以分析是否存在因分区创建导致的索引失效,若有,则执行索引重建。25.在上述技术方案中,优选地,所述分区信息包括一维分区和二维分区方式,一维分区方式为按照年月分区,二维分区方式包括两种,一种为一维分区为区域范围、二维分区为年月分区,另一种为一维分区为年月分区、二维分区为区域范围或哈希值。26.在上述技术方案中,优选地,在所述临时数表创建模块创建临时数据表之前,确认操作用户针对所述oracle数据库的用户权限。27.与现有技术相比,本发明的有益效果为:通过将oracle数据库中已有系统表的分区信息插入预设的临时数据表,拼装得到分区创建sql语句并对sql语句替换分区创建信息,利用形成的可执行sql语句进行分区创建,能够实现定期、快速、准确创建数据分区,从而保证系统稳定运行。附图说明28.图1为本发明一种实施例公开的基于oracle数据库的分区快速创建方法的流程示意图;29.图2为本发明一种实施例公开的基于oracle数据库的分区快速创建方法的逻辑示意图;30.图3为本发明一种实施例公开的基于oracle数据库的分区快速创建系统的模块示意图。31.图中,各组件与附图标记之间的对应关系为:32.11.临时数表创建模块,12.系统数表提取模块,13.语句拼装替换模块,14.分区空间判断模块,15.数据分区创建模块,16.信息完全核查模块,17.索引失效检查模块。具体实施方式33.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。34.下面结合附图对本发明做进一步的详细描述:35.如图1和图2所示,根据本发明提供的一种基于oracle数据库的分区快速创建方法,包括:36.创建临时数据表,并在临时数据表中预设所需字段;37.根据oracle数据库的系统表,提取当前年份的所有分区信息,并插入临时数据表;38.根据临时数据表中的信息拼装得到分区创建sql语句,并将分区创建sql语句中的当前年份的年月信息替换为下一年份的年月信息,形成可执行sql语句;39.根据可执行sql语句分析得到创建分区所需的空间,并与oracle数据库的剩余空间进行比较;40.在判定oracle数据库的剩余空间足够创建分区时,执行可执行sql语句,完成下一年份数据表的分区创建。41.在该实施方式中,通过将oracle数据库中已有系统表的分区信息插入预设的临时数据表,拼装得到分区创建sql语句并对sql语句替换分区创建信息,利用形成的可执行sql语句进行分区创建,能够实现定期、快速、准确创建数据分区,从而保证系统稳定运行。42.具体地,在上述实施方式中,分区信息优选包括一维分区和二维分区方式,一维分区方式为按照年月分区,二维分区方式包括两种,一种为一维分区为区域范围、二维分区为年月分区,另一种为一维分区为年月分区、二维分区为区域范围或哈希值。43.针对上述三种分区方式,分3种类型场景,快速形成对应的可执行sql语句:44.场景a:一维分区表,按年月分区;45.场景b:二维分区表,一维分区为range(通常为地市或其他可枚举的标识),二维分区为年月分区;46.场景c:二维分区表,一维分区为年月分区,二维分区为range或hash。47.具体地,对于场景a,首先创建一张临时数据表tab_part,表中含字段“表属主”、“表名”、“分区名”、“分区值(high_value)”、“表空间名”;然后通过系统表all_tab_partitions提取当前年份的所有年月分区信息,插入临时数据表tab_part;接下来通过临时数据表tab_part中的信息,开始拼装年月分区创建sql语句;最后将分区创建sql语句中的“当前年份的年月信息”替换为“下一年的年月信息”,形成可执行sql语句。48.对于场景b,首先创建一张临时数据表tab_subpart,表中含字段“表属主”、“表名”、“分区名”、“子分区名”、“分区值(high_value)”、“表空间名”;然后通过系统表all_tab_subpartitions提取当前年份的所有年月分区信息,插入临时数据表tab_subpart;接下来通过临时数据表tab_subpart中的信息,开始拼装二维分区创建sql语句;最后将分区创建sql语句中的“当前年份的年月信息”替换为“下一年的年月信息”,形成可执行sql语句。49.对于场景c,首先导出对应表的建表语句;找到建表语句中“当前年份”的年月分区语句段(partitionxxx....),添加altertable“owner.table_name”add(alter是数据库sql语言的修改语句,可以用来修改基本表)形成分区创建sql语句;最后将分区创建sql语句中的“当前年份的年月信息”替换为“下一年的年月信息”,形成可执行sql语句。50.根据上述可执行sql语句的量,计算创建分区所需的表空间大小,并与oracle数据库中表空间剩余量比较,保证有足够的表空间来创建分区。在此基础上执行上述可执行sql语句,完成分区创建。51.在上述实施方式中,优选地,基于oracle数据库的分区快速创建方法还包括:52.抽取系统表all_tab_partitions或all_tab_subpartitions中散列的年月信息标签(1个当前年份的年月标签、3个未来的年月标签),并核查所创建的下一年份数据表中年月信息是否创建完全。53.在上述实施方式中,优选地,基于oracle数据库的分区快速创建方法还包括:54.通过系统表all_indexes、all_ind_partitions、all_ind_subpartitions,检查所创建的下一年份数据表中索引状态,以分析是否存在因分区创建导致的索引失效,若有,则执行索引重建。55.在上述实施方式中,优选地,在创建临时数据表之前,确认操作用户针对oracle数据库的用户权限。56.如图3所示,本发明还提出一种基于oracle数据库的分区快速创建系统,应用如上述实施方式中任一项公开的基于oracle数据库的分区快速创建方法,包括:57.临时数表创建模块11,用于创建临时数据表,并在临时数据表中预设所需字段;58.系统数表提取模块12,用于根据oracle数据库的系统表,提取当前年份的所有分区信息,并插入临时数据表;59.语句拼装替换模块13,用于根据临时数据表中的信息拼装得到分区创建sql语句,并将分区创建sql语句中的当前年份的年月信息替换为下一年份的年月信息,形成可执行sql语句;60.分区空间判断模块14,用于根据可执行sql语句分析得到创建分区所需的空间,并与oracle数据库的剩余空间进行比较;61.数据分区创建模块15,用于在判定oracle数据库的剩余空间足够创建分区时,执行可执行sql语句,完成下一年份数据表的分区创建。62.在该实施方式中,通过将oracle数据库中已有系统表的分区信息插入预设的临时数据表,拼装得到分区创建sql语句并对sql语句替换分区创建信息,利用形成的可执行sql语句进行分区创建,能够实现定期、快速、准确创建数据分区,从而保证系统稳定运行。63.在上述实施方式中,优选地,基于oracle数据库的分区快速创建系统还包括信息完全核查模块16,用于抽取系统表中散列的年月信息标签,并核查所创建的下一年份数据表中年月信息是否创建完全。64.在上述实施方式中,优选地,基于oracle数据库的分区快速创建系统还包括索引失效检查模块17,用于检查所创建的下一年份数据表中索引状态,以分析是否存在因分区创建导致的索引失效,若有,则执行索引重建。65.在上述实施方式中,优选地,分区信息包括一维分区和二维分区方式,一维分区方式为按照年月分区,二维分区方式包括两种,一种为一维分区为区域范围、二维分区为年月分区,另一种为一维分区为年月分区、二维分区为区域范围或哈希值。66.在上述实施方式中,优选地,在临时数表创建模块11创建临时数据表之前,确认操作用户针对oracle数据库的用户权限。67.根据上述实施方式中公开的基于oracle数据库的分区快速创建系统,其各模块所要实现的功能分别与上述实施方式中公开的分区快速创建方法中的各步骤分别对应一致,具体参见上述实施方式,在此不再赘述。68.以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部