章 碧
(中国船舶重工集团公司第七二四研究所,南京 211153)
辐射源目标数据库为辐射源目标侦测系统提供各种数据服务。随着使用时间的增长,一方面辐射源目标数据库中存储的数据量越来越大,以致存满整个存储设备;另一方面数据库软件以及数据库文件的硬件载体均可能产生故障,如Oracle数据库软件自身的控制文件或者日志文件损坏,磁盘阵列中出现坏点或者坏块,从而造成辐射源目标数据库无法正常提供数据服务。因此,必须为辐射源目标数据库制定一套完善的数据库备份还原方案,实现辐射源目标数据库简单有效的维护与管理。
对于处于7×24工作模式,即一直处于服务状态的辐射源目标数据库,可以利用Oracle数据库软件自带的RMAN[1]工具进行备份还原计划的制定。比如,在数据库没有数据业务的深夜里,按照星期做一个循环数据备份的方案,在每天凌晨0点~2点,星期日做一个完全备份,星期一和星期四做一个1级的差异增量备份,一个星期中的其他日子则每天做一个2级差异增量备份,在数据库服务出现故障时可以利用RMAN备份文件使数据库回到最近一天无故障的状态。采用RMAN工具制定数据备份方案的前提是严格掌握数据库服务的时间规律,不适用于不定时关闭的辐射源目标数据库。
为了维护不定时关闭的辐射源目标数据库,可以根据辐射源目标数据库结构的特点,采用分而治之、化整为零的备份还原策略。
辐射源目标数据库可以分为基础库与增量库两部分。在初始建立辐射源目标数据库时,根据存储数据量的不同,将不同类型的数据分别采用单表存储和分表存储的方式。对诸如操控信息、字典信息之类的数据,数据量小,采用单表存储的方式;而对于各种辐射源目标信息,数据量大,采用多表存储的方式。例如,在存储敌我识别信号(IFF)解译信息时采用IFF解译信息索引表与IFF解译信息子表相结合的方式,见图1。
IFF解译信息索引表的数据量小,采用单表存储的方式。IFF解译信息存储的数据量大,则将其拆分为多个子表,采用分表存储的方式。类似地,可以将其他不同类型的辐射源目标进行存储。
根据上述辐射源目标数据库结构特点,可以将全部的辐射源目标子表数据归于增量库,而库中的其他数据归于基础库。增量库与基础库之间唯一的关联是各种辐射源目标信息的索引信息。
考虑到辐射源目标数据库的不定时关闭,在一天内基础库中数据量变化小并且进行一次完整的基础库备份占用的时间短,可以根据基础库内产生变化数据的重要性,来决定进行基础库备份的频率或者自动发起备份。在基础库中没有发生重要的数据变化时,默认一天进行一次基础库的备份。进行备份业务的起始时间为每次辐射源目标数据库开启数据服务时。如果辐射源目标数据库一直开启,则每隔一天做一次基础库的备份,而在基础库中发生重要的数据变化时自动向数据库发送备份基础库的命令。
为了实现基础库的自动循环备份和命令响应备份,可以通过建立批处理文件调用数据泵[2]备份工具expdp的方式来实现,其具体方式为创建一个名为exp.bat的批处理文件。它实现基础库备份功能的流程如图2所示。
通过上述流程可以看出,每次运行批处理文件exp.bat之后,基础库备份文件夹中会产生最近一次基础库的备份数据,并且该备份数据为加密压缩数据。这既节省了数据存储空间又能保证数据安全。
随着时间的累加,增量库中各种辐射源目标存储的量不断增大,做一次完整的增量库备份耗费的时间也会不断增大。因此,备份增量库不采用完整备份的方式,而是采用化整为零、每次仅备份一个目标数据子表的方式。
在增量库中,每当一张编号为N(N为大于零的自然数)目标数据子表中存满一百万条目标信息时会产生一张编号为N+1的新子表。此时,将编号为N的数据子表通过数据泵备份工具expdp单独导出并加密压缩。建立一个名为exp_table.bat的批处理文件,它实现单一子表数据备份的流程如图3所示。
根据任意一种辐射源目标数据子表从建立到存满数据的最短时间来设置时间间隔。每经过这个固定的时间间隔,判断增量库中是否存在已存满数据的目标数据子表,然后利用批处理文件exp_table.bat导出并加密压缩。
在还原辐射源目标数据库时,可以分为以下7步来进行:
第1步:关闭数据库监听服务,断开所有数据库用户的连接;
第2步:删除数据库中的所有数据;
第3步:重新建立数据库的逻辑结构和物理结构,如表空间、数据文件和用户等内容;
第4步:解密解压基础库备份中的压缩文件,并利用数据泵还原工具impdp导入基础库数据,导入完成后删除解压后的数据文件;
第5步:遍历增量库备份文件夹,解密解压每一个目标数据子表压缩文件,并利用数据泵还原工具impdp导入每个文件中的数据,导入完成后删除解压文件;
第6步:修改基础库中目标索引表中的索引信息,使索引信息与目标数据子表内容同步;
第7步:打开数据库监听服务,完成数据库的还原。
通过实验结果证明,采用上述分库备份还原策略,成功实现了辐射源目标数据库的分库备份与还原。
随着时间的累加,辐射源目标数据库中存储的目标数据越来越多,数据库占用的存储空间越来越大,而对于辐射源目标数据库用户而言,已存储的时间久远一些(如1年前)的目标数据,使用频率低甚至完全不使用。因此,有必要对数据库进行剪裁,实现数据库存储空间的有效利用。
从上述分库备份还原策略中可知,对任意一张辐射源目标信息子表,可以利用数据泵工具expdp导出数据后加密压缩生成表备份文件,反之也可以将表备份文件进行解密解压后生成表数据文件后利用数据泵还原工具impdp导入到辐射源目标数据库中。由此,可以为辐射源目标数据库中的目标信息子表提供单表删除、备份和还原功能,以及多表批量删除、备份和还原功能,如图4所示。
对于不再存在使用需求的目标数据子表可以直接删除。对于不确定以后是否存在使用需求的目标数据子表可以进行数据导出并生成加密压缩表备份文件,然后直接删除。一旦需要使用已删除的子表数据,可以将表备份文件解密解压,重新导入数据库中,以满足使用需求。进行多表批量操作时,选择多个表格,有按照子表序号和按照时间段两种方式。
在还原数据库之前,将增量库中的表备份文件夹中的部分文件拷贝到其他存储设备中,然后进行数据库还原。还原后的数据库中不包含已转存表备份文件中的数据,同样可以实现数据库的剪裁[3]。
将基础库备份文件和增量库备份文件全部拷贝到另一台数据库服务器上的相应存储目录中之后,在新的数据库服务器上新建一个与原辐射源目标数据库同名的新数据库,可以直接将原数据库在新的服务器上还原,实现数据库的整体移植。每当原数据库产生新的目标数据子表备份文件之后,可以拷贝这些文件到新数据库服务器的相应存储目录中,使用多表批量还原功能,实现两个数据库之间的数据同步[1]。
无论辐射源目标数据库服务因为软件还是硬件产生故障,只要基础库备份文件和增量库备份文件完好,按照上述数据库移植的方法重建同名的数据库,然后进行数据库还原,从而完全恢复数据库服务。
分库备份还原策略存在以下7大优点:
(1) 数据库备份实现了完全自动化,避免了人工备份操作的繁琐;
(2) 避免了随着时间的累加数据库内容越来越多、进行一次完整的数据库备份的时间也会越来越长、备份文件占用的存储空间也会越来越大的问题;
(3) 数据库服务可以随时开启或者关闭;
(4) 可以将数据库增量库中的备份文件进行方便的管理,在还原数据库时可以还原部分目标数据,实现数据库的数据剪裁;
(5) 数据库备份文件可以移植到其他存储设备中,从而部分释放当前存储空间;
(6) 便于数据库的整体移植;
(7) 在部分目标数据子表被删除之后,利用增量库备份中的备份文件可以定向恢复。
同时,分库备份还原策略存在以下两大不足:
(1) 由于数据库中的基础库备份的时间和增量库备份的时间无法完全一致,数据库还原时不能恢复到数据库在某一个时间点上的状态,还原后的数据库中基础库和增量库数据在时间上不同步;
(2) 由于增量库备份中只含有已存满目标数据的子表,在还原时会损失未存满目标数据的子表。
由于数据库在还原过程中经过了目标数据索引表和目标数据子表内容的同步,并且基础库中的其他数据与增量库相对独立,虽然还原后的数据库中基础库和增量库数据在时间上不同步,却并不会产生任何影响数据服务功能的缺陷。目标数据的部分损失无法完全消除。但是,为了挽回数据库还原时损失的部分数据,在进行增量库备份时可以根据辐射源目标数据库用户能接受的数据损失,比如30 min内的目标数据,单独备份未存满目标数据的子表。具体流程见图5。
从上述流程图中可以看出,每隔30 min钟将未存满目标数据的子表做一次备份以替换原有备份,在进行数据库还原时最多损失30 min的目标数据。
本文所介绍的辐射源目标数据库数据维护与管理的方法避免了频繁的人工维护,实现了数据库备份管理的全自动化,使数据库还原变得非常简便,并且数据库中的目标数据得到了更加有效而可靠地管理,数据库存储空间得到了更充分的利用。通过实际应用,该方法的有效性得到了充分的验证。