明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

[Oracle]Data Guard數(shù)據(jù)庫(kù)災(zāi)難防護(hù)

[摘要]Oracle9i Data Guard 通過(guò)使用稱為standby database的數(shù)據(jù)庫(kù)來(lái)防止出現(xiàn)數(shù)據(jù)的災(zāi)難。它通過(guò)將primary database數(shù)據(jù)庫(kù)的重做日志傳到并應(yīng)用到standby database數(shù)據(jù)庫(kù)來(lái)使standby database數(shù)據(jù)庫(kù)與primary database數(shù)...
Oracle9i Data Guard 通過(guò)使用稱為standby database的數(shù)據(jù)庫(kù)來(lái)防止出現(xiàn)數(shù)據(jù)的災(zāi)難。它通過(guò)將primary database數(shù)據(jù)庫(kù)的重做日志傳到并應(yīng)用到standby database數(shù)據(jù)庫(kù)來(lái)使standby database數(shù)據(jù)庫(kù)與primary database數(shù)據(jù)庫(kù)同步:

可以將重做日志直接從primary database數(shù)據(jù)庫(kù)同步寫(xiě)到standby database數(shù)據(jù)庫(kù)來(lái)完成完全沒(méi)有數(shù)據(jù)損失的災(zāi)難保護(hù)。這會(huì)給primary database數(shù)據(jù)庫(kù)的性能帶來(lái)一定的性能損失。

可以將歸檔的重做日志從primary database數(shù)據(jù)庫(kù)異步寫(xiě)到standby database數(shù)據(jù)庫(kù)來(lái)使primary database數(shù)據(jù)庫(kù)在極少損失性能的前提下,最小化地減少數(shù)據(jù)的丟失。

如果重做日志數(shù)據(jù)到達(dá)standby database數(shù)據(jù)庫(kù)后快速應(yīng)用到standby database數(shù)據(jù)庫(kù),則在primary database數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題時(shí)可以快速地 failover 到standby database數(shù)據(jù)庫(kù)。然而,如果延緩一定時(shí)間后再應(yīng)用重做日志數(shù)據(jù),可以避免primary database數(shù)據(jù)庫(kù)的錯(cuò)誤快速地傳播到standby database數(shù)據(jù)庫(kù)。
  
數(shù)據(jù)庫(kù)數(shù)據(jù)保護(hù)級(jí)別

可以用如下的方式設(shè)置standby database數(shù)據(jù)庫(kù)來(lái)達(dá)到不同的數(shù)據(jù)庫(kù)數(shù)據(jù)保護(hù)級(jí)別:

Guaranteed protection:規(guī)定在修改主數(shù)據(jù)庫(kù)時(shí),至少有一個(gè)備用數(shù)據(jù)庫(kù)有效。假如主(Primary Database)備(Standby Database)之間的連接中斷,Oracle會(huì)通過(guò)中斷主實(shí)例的工作來(lái)防止主備數(shù)據(jù)庫(kù)之間的數(shù)據(jù)的不一致,保證無(wú)數(shù)據(jù)丟失。這種模式對(duì)數(shù)據(jù)庫(kù)性能的影響較大。

Instant protection:規(guī)定在修改主數(shù)據(jù)庫(kù)時(shí),至少有一個(gè)備用數(shù)據(jù)庫(kù)有效。與Guaranteed protection模式不同的是當(dāng)主備數(shù)據(jù)庫(kù)之間的連接中斷時(shí),允許主備數(shù)據(jù)庫(kù)之間的數(shù)據(jù)的不一致,并當(dāng)恢復(fù)連接后,解決數(shù)據(jù)不一致的現(xiàn)象。這種模式對(duì)主數(shù)據(jù)庫(kù)的性能有較小的影響。

Rapid protection:主數(shù)據(jù)庫(kù)的修改快速應(yīng)用在備用數(shù)據(jù)庫(kù)上。會(huì)出現(xiàn)數(shù)據(jù)丟失,但對(duì)數(shù)據(jù)庫(kù)性能的影響小。

Delayed protection:主數(shù)據(jù)庫(kù)的修改在延遲一定的時(shí)間后應(yīng)用在備用數(shù)據(jù)庫(kù)上。Rapid protection和Delayed protection模式即使在網(wǎng)絡(luò)連接有效時(shí),也允許主數(shù)據(jù)庫(kù)與所有的備用數(shù)據(jù)庫(kù)有數(shù)據(jù)分歧,數(shù)據(jù)的丟失量等同于主數(shù)據(jù)庫(kù)聯(lián)機(jī)重做日志的未歸檔數(shù)。這種方式對(duì)數(shù)據(jù)庫(kù)性能的影響小。

如何限制數(shù)據(jù)的丟失量

在primary/standby配置下,所有的歸檔日志被發(fā)送到了standby 節(jié)點(diǎn),這使standby 節(jié)點(diǎn)的數(shù)據(jù)保持著更新。但是,如果primary 數(shù)據(jù)庫(kù)意外關(guān)閉,聯(lián)機(jī)的日志將會(huì)丟失,因?yàn)樗鼈兩形礆w檔并發(fā)送到standby節(jié)點(diǎn)。這使得 primary 和standby 數(shù)據(jù)庫(kù)之間會(huì)有一個(gè)差異。

Oracle9i 可以用以下的方法來(lái)限制這個(gè)差異:

DBA可以選擇讓LGWR在將重做日志數(shù)據(jù)寫(xiě)到本地磁盤(pán)的同時(shí)將數(shù)據(jù)發(fā)送到 standby 數(shù)據(jù)庫(kù)。該功能稱為standby零數(shù)據(jù)丟失(standby zero data loss)。這種方法從本質(zhì)的角度講提供了遠(yuǎn)程重做日志鏡像,但帶來(lái)的問(wèn)題是會(huì)極大地?fù)p失性能。

設(shè)置系統(tǒng)初始化參數(shù)ARCHIVE_LAG_TARGET。該參數(shù)是一個(gè)日志文件開(kāi)始使用到被發(fā)送到standby數(shù)據(jù)庫(kù)的時(shí)間間隔。該參數(shù)的推薦值是 1800秒(需要注意的是,沒(méi)有傳送到 standby 數(shù)據(jù)庫(kù)的已經(jīng)提交的事務(wù)會(huì)丟失,因此長(zhǎng)的事務(wù)會(huì)使standby數(shù)據(jù)庫(kù)損失更多的數(shù)據(jù))。

Oracle9i Data Guard數(shù)據(jù)防護(hù)與Oracle8 Standby Database的關(guān)系

Oracle Standby Database 是最經(jīng)常使用的最有效的災(zāi)難解決方案。在過(guò)去版本的基礎(chǔ)上,Oracle9i 又進(jìn)行了許多改進(jìn),使其功能遠(yuǎn)遠(yuǎn)超過(guò)了基本的災(zāi)難恢復(fù)要求。通過(guò)將復(fù)雜的工作自動(dòng)化,并對(duì)監(jiān)控、警告、以及控制機(jī)制的大規(guī)模改進(jìn),Standby Database 和一些新的模塊可以幫助DBA 從錯(cuò)誤操作、癱瘓、以及其它的災(zāi)難中恢復(fù)(這些災(zāi)難都可能毀掉數(shù)據(jù)庫(kù))。另外,通過(guò)使用Oracle9i Standby Database,由于硬件和軟件升級(jí)造成的宕機(jī)時(shí)間也可以極度縮短。

  Oracle9i 將改進(jìn)過(guò)的8版本的Standby Database功能,與幾個(gè)新增加的防止用戶錯(cuò)誤和癱瘓的模塊合起來(lái)稱為Oracle9i Data Guard。

Oracle8 Automated Standby Database 提供了創(chuàng)建和自動(dòng)維護(hù)生產(chǎn)數(shù)據(jù)庫(kù)拷貝的手段來(lái)防止災(zāi)難的發(fā)生。Oracle8 Automated Standby Database 具有以下的功能:

  當(dāng)primary database 產(chǎn)生日志后,系統(tǒng)自動(dòng)用歸檔日志更新standby databases。

  一個(gè)primary database可以最多有4個(gè)standby databases。這4個(gè)standby databases是與primary database完全一樣的拷貝,它們都可以接管primary database的處理。

  Oracle使用標(biāo)準(zhǔn)的恢復(fù)方法來(lái)將歸檔日志應(yīng)用到每個(gè)standby databases。這些日志的應(yīng)用是自動(dòng)的,DBA也可以人工應(yīng)用這些日志。

  primary database 處于打開(kāi)和活動(dòng)狀態(tài),而standby database處于恢復(fù)或者打開(kāi)只讀狀態(tài)。

  大多數(shù)的基于Oracle8的災(zāi)難保護(hù)方案包括一個(gè)Automated Standby Database。因?yàn)镺racle數(shù)據(jù)庫(kù)可以用備份和日志恢復(fù),所以任何應(yīng)用都可以使用Automated Standby Database。通過(guò)Oracle Net傳輸歸檔日志對(duì)primary database的性能影響可以忽略不計(jì)。

  物理的Standby Database和邏輯的Standby Database

  Standby Database可以分為物理的Standby Database和邏輯的Standby Database:

  物理 Standby Database。物理 Standby Database是Oracle8 Automated Standby Database的Oracle9i版本。它們之間只有一個(gè)差異:日志傳輸服務(wù)現(xiàn)在是一個(gè)分離的模塊,并支持物理standby database和新的邏輯standby database。

  物理Standby Database的含義是Standby Database在物理上與primary database 一樣。因?yàn)榛謴?fù)是使用 ROWID 一塊對(duì)一塊進(jìn)行的,Standby Database的數(shù)據(jù)塊與primary database的數(shù)據(jù)快一樣。數(shù)據(jù)庫(kù)模式一定是一樣的,且不能以讀/寫(xiě)的方式打開(kāi)。

邏輯 Standby Database。邏輯 Standby Database是將歸檔的日志轉(zhuǎn)化為SQL事務(wù),并將它們應(yīng)用到打開(kāi)的Standby Database。因?yàn)閿?shù)據(jù)庫(kù)是打開(kāi)的,它在物理上與primary database是不一樣的。然而,從邏輯角度講,Standby Database與primary database是一樣的,因此可以接管primary database的處理。在這種情況下,Standby Database還可以并發(fā)地進(jìn)行其它的工作,例如建立一些與primary database不一樣的索引和物化視圖,完成決策支持等任務(wù)。

  邏輯 Standby Database 是最重要的數(shù)據(jù)保護(hù)特性。就像物理 standby database一樣,它使用歸檔的日志在standby database上進(jìn)行處理,在primary database出現(xiàn)問(wèn)題的情況下也沒(méi)有問(wèn)題。

  當(dāng)選擇使用物理standby database、邏輯standby database、或兩者都用時(shí),要考慮以下一系列的因素。

  邏輯standby database可用于兩個(gè)目的。當(dāng)要對(duì)邏輯standby database進(jìn)行改變時(shí),其數(shù)據(jù)庫(kù)可以打開(kāi)。

  邏輯standby database需要DBA更高的技能。

  使數(shù)據(jù)保護(hù)極大化的解決方案通常包括邏輯的和物理的standby databases。

  數(shù)據(jù)庫(kù)Failover和Switchover

  當(dāng)主數(shù)據(jù)庫(kù)發(fā)生宕機(jī),且不能及時(shí)恢復(fù)時(shí),Oracle會(huì)丟棄主數(shù)據(jù)庫(kù),將備用數(shù)據(jù)庫(kù)轉(zhuǎn)變?yōu)橹鲾?shù)據(jù)庫(kù)。當(dāng) failover之后,備用數(shù)據(jù)庫(kù)變成為主數(shù)據(jù)庫(kù),從而丟失了備用數(shù)據(jù)庫(kù)的所有能力,也就是說(shuō),不能再返回到備用模式。

Failover 有以下特點(diǎn):

  主數(shù)據(jù)庫(kù)offline,備用數(shù)據(jù)庫(kù)online,這種操作由系統(tǒng)和軟件失敗引起。
  即使在備用數(shù)據(jù)庫(kù)上應(yīng)用重做日志,也可能出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象,除非備  用數(shù)據(jù)庫(kù)運(yùn)行在guaranteed protection模式下。
  原主數(shù)據(jù)庫(kù)重新使用時(shí)必須reinstantiated(start instance)。
  其它的備用數(shù)據(jù)庫(kù)也需reinstantiated。

  在主數(shù)據(jù)庫(kù)正常工作時(shí),Oracle 允許 DBA 將主數(shù)據(jù)庫(kù)切換到備用數(shù)據(jù)庫(kù),此備用數(shù)據(jù)庫(kù)變?yōu)橹鲾?shù)據(jù)庫(kù),而原主數(shù)據(jù)庫(kù)變?yōu)閭溆脭?shù)據(jù)庫(kù)。

數(shù)據(jù)庫(kù)的切換可以從主數(shù)據(jù)庫(kù)角色切換到備用數(shù)據(jù)庫(kù)角色,也可從備用數(shù)據(jù)庫(kù)角色切換到主數(shù)據(jù)庫(kù)角色。

Switchover 有以下特點(diǎn):

故意將主數(shù)據(jù)庫(kù)offline,而將另一備用數(shù)據(jù)庫(kù)online?梢匀缡褂肧witchover 功能完成系統(tǒng)的平滑升級(jí)工作。
即使在備用數(shù)據(jù)庫(kù)上不應(yīng)用重做日志,也不會(huì)造成數(shù)據(jù)的丟失。
數(shù)據(jù)庫(kù)不需reinstantiated。這使主數(shù)據(jù)庫(kù)幾乎能立即在備用數(shù)據(jù)庫(kù)上恢復(fù)它的功能,因此可經(jīng)常進(jìn)行定期維護(hù)而不需中斷操作。
Oracle9i Data Guard的一些部件
日志傳輸服務(wù)(Log Transport Services)
Log Transport Services會(huì)被物理的和邏輯的standby database 都用到。它提供的功能包括控制不同的日志傳輸機(jī)制、日志傳輸錯(cuò)誤處理和報(bào)告、以及在系統(tǒng)失敗后獲取丟失的日志。使用任何新的日志傳輸模式,數(shù)據(jù)的保護(hù)都可以得到保證。

Oracle9i Data Guard Broker
Data Guard broker提供了對(duì)日志傳輸服務(wù)的監(jiān)測(cè)、控制、和自動(dòng)化以及邏輯和物理standby的部件。例如,通過(guò)只用一個(gè)命令就可以啟動(dòng) failover,Data Guard broker可被用于控制主要角色從primary到任何一種standby database轉(zhuǎn)移的整個(gè)過(guò)程。用戶可以從2種不同的界面來(lái)選擇進(jìn)行角色轉(zhuǎn)換,使standby database 從primary database接管生產(chǎn)數(shù)據(jù)庫(kù)的處理。一種選擇是使用新的Oracle Enterprise Manager Data Guard Manager。該圖形用戶界面工具可進(jìn)行大多的配置工作和操作功能。另一種選擇是一個(gè)命令行工具,它提供了基本的監(jiān)測(cè)、改變角色需要的所有命令、以及配置和設(shè)置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)機(jī)的和歸檔的重做日志文件。

LogMiner技術(shù)提供了邏輯standby database用到的基礎(chǔ)結(jié)構(gòu)。新的Oracle Enterprise Manager應(yīng)用Oracle9i LogMiner Viewer 對(duì)已經(jīng)存在的命令行界面增加了一個(gè)圖形操作界面。

災(zāi)難恢復(fù)服務(wù)器(Disaster Recovery Server)和DRMON
在當(dāng)今的電子商務(wù)世界中,在互連網(wǎng)上做生意的公司必須有一套一旦出現(xiàn)問(wèn)題恢復(fù)應(yīng)用和數(shù)據(jù)庫(kù)的策略。每個(gè)DBA都應(yīng)考慮災(zāi)難恢復(fù)以及計(jì)劃好的或意外的failover。Disaster Recovery (DR) Server 是幫助DBA達(dá)到更高系統(tǒng)可用性的產(chǎn)品的一部分。

Disaster Recovery (DR) Server 從根本上說(shuō)是一系列松散連接的節(jié)點(diǎn)組成。這些節(jié)點(diǎn)將物理的和邏輯的standby 方案組合成了一個(gè)單獨(dú)的易管理的災(zāi)難恢復(fù)解決方案。Disaster Recovery (DR) Server節(jié)點(diǎn)在物理分布上是松散的,是通過(guò)網(wǎng)絡(luò)連接到一起的。每個(gè) DR Server 節(jié)點(diǎn)可能是一個(gè)簡(jiǎn)單的實(shí)例,或是一個(gè)復(fù)雜的系統(tǒng)(例如一個(gè) fail safe cluster)。DR Server 將這些節(jié)點(diǎn)作為一個(gè)單獨(dú)的分布計(jì)算系統(tǒng)來(lái)管理,從而其可用性會(huì)高于單獨(dú)的節(jié)點(diǎn)。

DR Server 是通過(guò)將數(shù)據(jù)在節(jié)點(diǎn)間復(fù)制來(lái)實(shí)現(xiàn)其 failover 系統(tǒng)的。數(shù)據(jù)庫(kù)管理員是這樣來(lái)配置服務(wù)器的:數(shù)據(jù)庫(kù)和應(yīng)用在每個(gè)節(jié)點(diǎn)都激活。其中,一個(gè)節(jié)點(diǎn)設(shè)計(jì)成primary節(jié)點(diǎn),其數(shù)據(jù)庫(kù)對(duì)應(yīng)用來(lái)說(shuō)是完全可用的,且其數(shù)據(jù)以日志的形式復(fù)制到其它的節(jié)點(diǎn)。其它的節(jié)點(diǎn)對(duì)primary節(jié)點(diǎn)來(lái)說(shuō)是standby節(jié)點(diǎn),它們接收從primary節(jié)點(diǎn)發(fā)來(lái)的日志并改變(從物理上或邏輯上)其數(shù)據(jù)庫(kù)拷貝。

DR Server的standby節(jié)點(diǎn)是隨時(shí)準(zhǔn)備好在primary節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí)進(jìn)行接管的,從而在primary 節(jié)點(diǎn)出現(xiàn)災(zāi)難后數(shù)據(jù)和應(yīng)用對(duì)用戶來(lái)說(shuō)仍然可用。

DR Server結(jié)構(gòu)給DBA主要提供了兩點(diǎn)重要功能:

它提供了DBA從邏輯上配置一個(gè) failover 資源組來(lái)達(dá)到高可用性的方法。
它指定了組成DR Server 本身的基礎(chǔ)計(jì)算框架。