文章詳情頁
[Oracle]Data Guard數(shù)據(jù)庫災(zāi)難防護(hù)
瀏覽:227日期:2023-11-22 09:48:19
Oracle9i Data Guard 通過使用稱為standby database的數(shù)據(jù)庫來防止出現(xiàn)數(shù)據(jù)的災(zāi)難。它通過將primary database數(shù)據(jù)庫的重做日志傳到并應(yīng)用到standby database數(shù)據(jù)庫來使standby database數(shù)據(jù)庫與primary database數(shù)據(jù)庫同步: 可以將重做日志直接從primary database數(shù)據(jù)庫同步寫到standby database數(shù)據(jù)庫來完成完全沒有數(shù)據(jù)損失的災(zāi)難保護(hù)。這會(huì)給primary database數(shù)據(jù)庫的性能帶來一定的性能損失。;可以將歸檔的重做日志從primary database數(shù)據(jù)庫異步寫到standby database數(shù)據(jù)庫來使primary database數(shù)據(jù)庫在極少損失性能的前提下,最小化地減少數(shù)據(jù)的丟失。;假如重做日志數(shù)據(jù)到達(dá)standby database數(shù)據(jù)庫后快速應(yīng)用到standby database數(shù)據(jù)庫,則在primary database數(shù)據(jù)庫出現(xiàn)問題時(shí)可以快速地 failover 到standby database數(shù)據(jù)庫。然而,假如延緩一定時(shí)間后再應(yīng)用重做日志數(shù)據(jù),可以避免primary database數(shù)據(jù)庫的錯(cuò)誤快速地傳播到standby database數(shù)據(jù)庫。 數(shù)據(jù)庫數(shù)據(jù)保護(hù)級(jí)別;可以用如下的方式設(shè)置standby database數(shù)據(jù)庫來達(dá)到不同的數(shù)據(jù)庫數(shù)據(jù)保護(hù)級(jí)別: Guaranteed protection:規(guī)定在修改主數(shù)據(jù)庫時(shí),至少有一個(gè)備用數(shù)據(jù)庫有效。假如主(Primary Database)備(Standby Database)之間的連接中斷,Oracle會(huì)通過中斷主實(shí)例的工作來防止主備數(shù)據(jù)庫之間的數(shù)據(jù)的不一致,保證無數(shù)據(jù)丟失。這種模式對(duì)數(shù)據(jù)庫性能的影響較大。;Instant protection:規(guī)定在修改主數(shù)據(jù)庫時(shí),至少有一個(gè)備用數(shù)據(jù)庫有效。與Guaranteed protection模式不同的是當(dāng)主備數(shù)據(jù)庫之間的連接中斷時(shí),答應(yīng)主備數(shù)據(jù)庫之間的數(shù)據(jù)的不一致,并當(dāng)恢復(fù)連接后,解決數(shù)據(jù)不一致的現(xiàn)象。這種模式對(duì)主數(shù)據(jù)庫的性能有較小的影響。;Rapid protection:主數(shù)據(jù)庫的修改快速應(yīng)用在備用數(shù)據(jù)庫上。會(huì)出現(xiàn)數(shù)據(jù)丟失,但對(duì)數(shù)據(jù)庫性能的影響小。;Delayed protection:主數(shù)據(jù)庫的修改在延遲一定的時(shí)間后應(yīng)用在備用數(shù)據(jù)庫上。Rapid protection和Delayed protection模式即使在網(wǎng)絡(luò)連接有效時(shí),也答應(yīng)主數(shù)據(jù)庫與所有的備用數(shù)據(jù)庫有數(shù)據(jù)分歧,數(shù)據(jù)的丟失量等同于主數(shù)據(jù)庫聯(lián)機(jī)重做日志的未歸檔數(shù)。這種方式對(duì)數(shù)據(jù)庫性能的影響小。;;如何限制數(shù)據(jù)的丟失量;在primary/standby配置下,所有的歸檔日志被發(fā)送到了standby 節(jié)點(diǎn),這使standby 節(jié)點(diǎn)的數(shù)據(jù)保持著更新。但是,假如primary 數(shù)據(jù)庫意外關(guān)閉,聯(lián)機(jī)的日志將會(huì)丟失,因?yàn)樗鼈兩形礆w檔并發(fā)送到standby節(jié)點(diǎn)。這使得 primary 和standby 數(shù)據(jù)庫之間會(huì)有一個(gè)差異。;Oracle9i 可以用以下的方法來限制這個(gè)差異: DBA可以選擇讓LGWR在將重做日志數(shù)據(jù)寫到本地磁盤的同時(shí)將數(shù)據(jù)發(fā)送到 standby 數(shù)據(jù)庫。該功能稱為standby零數(shù)據(jù)丟失(standby zero data loss)。這種方法從本質(zhì)的角度講提供了遠(yuǎn)程重做日志鏡像,但帶來的問題是會(huì)極大地?fù)p失性能。設(shè)置系統(tǒng)初始化參數(shù)ARCHIVE_LAG_TARGET。該參數(shù)是一個(gè)日志文件開始使用到被發(fā)送到standby數(shù)據(jù)庫的時(shí)間間隔。該參數(shù)的推薦值是 1800秒(需要注重的是,沒有傳送到 standby 數(shù)據(jù)庫的已經(jīng)提交的事務(wù)會(huì)丟失,因此長(zhǎng)的事務(wù)會(huì)使standby數(shù)據(jù)庫損失更多的數(shù)據(jù))。;;Oracle9i Data Guard數(shù)據(jù)防護(hù)與Oracle8 Standby Database的關(guān)系;Oracle Standby Database 是最經(jīng)常使用的最有效的災(zāi)難解決方案。在過去版本的基礎(chǔ)上,Oracle9i 又進(jìn)行了許多改進(jìn),使其功能遠(yuǎn)遠(yuǎn)超過了基本的災(zāi)難恢復(fù)要求。通過將復(fù)雜的工作自動(dòng)化,并對(duì)監(jiān)控、警告、以及控制機(jī)制的大規(guī)模改進(jìn),Standby Database 和一些新的模塊可以幫助DBA 從錯(cuò)誤操作、癱瘓、以及其它的災(zāi)難中恢復(fù)(這些災(zāi)難都可能毀掉數(shù)據(jù)庫)。另外,通過使用Oracle9i Standby Database,由于硬件和軟件升級(jí)造成的宕機(jī)時(shí)間也可以極度縮短。Oracle9i 將改進(jìn)過的8版本的Standby Database功能,與幾個(gè)新增加的防止用戶錯(cuò)誤和癱瘓的模塊合起來稱為Oracle9i Data Guard。 Oracle8 Automated Standby Database 提供了創(chuàng)建和自動(dòng)維護(hù)生產(chǎn)數(shù)據(jù)庫拷貝的手段來防止災(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ù)方法來將歸檔日志應(yīng)用到每個(gè)standby databases。這些日志的應(yīng)用是自動(dòng)的,DBA也可以人工應(yīng)用這些日志。 primary database 處于打開和活動(dòng)狀態(tài),而standby database處于恢復(fù)或者打開只讀狀態(tài)。 大多數(shù)的基于Oracle8的災(zāi)難保護(hù)方案包括一個(gè)Automated Standby Database。因?yàn)镺racle數(shù)據(jù)庫可以用備份和日志恢復(fù),所以任何應(yīng)用都可以使用Automated Standby Database。通過Oracle Net傳輸歸檔日志對(duì)primary database的性能影響可以忽略不計(jì)。物理的Standby Database和邏輯的Standby DatabaseStandby 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ù)庫模式一定是一樣的,且不能以讀/寫的方式打開。邏輯 Standby Database。邏輯 Standby Database是將歸檔的日志轉(zhuǎn)化為SQL事務(wù),并將它們應(yīng)用到打開的Standby Database。因?yàn)閿?shù)據(jù)庫是打開的,它在物理上與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)問題的情況下也沒有問題。當(dāng)選擇使用物理standby database、邏輯standby database、或兩者都用時(shí),要考慮以下一系列的因素。 邏輯standby database可用于兩個(gè)目的。當(dāng)要對(duì)邏輯standby database進(jìn)行改變時(shí),其數(shù)據(jù)庫可以打開。 邏輯standby database需要DBA更高的技能。 使數(shù)據(jù)保護(hù)極大化的解決方案通常包括邏輯的和物理的standby databases。 數(shù)據(jù)庫Failover和Switchover當(dāng)主數(shù)據(jù)庫發(fā)生宕機(jī),且不能及時(shí)恢復(fù)時(shí),Oracle會(huì)丟棄主數(shù)據(jù)庫,將備用數(shù)據(jù)庫轉(zhuǎn)變?yōu)橹鲾?shù)據(jù)庫。當(dāng) failover之后,備用數(shù)據(jù)庫變成為主數(shù)據(jù)庫,從而丟失了備用數(shù)據(jù)庫的所有能力,也就是說,不能再返回到備用模式。 Failover 有以下特點(diǎn): 主數(shù)據(jù)庫offline,備用數(shù)據(jù)庫online,這種操作由系統(tǒng)和軟件失敗引起。 即使在備用數(shù)據(jù)庫上應(yīng)用重做日志,也可能出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象,除非備用數(shù)據(jù)庫運(yùn)行在guaranteed protection模式下。 原主數(shù)據(jù)庫重新使用時(shí)必須reinstantiated(start instance)。 其它的備用數(shù)據(jù)庫也需reinstantiated。; 在主數(shù)據(jù)庫正常工作時(shí),Oracle 答應(yīng) DBA 將主數(shù)據(jù)庫切換到備用數(shù)據(jù)庫,此備用數(shù)據(jù)庫變?yōu)橹鲾?shù)據(jù)庫,而原主數(shù)據(jù)庫變?yōu)閭溆脭?shù)據(jù)庫。 數(shù)據(jù)庫的切換可以從主數(shù)據(jù)庫角色切換到備用數(shù)據(jù)庫角色,也可從備用數(shù)據(jù)庫角色切換到主數(shù)據(jù)庫角色。 Switchover 有以下特點(diǎn): 故意將主數(shù)據(jù)庫offline,而將另一備用數(shù)據(jù)庫online。可以如使用Switchover 功能完成系統(tǒng)的平滑升級(jí)工作。 即使在備用數(shù)據(jù)庫上不應(yīng)用重做日志,也不會(huì)造成數(shù)據(jù)的丟失。 數(shù)據(jù)庫不需reinstantiated。這使主數(shù)據(jù)庫幾乎能立即在備用數(shù)據(jù)庫上恢復(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的部件。例如,通過只用一個(gè)命令就可以啟動(dòng) failover,Data Guard broker可被用于控制主要角色從primary到任何一種standby database轉(zhuǎn)移的整個(gè)過程。用戶可以從2種不同的界面來選擇進(jìn)行角色轉(zhuǎn)換,使standby database 從primary database接管生產(chǎn)數(shù)據(jù)庫的處理。一種選擇是使用新的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)問題恢復(fù)應(yīng)用和數(shù)據(jù)庫的策略。每個(gè)DBA都應(yīng)考慮災(zāi)難恢復(fù)以及計(jì)劃好的或意外的failover。Disaster Recovery (DR) Server 是幫助DBA達(dá)到更高系統(tǒng)可用性的產(chǎn)品的一部分。 Disaster Recovery (DR) Server 從根本上說是一系列松散連接的節(jié)點(diǎn)組成。這些節(jié)點(diǎn)將物理的和邏輯的standby 方案組合成了一個(gè)單獨(dú)的易治理的災(zāi)難恢復(fù)解決方案。Disaster Recovery (DR) Server節(jié)點(diǎn)在物理分布上是松散的,是通過網(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)來治理,從而其可用性會(huì)高于單獨(dú)的節(jié)點(diǎn)。 DR Server 是通過將數(shù)據(jù)在節(jié)點(diǎn)間復(fù)制來實(shí)現(xiàn)其 failover 系統(tǒng)的。數(shù)據(jù)庫治理員是這樣來配置服務(wù)器的:數(shù)據(jù)庫和應(yīng)用在每個(gè)節(jié)點(diǎn)都激活。其中,一個(gè)節(jié)點(diǎn)設(shè)計(jì)成primary節(jié)點(diǎn),其數(shù)據(jù)庫對(duì)應(yīng)用來說是完全可用的,且其數(shù)據(jù)以日志的形式復(fù)制到其它的節(jié)點(diǎn)。其它的節(jié)點(diǎn)對(duì)primary節(jié)點(diǎn)來說是standby節(jié)點(diǎn),它們接收從primary節(jié)點(diǎn)發(fā)來的日志并改變(從物理上或邏輯上)其數(shù)據(jù)庫拷貝。 DR Server的standby節(jié)點(diǎn)是隨時(shí)預(yù)備好在primary節(jié)點(diǎn)出現(xiàn)問題時(shí)進(jìn)行接管的,從而在primary 節(jié)點(diǎn)出現(xiàn)災(zāi)難后數(shù)據(jù)和應(yīng)用對(duì)用戶來說仍然可用。 DR Server結(jié)構(gòu)給DBA主要提供了兩點(diǎn)重要功能: 它提供了DBA從邏輯上配置一個(gè) failover 資源組來達(dá)到高可用性的方法。 它指定了組成DR Server 本身的基礎(chǔ)計(jì)算框架。
標(biāo)簽:
Oracle
數(shù)據(jù)庫
排行榜
