Oracle海量数据自动化归档平台的研究与实现
2018-10-10王小刚汪贺
王小刚 汪贺
摘要:本论文针对电信行业中每月产生的海量数据,设计和实现了自动化归档平台,通过此平台可灵活的配置每张表的归档与清理策略,实现了海量数据的自动化归档与清理。该系统基于linux系统与oracle数据库,使用JAVA开发,采用B/S架构,通过任务调度的方式,实现归档与清理的自动化,批量化。
关键词:Oracle;数据归档;归档平台;数据迁移
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2018)07-0069-02
1 归档平台应用背景
(1)目前系统中生产库需要归档的表大致可以分为以下几类:1)以时间与编号命名的表,表名格式为tablename_yyyyMM_n。2)分区以時间命名的表,这类表都为分区表,分区名格式为PART_yyyyMM。3)以某个字段进行归档的表,包含一个归档的依据字段。
(2)在使用归档平台之前所使用的归档方式。在使用归档平台之前都是通过脚本的方式进行归档,通过create archiveTable as select * from sourceTable@dblink where a>b的方式从生产数据库归档到备份数据库。这种方式有脚本维护复杂,丢失表原有的结构等弊端。
2 归档平台的系统实现
2.1 整体设计架构
系统主要由三部分组成,生产库,归档平台,备份库,如图1所示。
2.2 归档任务流程(图2)
(1)用户在登录归档平台后选择生产库表,根据生产库表分类创建归档策略。(2)保存归档策略到应用数据库。(3)任务调度系统在特定时间触发调度任务。(4)调度任务根据用户设置的归档策略与参数生成归档脚本。(5)归档平台复制脚本到备份库所在主机。(6)归档平台执行通过nohup的方式远程启动归档脚本。(7)脚本执行impdp命令,执行归档。(8)脚本在执行成功以后通过调用归档平台的soap接口,通知归档平台任务已完成。(9)归档平台通过sftp取回脚本执行日志。(10)归档平台保存执行结果。(11)归档平台在任务结果返回后保存清理源库的sql语句到数据库。(12)生产库主机上的cron定时任务到应用数据库获取清理sql语句。(13)生成清理脚本。(14)用户登录生产库主机审核清理脚本。(15)生产库主机执行清理脚本。
3 归档平台的关键技术
3.1 不同类型表的归档策略
针对上文中提到的三种不同类型的表,归档平台制定了三种不同的归档方案:
(1)针对以时间与编号命名的表,通过正则的方式匹配生产库中的表名,然后根据生产库需要保留的月份与执行的月份生成实际要归档的表名。(2)针对分区以时间命名的表,通过正则的方式匹配生产库中表的分区名称,计算出实际归档的分区名,然后将分区数据导出为单表。(3)针对以某个字段进行归档的表,通过字段生成查询条件,在执行归档命令时使用此查询条件。
3.2 任务调度
我们选用了开源框架quartz进行任务的调度。同时设计了特定的任务线程队列,该线程队列能够控制生产库与备份库上同时执行的任务的数量。
3.3 脚本的生成与执行
根据不同的归档策略后台会生成相应的归档脚本与源库清理脚本,归档脚本执行成功后再执行清理脚本。
4 归档平台的实际应用
目前归档平台已在山西移动公司实际部署使用,目前已接入20个生产库与10个备份库,每月归档表5000张以上,数据量10TB左右。备份任务在10个小时之内可全部完成,相比之前的归档方式归档效率提高一倍以上。
参考文献
[1]林树泽,卢芬,柳冬青.Oracle DBA 高可用、备份恢复与性能优化[M].清华大学出版社,2015.
[2]张婷婷.Oracle数据库备份恢复策略的研究与实现[J].计算机应用技术,2017,(3):49-51.
[3]何平.海量数据库系统高性能备份的研究与实现[D].国防科学技术大学,2005.