常玉慧
(江蘇技術師范學院a.計算機工程學院;b.云計算與智能信息處理常州市重點實驗室,江蘇常州 213001)
ORACLE流復制技術在數據庫容災備份上的應用
常玉慧a,b
(江蘇技術師范學院a.計算機工程學院;b.云計算與智能信息處理常州市重點實驗室,江蘇常州 213001)
通過與Data Guard技術的分析比較,總結了ORACLE流復制技術的優勢.根據ORACLE流復制技術原理提出了一個數據庫容災備份方案,構建了一個完整的流復制項目,實驗證明該方案是可行的.
流復制;容災備份;數據庫
容災備份系統是指在相隔較遠的異地,建立兩套或多套功能相同的IT系統,利用地理上的分離來保證系統和數據對災難性事件的抵御能力.容災備份技術能夠幫助企業在發生不可抗拒災難之后,第一時間恢復企業的重要數據,以求達到業務連續性目的,使企業盡最大可能減少災難下的損失.利用Oracle Stream復制數據的思想可達到這一目的,實現數據庫的實時備份.

圖1 流復制工作原理
1.1 Oracle流復制技術原理
Oracle Stream事實上是一種隊列技術,它通過發布/訂閱的方式來解決事件的管理,其基本原理就是收集事件并將它們保存在隊列中,然后將這些事件發布給不同的預定者,流捕獲Oracle數據庫產生重做日志的事件,并將這些信息傳遞給其他的數據庫,其他數據庫通過應用這些日志,達到復制變化的作用.流復制技術原理如圖1所示[1].
1.2 Data Guard和Stream的區別
目前,常用的備份方法有以下幾種,Data Guard、高級復制、RealSync、Veritas、emc等.本文僅針對Oracle最常用的容災備份技術Data Guard和Stream進行分析比較.
Data Guard通過冗余數據來提供數據保護,通過日志同步機制保證冗余數據和主數據之間的同步,這種同步可以是實時、延遲、同步、異步等多種形式,Data Guard常用于異地容災和小企業的高可用性方案. Data Guard必須在同構平臺數據庫之間進行部署,這就要求用戶主從數據庫服務器是一樣的平臺,這對于中小企業來說比較苛刻,另外standby環境下的readonly模式雖然可以保障一段時間的只讀訪問,但不能保證開放7×24小時,還是需要間隙性留出一段時間進行數據的前滾操作.Stream是以Oracle Advanced Queue為基礎實現的數據同步,提供了多種級別的靈活配置,并且Oracle提供了豐富的API等開發支持,Stream更適用在應用層面的數據共享.表1列舉了Data Guard和Stream的主要區別.

表1 Stream技術和Data Guard技術的比較
綜上所述,Stream將會是Oracle以后主推的一個技術熱點,因為Stream具備以下的優點:
1)實現的技術框架較高級復制(advanced Replication)更先進,不是基于數據庫級的觸發器,而是采用對日志(Redo Log)的挖掘能力.
2)利用了比較少的數據庫資源,這個特性在10 g支持DownStream后更明顯.
3)遠程備份,可實現Internet級的遠程備份.
4)Stream的Capture具有Table/Rule/Database三種級別,擴展應用更廣泛,甚至還可作為一個ETL的可選方案.
5)采用Table級的Stream時,在rule上可配置應用的DDL和DML,比起Data guard必須全庫同步,有很大的優勢.
2.1 前期規劃
在使用流復制之前,需要大量有意義的規劃和配置.首先要確定決定復制集,即要決定將哪些對象從源數據庫復制到目標數據庫;其次確定流復制站點,確定將它們復制到哪里;再決定是本地捕獲還是下游捕獲,確定是在源端從源數據庫重做日志中捕獲LCR,還是在目標數據庫端執行下游捕獲,若是下游捕獲則從歸檔日志獲得LCR,本地捕獲可以保護更多的數據,但是會占用源數據庫的資源;最后確定復制拓撲結構和目標數據庫的角色,即確定復制數據庫的用途,是不配置給任何用戶使用,只是保持空閑,直到災難發生,還是讓復制數據庫向業務打開,允許用戶使用.
2.2 構建STANDBY備份數據庫
1)修改主庫的參數文件,并生成備庫的初始化文件和密碼文件.
2)備庫目錄并拷貝主庫的數據.
3)為備庫建控制文件.
4)配置listener.ora文件和tnsnames.ora文件.
5)啟動數據庫的監聽進程.
注意:如果應用成功,此時standby已經處于mount狀態了(而處于mount下面就不需要關閉數據庫).
2.3 構建流復制數據庫
1)為源和目標數據庫配置初始化參數,主要關注init.ora文件的7個參數:COMPATIBILE、GLOB-AL_NAMES、JOB_QUEUE_PROCESSES、OPEN_LINKS、SHARED_POOL_SIZE、STREAMS_POOL_SIZ、UNDO_RETENTION.
2)將數據庫設為歸檔日志模式.
3)創建Stream管理用戶.
4)配置網絡連接.
5)啟用追加日志.如果在復制表上沒有主鍵或者唯一的NOT NULL約束,就需要追加日志.
6)創建DBLINK針對主數據庫建立的數據庫鏈的名字必須和從數據庫的global_name相同.
7)創建MASTER流隊列,創建BACKUP流隊列.
8)創建捕獲進程.
9)實例化復制數據庫.
10)創建傳播進程,創建應用進程.
11)啟動Stream.
3.1 測試
本方案的第一階段在兩個數據庫中準備流復制(按構建流復制數據庫的步驟已完成),第二階段設置行變更從主數據庫傳播到新的復制數據庫,第三階段設置流從復制數據庫反向復制到主數據庫,使之成為一個雙向、多源的流環境.
1)建表測試
主庫:

從庫:

2)主庫插入數據測試
主庫:

從庫:

3)反向數據同步測試
從庫:

主庫:

對tbp數據表進行反復雙向的數據DML操作,檢查主數據庫和備份數據庫兩邊數據是否同步.通過測試,該方案成功地配置了一個雙向多源的流復制環境,主備份數據庫保存了所有記錄,數據已經實時同步.測試結果說明,使用Oracle流復制技術可以完成系統模型的數據同步要求.
3.2 問題診斷
如果在流復制的構建或測試過程中發現數據庫有不同步的問題,可以從幾下幾點進行診斷.
1)診斷捕捉進程是否運行正常,執行如圖2所示的語句.
2)診斷Captured LCR是否傳播GAP,執行如圖3所示的語句.
如果APPLIED_ SCN小于CAPTURED_SCN,則表示在主數據庫一端,要么LCR沒有被dequeue,要么Propagation進程尚未傳播到從數據庫一端.
3)診斷Appy進程是否運行正常,執行如圖4所示的語句.

圖2 主庫確認捕捉進程是否運行正常

圖3 主庫確認LCR是否傳播GAP圖

圖4 從庫確認Appy進程是否運行正常
通過以上的實驗搭建和測試可以看出,Oracle Stream可以更好地提升數據庫的可用性和安全性.流復制技術在分布式數據庫環境中,憑借自身的事件管理系統的體系結構,提供了一個極強的引擎用于配置復制數據庫,由于這種復制功能,就有了利用流復制作為災難恢復和負載平衡的高可用性部件的可能[4].同時,流又存在很多可變的部分,DBA必須將流考慮為應用開發環境的一部分,譬如對數據類型的限制、帶寬的問題,性能的考慮事項以及數據的重建等都要求成功地實現流技術.值得注意的是流的配置不是短期就可配置好的,它需要廣泛的規劃和大量的測試,不斷完善流復制的自定義沖突解決機制,最終讓流復制更健全,環境更穩定.
[1]曾臘容.Oracle流復制技術在電子商務數據庫的應用研究[J].煤炭技術,2011(5):212-213.
[2]成雅,毛宇光.基于Oracle Streams的數據庫實時備份技術研究[J].國際IT傳媒品牌,2011(6):29-31.
[3]管東華.基于Oracle流復制技術的數據庫容災備份應用研究[D].成都:成都理工大學,2009.
[4]Matthew Hart,Scott Jesse.Oracle Database 10g高可用性實現方案——運用RAC、Flashback和Data Guard技術[M].北京:清華大學出版社,2005.
A Research on Database Backup and Disaster Recovery Based on Oracle Streams
CHANG Yu-huia,b
(a.College of Computer Engineering;b.Changzhou Key Laboratory of Cloud Computing&
Intelligent Information Processing,Jiangsu Teachers University of Technology,Changzhou 213001,China)
Compared with Data Guard technology,the ORACLE stream replication technology is much better.In this paper,ORACLE stream replication technology principle is introduced and the solution to the stream replication project is proposed and constructed for database backup and disaster recovery.Experimental results show that the proposed approach is feasible.
stream replication;disaster recovery;Database
TP311.13
A
1008-2794(2012)10-0108-04
2012-09-20
國家自然科學基金項目“面向XML數據集成的完整性約束挖掘方法研究”(61142007)
常玉慧(1971—),女,河南鞏義人,講師,研究方向:數據庫技術,數據挖掘.