作者:風(fēng)未起時(shí) 來(lái)源:中國站長(cháng)學(xué)院 發(fā)布時(shí)間:2005-4-1 9:22:31 發(fā)布人:admin
增大字體
Oracle9i Data Guard 通過(guò)使用稱(chēng)為standby database的數據庫來(lái)防止出現數據的災難。它通過(guò)將primary database數據庫的重做日志傳到并應用到standby database數據庫來(lái)使standby database數據庫與primary database數據庫同步:
可以將重做日志直接從primary database數據庫同步寫(xiě)到standby database數據庫來(lái)完成完全沒(méi)有數據損失的災難保護。這會(huì )給primary database數據庫的性能帶來(lái)一定的性能損失。
可以將歸檔的重做日志從primary database數據庫異步寫(xiě)到standby database數據庫來(lái)使primary database數據庫在極少損失性能的前提下,最小化地減少數據的丟失。
如果重做日志數據到達standby database數據庫后快速應用到standby database數據庫,則在primary database數據庫出現問(wèn)題時(shí)可以快速地 failover 到standby database數據庫。然而,如果延緩一定時(shí)間后再應用重做日志數據,可以避免primary database數據庫的錯誤快速地傳播到standby database數據庫。
如附圖所示,當聯(lián)機重做日志在本地歸檔時(shí),它們同時(shí)通過(guò) Oracle Net 傳送到了standby database:
數據庫數據保護級別
可以用如下的方式設置standby database數據庫來(lái)達到不同的數據庫數據保護級別:
Guaranteed protection:規定在修改主數據庫時(shí),至少有一個(gè)備用數據庫有效。假如主(Primary Database)備(Standby Database)之間的連接中斷,Oracle會(huì )通過(guò)中斷主實(shí)例的工作來(lái)防止主備數據庫之間的數據的不一致,保證無(wú)數據丟失。這種模式對數據庫性能的影響較大。
Instant protection:規定在修改主數據庫時(shí),至少有一個(gè)備用數據庫有效。與Guaranteed protection模式不同的是當主備數據庫之間的連接中斷時(shí),允許主備數據庫之間的數據的不一致,并當恢復連接后,解決數據不一致的現象。這種模式對主數據庫的性能有較小的影響。
Rapid protection:主數據庫的修改快速應用在備用數據庫上。會(huì )出現數據丟失,但對數據庫性能的影響小。
Delayed protection:主數據庫的修改在延遲一定的時(shí)間后應用在備用數據庫上。Rapid protection和Delayed protection模式即使在網(wǎng)絡(luò )連接有效時(shí),也允許主數據庫與所有的備用數據庫有數據分歧,數據的丟失量等同于主數據庫聯(lián)機重做日志的未歸檔數。這種方式對數據庫性能的影響小。
如何限制數據的丟失量
在primary/standby配置下,所有的歸檔日志被發(fā)送到了standby 節點(diǎn),這使standby 節點(diǎn)的數據保持著(zhù)更新。但是,如果primary 數據庫意外關(guān)閉,聯(lián)機的日志將會(huì )丟失,因為它們尚未歸檔并發(fā)送到standby節點(diǎn)。這使得 primary 和standby 數據庫之間會(huì )有一個(gè)差異。
Oracle9i 可以用以下的方法來(lái)限制這個(gè)差異:
DBA可以選擇讓LGWR在將重做日志數據寫(xiě)到本地磁盤(pán)的同時(shí)將數據發(fā)送到 standby 數據庫。該功能稱(chēng)為standby零數據丟失(standby zero data loss)。這種方法從本質(zhì)的角度講提供了遠程重做日志鏡像,但帶來(lái)的問(wèn)題是會(huì )極大地損失性能。
設置系統初始化參數ARCHIVE_LAG_TARGET.該參數是一個(gè)日志文件開(kāi)始使用到被發(fā)送到standby數據庫的時(shí)間間隔。該參數的推薦值是 1800秒(需要注意的是,沒(méi)有傳送到 standby 數據庫的已經(jīng)提交的事務(wù)會(huì )丟失,因此長(cháng)的事務(wù)會(huì )使standby數據庫損失更多的數據)。
Oracle9i Data Guard數據防護與Oracle8 Standby Database的關(guān)系Oracle Standby Database 是最經(jīng)常褂玫淖鈑行У腦幟呀餼齜槳?。栽忼去版辩R幕∩?,Oracle9i 又進(jìn)行了許多改進(jìn),使其功能遠遠超過(guò)了基本的災難恢復要求。通過(guò)將復雜的工作自動(dòng)化,并對監控、警告、以及控制機制的大規模改進(jìn),Standby Database 和一些新的模塊可以幫助DBA 從錯誤操作、癱瘓、以及其它的災難中恢復(這些災難都可能毀掉數據庫)。另外,通過(guò)使用Oracle9i Standby Database,由于硬件和軟件升級造成的宕機時(shí)間也可以極度縮短。
Oracle9i 將改進(jìn)過(guò)的8版本的Standby Database功能,與幾個(gè)新增加的防止用戶(hù)錯誤和癱瘓的模塊合起來(lái)稱(chēng)為Oracle9i Data Guard。
Oracle8 Automated Standby Database 提供了創(chuàng )建和自動(dòng)維護生產(chǎn)數據庫拷貝的手段來(lái)防止災難的發(fā)生。Oracle8 Automated Standby Database 具有以下的功能:
當primary database 產(chǎn)生日志后,系統自動(dòng)用歸檔日志更新standby databases.一個(gè)primary database可以最多有4個(gè)standby databases.這4個(gè)standby databases是與primary database完全一樣的拷貝,它們都可以接管primary database的處理。
Oracle使用標準的恢復方法來(lái)將歸檔日志應用到每個(gè)standby databases.這些日志的應用是自動(dòng)的,DBA也可以人工應用這些日志。
primary database 處于打開(kāi)和活動(dòng)狀態(tài),而standby database處于恢復或者打開(kāi)只讀狀態(tài)。
大多數的基于Oracle8的災難保護方案包括一個(gè)Automated Standby Database.因為Oracle數據庫可以用備份和日志恢復,所以任何應用都可以使用Automated Standby Database.通過(guò)Oracle Net傳輸歸檔日志對primary database的性能影響可以忽略不計。
物理的Standby Database和邏輯的Standby Database
Standby Database可以分為物理的Standby Database和邏輯的Standby Database:
物理 Standby Database。物理 Standby Database是Oracle8 Automated Standby Database的Oracle9i版本。它們之間只有一個(gè)差異:日志傳輸服務(wù)現在是一個(gè)分離的模塊,并支持物理standby database和新的邏輯standby database。
物理Standby Database的含義是Standby Database在物理上與primary database 一樣。因為恢復是使用 ROWID 一塊對一塊進(jìn)行的,Standby Database的數據塊與primary database的數據快一樣。數據庫模式一定是一樣的,且不能以讀/寫(xiě)的方式打開(kāi)。
邏輯 Standby Database.邏輯 Standby Database是將歸檔的日志轉化為SQL事務(wù),并將它們應用到打開(kāi)的Standby Database.因為數據庫是打開(kāi)的,它在物理上與primary database是不一樣的。然而,從邏輯角度講,Standby Database與primary database是一樣的,因此可以接管primary database的處理。在這種情況下,Standby Database還可以并發(fā)地進(jìn)行其它的工作,例如建立一些與primary database不一樣的索引和物化視圖,完成決策支持等任務(wù)。
邏輯 Standby Database 是最重要的數據保護特性。就像物理 standby database一樣,它使用歸檔的日志在standby database上進(jìn)行處理,在primary database出現問(wèn)題的情況下也沒(méi)有問(wèn)題。
當選擇使用物理standby database、邏輯standby database、或兩者都用時(shí),要考慮以下一系列的因素。
邏輯standby database可用于兩個(gè)目的。當要對邏輯standby database進(jìn)行改變時(shí),其數據庫可以打開(kāi)。
邏輯standby database需要DBA更高的技能。
使數據保護極大化的解決方案通常包括邏輯的和物理的standby databases.數據庫Failover和Switchover當主數據庫發(fā)生宕機,且不能及時(shí)恢復時(shí),Oracle會(huì )丟棄主數據庫,將備用數據庫轉變?yōu)橹鲾祿?。?failover之后,備用數據庫變成為主數據庫,從而丟失了備用數據庫的所有能力,也就是說(shuō),不能再返回到備用模式。
Failover 有以下特點(diǎn):
主數據庫offline,備用數據庫online,這種操作由系統和軟件失敗引起。
即使在備用數據庫上應用重做日志,也可能出現數據丟失的現象,除非備用數據庫運行在guaranteed protection模式下。
原主數據庫重新使用時(shí)必須reinstantiated(start instance)。
其它的備用數據庫也需reinstantiated.
在主數據庫正常工作時(shí),Oracle 允許 DBA 將主數據庫切換到備用數據庫,此備用數據庫變?yōu)橹鲾祿?,而原主數據庫變?yōu)閭溆脭祿臁?div style="height:15px;">
數據庫的切換可以從主數據庫角色切換到備用數據庫角色,也可從備用數據庫角色切換到主數據庫角色。
Switchover 有以下特點(diǎn):
故意將主數據庫offline,而將另一備用數據庫online.可以如使用Switchover 功能完成系統的平滑升級工作。
即使在備用數據庫上不應用重做日志,也不會(huì )造成數據的丟失。
數據庫不需reinstantiated.這使主數據庫幾乎能立即在備用數據庫上恢復它的功能,因此可經(jīng)常進(jìn)行定期維護而不需中斷操作。
Oracle9i Data Guard的一些部件日志傳輸服務(wù)(Log Transport Services)
Log Transport Services會(huì )被物理的和邏輯的standby database 都用到。它提供的功能包括控制不同的日志傳輸機制、日志傳輸錯誤處理和報告、以及在系統失敗后獲取丟失的日志。使用任何新的日志傳輸模式,數據的保護都可以得到保證。
Oracle9i Data Guard Broker
Data Guard broker提供了對日志傳輸服務(wù)的監測、控制、和自動(dòng)化以及邏輯和物理standby的部件。例如,通過(guò)只用一個(gè)命令就可以啟動(dòng) failover,Data Guard broker可被用于控制主要角色從primary到任何一種standby database轉移的整個(gè)過(guò)程。用戶(hù)可以從2種不同的界面來(lái)選擇進(jìn)行角色轉換,使standby database 從primary database接管生產(chǎn)數據庫的處理。一種選擇是使用新的Oracle Enterprise Manager Data Guard Manager。該圖形用戶(hù)界面工具可進(jìn)行大多的配置工作和操作功能。另一種選擇是一個(gè)命令行工具,它提供了基本的監測、改變角色需要的所有命令、以及配置和設置Oracle9i Data Guard環(huán)境的能力。
Data Guard Manager 是Oracle Enterprise Manager的一部分。
Oracle9i LogMiner
在 Oracle9i中,LogMiner被做了極大的改進(jìn)。LogMiner是一個(gè)關(guān)系工具,DBA可以利用這個(gè)工具使用SQL進(jìn)行讀、分析、和解釋日志文件。LogMiner可以查看聯(lián)機的和歸檔的重做日志文件。
LogMiner技術(shù)提供了邏輯standby database用到的基礎結構。新的Oracle Enterprise Manager應用Oracle9i LogMiner Viewer 對已經(jīng)存在的命令行界面增加了一個(gè)圖形操作界面。
災難恢復服務(wù)器(Disaster Recovery Server)和DRMON
在當今的電子商務(wù)世界中,在互連網(wǎng)上做生意的公司必須有一套一旦出現問(wèn)題恢復應用和數據庫的策略。每個(gè)DBA都應考慮災難恢復以及計劃好的或意外的failover。Disaster Recovery (DR) Server 是幫助DBA達到更高系統可用性的產(chǎn)品的一部分。
Disaster Recovery (DR) Server 從根本上說(shuō)是一系列松散連接的節點(diǎn)組成。這些節點(diǎn)將物理的和邏輯的standby 方案組合成了一個(gè)單獨的易管理的災難恢復解決方案。Disaster Recovery (DR) Server節點(diǎn)在物理分布上是松散的,是通過(guò)網(wǎng)絡(luò )連接到一起的。每個(gè) DR Server 節點(diǎn)可能是一個(gè)簡(jiǎn)單的實(shí)例,或是一個(gè)復雜的系統(例如一個(gè) fail safe cluster)。DR Server 將這些節點(diǎn)作為一個(gè)單獨的分布計算系統來(lái)管理,從而其可用性會(huì )高于單獨的節點(diǎn)。
DR Server 是通過(guò)將數據在節點(diǎn)間復制來(lái)實(shí)現其 failover 系統的。數據庫管理員是這樣來(lái)配置服務(wù)器的:數據庫和應用在每個(gè)節點(diǎn)都激活。其中,一個(gè)節點(diǎn)設計成primary節點(diǎn),其數據庫對應用來(lái)說(shuō)是完全可用的,且其數據以日志的形式復制到其它的節點(diǎn)。其它的節點(diǎn)對primary節點(diǎn)來(lái)說(shuō)是standby節點(diǎn),它們接收從primary節點(diǎn)發(fā)來(lái)的日志并改變(從物理上或邏輯上)其數據庫拷貝。
DR Server的standby節點(diǎn)是隨時(shí)準備好在primary節點(diǎn)出現問(wèn)題時(shí)進(jìn)行接管的,從而在primary 節點(diǎn)出現災難后數據和應用對用戶(hù)來(lái)說(shuō)仍然可用。
DR Server結構給DBA主要提供了兩點(diǎn)重要功能:
它提供了DBA從邏輯上配置一個(gè) failover 資源組來(lái)達到高可用性的方法。
它指定了組成DR Server 本身的基礎計算框架。