章 碧
(中國船舶重工集團公司第七二四研究所,南京 211153)
輻射源目標(biāo)數(shù)據(jù)庫為輻射源目標(biāo)偵測系統(tǒng)提供各種數(shù)據(jù)服務(wù)。隨著使用時間的增長,一方面輻射源目標(biāo)數(shù)據(jù)庫中存儲的數(shù)據(jù)量越來越大,以致存滿整個存儲設(shè)備;另一方面數(shù)據(jù)庫軟件以及數(shù)據(jù)庫文件的硬件載體均可能產(chǎn)生故障,如Oracle數(shù)據(jù)庫軟件自身的控制文件或者日志文件損壞,磁盤陣列中出現(xiàn)壞點或者壞塊,從而造成輻射源目標(biāo)數(shù)據(jù)庫無法正常提供數(shù)據(jù)服務(wù)。因此,必須為輻射源目標(biāo)數(shù)據(jù)庫制定一套完善的數(shù)據(jù)庫備份還原方案,實現(xiàn)輻射源目標(biāo)數(shù)據(jù)庫簡單有效的維護與管理。
對于處于7×24工作模式,即一直處于服務(wù)狀態(tài)的輻射源目標(biāo)數(shù)據(jù)庫,可以利用Oracle數(shù)據(jù)庫軟件自帶的RMAN[1]工具進行備份還原計劃的制定。比如,在數(shù)據(jù)庫沒有數(shù)據(jù)業(yè)務(wù)的深夜里,按照星期做一個循環(huán)數(shù)據(jù)備份的方案,在每天凌晨0點~2點,星期日做一個完全備份,星期一和星期四做一個1級的差異增量備份,一個星期中的其他日子則每天做一個2級差異增量備份,在數(shù)據(jù)庫服務(wù)出現(xiàn)故障時可以利用RMAN備份文件使數(shù)據(jù)庫回到最近一天無故障的狀態(tài)。采用RMAN工具制定數(shù)據(jù)備份方案的前提是嚴格掌握數(shù)據(jù)庫服務(wù)的時間規(guī)律,不適用于不定時關(guān)閉的輻射源目標(biāo)數(shù)據(jù)庫。
為了維護不定時關(guān)閉的輻射源目標(biāo)數(shù)據(jù)庫,可以根據(jù)輻射源目標(biāo)數(shù)據(jù)庫結(jié)構(gòu)的特點,采用分而治之、化整為零的備份還原策略。
輻射源目標(biāo)數(shù)據(jù)庫可以分為基礎(chǔ)庫與增量庫兩部分。在初始建立輻射源目標(biāo)數(shù)據(jù)庫時,根據(jù)存儲數(shù)據(jù)量的不同,將不同類型的數(shù)據(jù)分別采用單表存儲和分表存儲的方式。對諸如操控信息、字典信息之類的數(shù)據(jù),數(shù)據(jù)量小,采用單表存儲的方式;而對于各種輻射源目標(biāo)信息,數(shù)據(jù)量大,采用多表存儲的方式。例如,在存儲敵我識別信號(IFF)解譯信息時采用IFF解譯信息索引表與IFF解譯信息子表相結(jié)合的方式,見圖1。
IFF解譯信息索引表的數(shù)據(jù)量小,采用單表存儲的方式。IFF解譯信息存儲的數(shù)據(jù)量大,則將其拆分為多個子表,采用分表存儲的方式。類似地,可以將其他不同類型的輻射源目標(biāo)進行存儲。
根據(jù)上述輻射源目標(biāo)數(shù)據(jù)庫結(jié)構(gòu)特點,可以將全部的輻射源目標(biāo)子表數(shù)據(jù)歸于增量庫,而庫中的其他數(shù)據(jù)歸于基礎(chǔ)庫。增量庫與基礎(chǔ)庫之間唯一的關(guān)聯(lián)是各種輻射源目標(biāo)信息的索引信息。
考慮到輻射源目標(biāo)數(shù)據(jù)庫的不定時關(guān)閉,在一天內(nèi)基礎(chǔ)庫中數(shù)據(jù)量變化小并且進行一次完整的基礎(chǔ)庫備份占用的時間短,可以根據(jù)基礎(chǔ)庫內(nèi)產(chǎn)生變化數(shù)據(jù)的重要性,來決定進行基礎(chǔ)庫備份的頻率或者自動發(fā)起備份。在基礎(chǔ)庫中沒有發(fā)生重要的數(shù)據(jù)變化時,默認一天進行一次基礎(chǔ)庫的備份。進行備份業(yè)務(wù)的起始時間為每次輻射源目標(biāo)數(shù)據(jù)庫開啟數(shù)據(jù)服務(wù)時。如果輻射源目標(biāo)數(shù)據(jù)庫一直開啟,則每隔一天做一次基礎(chǔ)庫的備份,而在基礎(chǔ)庫中發(fā)生重要的數(shù)據(jù)變化時自動向數(shù)據(jù)庫發(fā)送備份基礎(chǔ)庫的命令。
為了實現(xiàn)基礎(chǔ)庫的自動循環(huán)備份和命令響應(yīng)備份,可以通過建立批處理文件調(diào)用數(shù)據(jù)泵[2]備份工具expdp的方式來實現(xiàn),其具體方式為創(chuàng)建一個名為exp.bat的批處理文件。它實現(xiàn)基礎(chǔ)庫備份功能的流程如圖2所示。
通過上述流程可以看出,每次運行批處理文件exp.bat之后,基礎(chǔ)庫備份文件夾中會產(chǎn)生最近一次基礎(chǔ)庫的備份數(shù)據(jù),并且該備份數(shù)據(jù)為加密壓縮數(shù)據(jù)。這既節(jié)省了數(shù)據(jù)存儲空間又能保證數(shù)據(jù)安全。
隨著時間的累加,增量庫中各種輻射源目標(biāo)存儲的量不斷增大,做一次完整的增量庫備份耗費的時間也會不斷增大。因此,備份增量庫不采用完整備份的方式,而是采用化整為零、每次僅備份一個目標(biāo)數(shù)據(jù)子表的方式。
在增量庫中,每當(dāng)一張編號為N(N為大于零的自然數(shù))目標(biāo)數(shù)據(jù)子表中存滿一百萬條目標(biāo)信息時會產(chǎn)生一張編號為N+1的新子表。此時,將編號為N的數(shù)據(jù)子表通過數(shù)據(jù)泵備份工具expdp單獨導(dǎo)出并加密壓縮。建立一個名為exp_table.bat的批處理文件,它實現(xiàn)單一子表數(shù)據(jù)備份的流程如圖3所示。
根據(jù)任意一種輻射源目標(biāo)數(shù)據(jù)子表從建立到存滿數(shù)據(jù)的最短時間來設(shè)置時間間隔。每經(jīng)過這個固定的時間間隔,判斷增量庫中是否存在已存滿數(shù)據(jù)的目標(biāo)數(shù)據(jù)子表,然后利用批處理文件exp_table.bat導(dǎo)出并加密壓縮。
在還原輻射源目標(biāo)數(shù)據(jù)庫時,可以分為以下7步來進行:
第1步:關(guān)閉數(shù)據(jù)庫監(jiān)聽服務(wù),斷開所有數(shù)據(jù)庫用戶的連接;
第2步:刪除數(shù)據(jù)庫中的所有數(shù)據(jù);
第3步:重新建立數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu),如表空間、數(shù)據(jù)文件和用戶等內(nèi)容;
第4步:解密解壓基礎(chǔ)庫備份中的壓縮文件,并利用數(shù)據(jù)泵還原工具impdp導(dǎo)入基礎(chǔ)庫數(shù)據(jù),導(dǎo)入完成后刪除解壓后的數(shù)據(jù)文件;
第5步:遍歷增量庫備份文件夾,解密解壓每一個目標(biāo)數(shù)據(jù)子表壓縮文件,并利用數(shù)據(jù)泵還原工具impdp導(dǎo)入每個文件中的數(shù)據(jù),導(dǎo)入完成后刪除解壓文件;
第6步:修改基礎(chǔ)庫中目標(biāo)索引表中的索引信息,使索引信息與目標(biāo)數(shù)據(jù)子表內(nèi)容同步;
第7步:打開數(shù)據(jù)庫監(jiān)聽服務(wù),完成數(shù)據(jù)庫的還原。
通過實驗結(jié)果證明,采用上述分庫備份還原策略,成功實現(xiàn)了輻射源目標(biāo)數(shù)據(jù)庫的分庫備份與還原。
隨著時間的累加,輻射源目標(biāo)數(shù)據(jù)庫中存儲的目標(biāo)數(shù)據(jù)越來越多,數(shù)據(jù)庫占用的存儲空間越來越大,而對于輻射源目標(biāo)數(shù)據(jù)庫用戶而言,已存儲的時間久遠一些(如1年前)的目標(biāo)數(shù)據(jù),使用頻率低甚至完全不使用。因此,有必要對數(shù)據(jù)庫進行剪裁,實現(xiàn)數(shù)據(jù)庫存儲空間的有效利用。
從上述分庫備份還原策略中可知,對任意一張輻射源目標(biāo)信息子表,可以利用數(shù)據(jù)泵工具expdp導(dǎo)出數(shù)據(jù)后加密壓縮生成表備份文件,反之也可以將表備份文件進行解密解壓后生成表數(shù)據(jù)文件后利用數(shù)據(jù)泵還原工具impdp導(dǎo)入到輻射源目標(biāo)數(shù)據(jù)庫中。由此,可以為輻射源目標(biāo)數(shù)據(jù)庫中的目標(biāo)信息子表提供單表刪除、備份和還原功能,以及多表批量刪除、備份和還原功能,如圖4所示。
對于不再存在使用需求的目標(biāo)數(shù)據(jù)子表可以直接刪除。對于不確定以后是否存在使用需求的目標(biāo)數(shù)據(jù)子表可以進行數(shù)據(jù)導(dǎo)出并生成加密壓縮表備份文件,然后直接刪除。一旦需要使用已刪除的子表數(shù)據(jù),可以將表備份文件解密解壓,重新導(dǎo)入數(shù)據(jù)庫中,以滿足使用需求。進行多表批量操作時,選擇多個表格,有按照子表序號和按照時間段兩種方式。
在還原數(shù)據(jù)庫之前,將增量庫中的表備份文件夾中的部分文件拷貝到其他存儲設(shè)備中,然后進行數(shù)據(jù)庫還原。還原后的數(shù)據(jù)庫中不包含已轉(zhuǎn)存表備份文件中的數(shù)據(jù),同樣可以實現(xiàn)數(shù)據(jù)庫的剪裁[3]。
將基礎(chǔ)庫備份文件和增量庫備份文件全部拷貝到另一臺數(shù)據(jù)庫服務(wù)器上的相應(yīng)存儲目錄中之后,在新的數(shù)據(jù)庫服務(wù)器上新建一個與原輻射源目標(biāo)數(shù)據(jù)庫同名的新數(shù)據(jù)庫,可以直接將原數(shù)據(jù)庫在新的服務(wù)器上還原,實現(xiàn)數(shù)據(jù)庫的整體移植。每當(dāng)原數(shù)據(jù)庫產(chǎn)生新的目標(biāo)數(shù)據(jù)子表備份文件之后,可以拷貝這些文件到新數(shù)據(jù)庫服務(wù)器的相應(yīng)存儲目錄中,使用多表批量還原功能,實現(xiàn)兩個數(shù)據(jù)庫之間的數(shù)據(jù)同步[1]。
無論輻射源目標(biāo)數(shù)據(jù)庫服務(wù)因為軟件還是硬件產(chǎn)生故障,只要基礎(chǔ)庫備份文件和增量庫備份文件完好,按照上述數(shù)據(jù)庫移植的方法重建同名的數(shù)據(jù)庫,然后進行數(shù)據(jù)庫還原,從而完全恢復(fù)數(shù)據(jù)庫服務(wù)。
分庫備份還原策略存在以下7大優(yōu)點:
(1) 數(shù)據(jù)庫備份實現(xiàn)了完全自動化,避免了人工備份操作的繁瑣;
(2) 避免了隨著時間的累加數(shù)據(jù)庫內(nèi)容越來越多、進行一次完整的數(shù)據(jù)庫備份的時間也會越來越長、備份文件占用的存儲空間也會越來越大的問題;
(3) 數(shù)據(jù)庫服務(wù)可以隨時開啟或者關(guān)閉;
(4) 可以將數(shù)據(jù)庫增量庫中的備份文件進行方便的管理,在還原數(shù)據(jù)庫時可以還原部分目標(biāo)數(shù)據(jù),實現(xiàn)數(shù)據(jù)庫的數(shù)據(jù)剪裁;
(5) 數(shù)據(jù)庫備份文件可以移植到其他存儲設(shè)備中,從而部分釋放當(dāng)前存儲空間;
(6) 便于數(shù)據(jù)庫的整體移植;
(7) 在部分目標(biāo)數(shù)據(jù)子表被刪除之后,利用增量庫備份中的備份文件可以定向恢復(fù)。
同時,分庫備份還原策略存在以下兩大不足:
(1) 由于數(shù)據(jù)庫中的基礎(chǔ)庫備份的時間和增量庫備份的時間無法完全一致,數(shù)據(jù)庫還原時不能恢復(fù)到數(shù)據(jù)庫在某一個時間點上的狀態(tài),還原后的數(shù)據(jù)庫中基礎(chǔ)庫和增量庫數(shù)據(jù)在時間上不同步;
(2) 由于增量庫備份中只含有已存滿目標(biāo)數(shù)據(jù)的子表,在還原時會損失未存滿目標(biāo)數(shù)據(jù)的子表。
由于數(shù)據(jù)庫在還原過程中經(jīng)過了目標(biāo)數(shù)據(jù)索引表和目標(biāo)數(shù)據(jù)子表內(nèi)容的同步,并且基礎(chǔ)庫中的其他數(shù)據(jù)與增量庫相對獨立,雖然還原后的數(shù)據(jù)庫中基礎(chǔ)庫和增量庫數(shù)據(jù)在時間上不同步,卻并不會產(chǎn)生任何影響數(shù)據(jù)服務(wù)功能的缺陷。目標(biāo)數(shù)據(jù)的部分損失無法完全消除。但是,為了挽回數(shù)據(jù)庫還原時損失的部分數(shù)據(jù),在進行增量庫備份時可以根據(jù)輻射源目標(biāo)數(shù)據(jù)庫用戶能接受的數(shù)據(jù)損失,比如30 min內(nèi)的目標(biāo)數(shù)據(jù),單獨備份未存滿目標(biāo)數(shù)據(jù)的子表。具體流程見圖5。
從上述流程圖中可以看出,每隔30 min鐘將未存滿目標(biāo)數(shù)據(jù)的子表做一次備份以替換原有備份,在進行數(shù)據(jù)庫還原時最多損失30 min的目標(biāo)數(shù)據(jù)。
本文所介紹的輻射源目標(biāo)數(shù)據(jù)庫數(shù)據(jù)維護與管理的方法避免了頻繁的人工維護,實現(xiàn)了數(shù)據(jù)庫備份管理的全自動化,使數(shù)據(jù)庫還原變得非常簡便,并且數(shù)據(jù)庫中的目標(biāo)數(shù)據(jù)得到了更加有效而可靠地管理,數(shù)據(jù)庫存儲空間得到了更充分的利用。通過實際應(yīng)用,該方法的有效性得到了充分的驗證。