倪友忠,王琦瓏,鐘衛(wèi)星,葉 青,教聰聰,朱國豪,方 韜
(1.上海市地震局佘山基準地震臺,上海 200062;2.湖南省地震局,湖南 長沙 410004)
佘山基準地震臺(以下簡稱佘山臺)作為全國形變6個標準化臺站之一,自2000年以來,安裝了重力、傾斜、應變等多套形變觀測儀器,觀測項目比較完備。隨后陸續(xù)安裝了高采樣率的重力儀、寬頻帶傾斜儀、YRY-4超寬頻帶應變儀等高精度、高采樣的儀器入網,地震前兆觀測數(shù)據(jù)量劇增。臺站工作人員除每天保證Oracle 數(shù)據(jù)庫服務器的安全穩(wěn)定運行外,還要對日常觀測原始數(shù)據(jù)等重要觀測資料進行定期備份,工作量較大。
對于大型數(shù)據(jù)庫,如,“十五”前兆Oracle數(shù)據(jù)庫,常用的備份方式有“十五”地震前兆管理系統(tǒng)備份、冷備份和導入導出備份、準在線冷備份、RMAN方式、Data Guard方式、Golden Gate方式。王軍等的地震前兆 Oracle 數(shù)據(jù)庫備份策略與應用及陳傳華等在前兆管理系統(tǒng)數(shù)據(jù)庫冷備份及恢復方法實現(xiàn)等研究中,進行了闡述[1-2]。上述方式操作均相對復雜,對維護人員的專業(yè)知識要求高,需經過專業(yè)培訓,對臺站普通工作人員不適合。
從經濟效益和使用方便、操作相對簡單的角度出發(fā),可采用Oracle自帶工具、自行開發(fā)軟件或者免費軟件對數(shù)據(jù)庫進行備份。葉應樹等開發(fā)的基于asp的宏觀前兆信息在線管理系統(tǒng)[3]就是目前臺站比較通用的一種Oracle數(shù)據(jù)庫服務器備份方式。臺站Oracle數(shù)據(jù)庫的日常數(shù)據(jù)量相對較小,需要每天及時備份的數(shù)據(jù)信息不多。所以,通過自行開發(fā)軟件,對Oracle數(shù)據(jù)庫進行及時的備份是較適用于臺站數(shù)據(jù)備份的一種方式。
佘山臺目前有2臺服務器,均搭建SUC及Oracle11平臺,并通過冷備份的方式,將臺站信息、大部分歷史觀測資料及基礎信息等,遷移至備份服務器中。備份服務器每天同步更新主服務器的日常觀測信息,保證2臺服務器的一致性。
參考洪旭瑜等福建前兆數(shù)據(jù)交換與同步問題的探討一文[4],認識到通過自行開發(fā)軟件,對主服務器Oracle數(shù)據(jù)庫中的數(shù)據(jù),及時同步更新,也是目前臺站比較適用的一種備份方式。因此,筆者開發(fā)設計佘山臺前兆數(shù)據(jù)庫智能維護系統(tǒng),通過該軟件平臺,每天定時將運行在地震前兆管理系統(tǒng)主服務器庫的所有前兆數(shù)據(jù)、觀測日志等信息,通過定時器功能,及時地將臺站所有的前兆儀器數(shù)據(jù)、工作日志、儀器日志等備份到臺站備份服務器Oracle數(shù)據(jù)庫中。在主服務器發(fā)生故障而無法修復時,可切換到備份服務器,實現(xiàn)并行觀測。該設計的程序流程圖如第28頁圖1所示。
圖1 程序流程簡圖Fig.1 Program flow chart
平臺設計主要涉及以下研究內容,一是臺站信息的匯集。為增強平臺的可移植性,方便平臺在全國其他臺站進一步推廣應用,軟件平臺必須具備信息智能檢索及匯集的功能,通過配置智能信息表,實現(xiàn)快速配置臺站所有觀測儀器的信息、臺站代碼、儀器代碼、值班日志信息等;二是信息參數(shù)配置,方便臺站及時增加和修改儀器配置信息、臺站測項信息等;三是智能備份功能的開發(fā),可以設置備份要素,方便臺站備份所需信息,具備設置實時備份條件和觸發(fā)因子功能;四是備份服務器信息檢查及查缺。建立查詢語句模塊,具備自動查詢源數(shù)據(jù)庫和備份數(shù)據(jù)庫中的數(shù)據(jù)差異,實現(xiàn)自動補缺,保證2臺服務器(主服務器及備份服務器)之間數(shù)據(jù)的同步性;五是當部分臺站由于某些原因不具備購買備份服務器時,該平臺另外開發(fā)本地備份(臺站電腦)與主服務器之間的數(shù)據(jù)同步功能,將主服務器數(shù)據(jù)庫中的數(shù)據(jù)與本地文件進行對比,查詢源數(shù)據(jù)庫和本地備份的數(shù)據(jù)差異,及時補缺,實現(xiàn)本地電腦與主服務器之間的數(shù)據(jù)同步。
根據(jù)上述研究內容,將軟件基本功能劃分為信息匯集單元、參數(shù)設置單元、數(shù)據(jù)備份單元、數(shù)據(jù)檢查單元四大模塊。設計的系統(tǒng)總體功能結構圖如圖2所示。
圖2 系統(tǒng)總體功能結構圖Fig.2 Overall functional structure diagram of the system
信息匯集單元包括臺站信息檢測、測項信息檢測;參數(shù)設置單元包括網絡參數(shù)信息、臺站測項信息、臺站其他信息;數(shù)據(jù)備份單元包括定時功能設置、備份信息表設置;數(shù)據(jù)檢查單元包括觀測信息查缺、其他信息查缺。
系統(tǒng)基于Vbasic.net架構,前端采用Oracle 11g數(shù)據(jù)庫系統(tǒng),主要功能模塊采用Visual basic.net編寫。利用ADO.NET數(shù)據(jù)庫訪問框架,對數(shù)據(jù)源一致訪問。應用程序使用ADO.NET連接到Oracle 11g數(shù)據(jù)源,檢索、處理、更新其中包含的數(shù)據(jù)。ADO.NET提供數(shù)據(jù)庫應用程序前臺和后臺之間的通信通道,在數(shù)據(jù)庫應用程序中起到關鍵的作用(見圖3)。
圖3 ADO.NET結構原理圖Fig.3 ADO.NET structural diagram
ADO.NET是.NET框架中的一系列類庫,運用這些類庫可以在數(shù)據(jù)庫應用程序中使用和操作數(shù)據(jù)。ADO.NET通過兩個核心組件.NET Framework數(shù)據(jù)提供程序和DataSet(數(shù)據(jù)集)將數(shù)據(jù)訪問和數(shù)據(jù)處理分離。NET Framework數(shù)據(jù)提供程序(Data Provider)是專門為數(shù)據(jù)操作及快速、只進、只讀訪問數(shù)據(jù)而設計的組件,有OleDb、ODBC、SqlClient和Oracle四種數(shù)據(jù)提供程序,包含Connection、Command、DataReader、DataAdapter四個對象。
應用程序與數(shù)據(jù)庫通信,首先檢索存儲在那里的數(shù)據(jù),并以用戶友好的方式呈現(xiàn);其次,通過插入、修改和刪除數(shù)據(jù)來更新數(shù)據(jù)庫。Microsoft ActiveX Data Objects.Net(ADO.Net)是一個模型,.Net框架的一部分,由.Net應用程序用于檢索訪問和更新數(shù)據(jù)。.Net框架提供兩種類型的Connection類:SqlConnection -設計用于連接到Microsoft SQL Server;OleDbConnection -設計用于連接到各種數(shù)據(jù)庫,如Microsoft Access和Oracle。
Oracle數(shù)據(jù)庫鏈接數(shù)據(jù)程序如下:
Imports System.Data.OracleClient / / 引用System.Data.OracleClient.dll動態(tài)鏈
Public conn As New ADODB.Connection / / 定義ADODB的鏈接對象
{
conn = New ADODB.Connection
With conn
.Provider = "OraOLEDB.Oracle.1"
.ConnectionString = "Data Source=" + cmb_db1.Text.Trim + ";Persist Security Info=False;Password=" + PasswordTextBox1.Text.Trim + ";User ID=" + Cmb_username1.Text.Trim
.Open()
End With
}
為增強平臺的可移植性,軟件必須具備智能檢索及匯集的功能。通過智能檢索,快速配置臺站獨有的
儀器信息、臺站信息、測項信息等。前兆數(shù)據(jù)庫包含的信息主要有前兆數(shù)據(jù)(模擬、數(shù)字化原始、數(shù)字化預處理前兆數(shù)據(jù),流動觀測數(shù)據(jù)、產品數(shù)據(jù)等)、觀測日志信息、臺站基礎信息、臺站測項信息、觀測場地基本信息、前兆觀測儀器信息、數(shù)據(jù)分類信息等。表1是Oracle數(shù)據(jù)庫儀器信息表的表結構形式。
表1 儀器信息表Table 1 Instrument information sheet
首次使用該平臺時,先進入信息匯集單元功能模塊界面(見圖4)。該模塊單元主要功能是通過檢索臺站測點信息表、臺站儀器運行信息表、臺站測項分量信息表,讀取臺站運維中的所有觀測點儀器信息、臺站信息,供軟件平臺使用者根據(jù)臺站實際運行情況自行選擇儀器測項,并形成相關配置文件。形成的配置文件包括臺站儀器運行信息文件sample.txt、臺站測項信息文件instrument.txt等,分別保存在軟件平臺的安裝目錄inf文件夾下,方便以后臺站操作人員進行修改。
圖4 信息匯集單元功能界面Fig.4 Function interface of information collection unit
智能維護系統(tǒng)最重要的一部分功能是數(shù)據(jù)同步遷移(備份),主要包含備份Oracle數(shù)據(jù)庫服務器的數(shù)據(jù)同步遷移(備份)及本地數(shù)據(jù)同步遷移(備份)。數(shù)據(jù)同步遷移(備份)內容有觀測日志信息、臺站基礎信息、臺站測項信息、觀測場地信息,觀測儀器信息、前兆數(shù)據(jù)(包含內容如前文所述),界面如第30頁圖5所示。
圖5 Oracle 數(shù)據(jù)庫數(shù)據(jù)備份功能界面Fig.5 Oracle database data backup function interface
在該功能設計中的自動定時備份功能模塊,采用Timer定時器工具,是一種線程用于調度任務的工具,被調度的任務將來可在一個后臺線程中執(zhí)行。這些任務可以被調度為只執(zhí)行一次,或者以一定的時間間隔重復執(zhí)行。TimerTask是一個抽象類,它的子類代表一個可以被Timer計劃的任務,具體的任務在TimerTask中的run接口實現(xiàn)。同時為防止系統(tǒng)在運行自動備份功能的過程中,工作人員在操作其他事宜而導致系統(tǒng)崩潰,使得備份任務未被及時執(zhí)行。所以,在設計該功能時,采用VB.net的多線程技術。一個采用多線程技術的應用程序可以更好地利用系統(tǒng)資源,其主要優(yōu)勢在于充分利用CPU的空閑時間片,用盡可能少的時間對用戶的要求做出響應,使得進程的整體運行效率得到較大提高,同時增強應用程序的靈活性。更重要的是,由于同一進程的所有線程共享同一內存,所以不需要特殊的數(shù)據(jù)傳送機制,不需要建立共享存儲區(qū)或共享文件,使得不同任務之間的協(xié)調操作與運行、數(shù)據(jù)的交互、資源的分配等問題更易于解決。多線程運行程序如下:
Imports System.Threading / / 引用多線程功能
{
Dim tmpThead As System.Threading.Thread
tmpThead = New System.Threading.Thread(AddressOf MyTimeClass.copydatabase)
tmpThead.Start()
}
另外,該數(shù)據(jù)備份單元還設計有本地備份及還原功能,為不具備備份服務器的臺站設計的數(shù)據(jù)庫本地同步機制,主要功能有定時備份、還原。利用Timer定時器,設置一個單后臺線程,自動往本地電腦定時下載臺站每天更新的觀測日志信息、前兆數(shù)據(jù)(包含內容同前所述)等完整信息。如遇到主服務器內容因其他原因而導致缺失,則可以自動同步到服務器數(shù)據(jù)庫中,保障Oracle服務器數(shù)據(jù)庫觀測信息的完整。
智能維護系統(tǒng)的另一個重要功能是主服務器及備份服務器數(shù)據(jù)庫一致性的檢查,界面如第31頁圖6所示。通過對比檢查兩種服務器中存在的所有數(shù)據(jù)記錄,確認備份服務器是否對主服務器中存在的所有數(shù)據(jù)記錄都進行了數(shù)據(jù)遷移。檢查的內容主要包括前兆數(shù)據(jù)(包含內容同前所述)、觀測日志信息、臺站基礎信息、臺站測項信息、觀測場地基本信息、前兆觀測儀器信息等。備份的要點是,如果發(fā)現(xiàn)備份數(shù)據(jù)庫中缺失,則自動啟動備份功能,及時將備份服務器數(shù)據(jù)庫中缺失信息自動補齊。同時為保證兩種服務器數(shù)據(jù)庫的一致,如果出現(xiàn)備份服務器數(shù)據(jù)庫已有記錄,但信息不完全,則先進行刪除再添加,從根本上保證兩種服務器信息的一致性、完整性。
圖6 數(shù)據(jù)庫一致性檢查功能界面Fig.6 Database consistency check function interface
軟件設計的功能包含二種,比對日常觀測信息和基礎信息。設置二個功能模塊的目的是,由于冷遷移過程中,有可能主服務器的部分信息未及時遷移到備份服務器中。為保證二者數(shù)據(jù)的一致性,有必要增加基礎信息和日常觀測信息的分別比對功能。
數(shù)據(jù)庫一致性檢查也采用多線程技術,防止程序在檢查的過程中,數(shù)據(jù)量過大而造成死機。同時為防止軟件平臺頻繁重復地對兩種服務器信息一致性的檢查,將檢查過的信息記錄在案,當程序再次開啟數(shù)據(jù)庫一致性檢查功能時,會跳過已檢查的主庫記錄。
從數(shù)據(jù)庫完全性和一致性上考慮,Oracle數(shù)據(jù)庫冷備份模式是較好的一種備份方式,但對操作人員的要求相對較高,要求具備SUC及Oracle的基本操作技能。臺站工作人員,由于各種原因,技能參差不齊,對該系統(tǒng)掌握運用的程度也不同。為保障臺站觀測數(shù)據(jù)的完整性,筆者結合臺站的實際情況,在界面設計上力求簡潔,并實現(xiàn)簡單的操作。目前,通過地震臺站的
測試和使用,表明佘山臺前兆數(shù)據(jù)庫智能維護系統(tǒng)已達到預期效果。今后將對程序中存在的一些設計缺陷,進一步完善,改進系統(tǒng)功能,實現(xiàn)在更多臺站推廣應用。