天天看點

oralce 11g dataguard 概念

      前幾天大家讨論一個問題,oracle 11g dataguard分為哪幾種,本來隻想到還是實體standby和邏輯standby2種,沒想到今天在查閱了oracle 11g的線上文檔後發現,實際上載oracle 11g中已經分了三種類型的standby,當然以前聽說oracle 11g支援叫做active standby的功能,仔細研究後發現隻不過是一種在隻讀模式下就可以應用恢複,這樣在很多設計中可以将備庫來做一些報表功能,減少主庫的查詢帶來的一些負載和性能問題,當然這個功能其實也不是什麼新技術了,早在informix

7的HDR就做到了,看來相對來說,oracle在這塊的功能也比較滞後了些,同時我發現每種資料庫其實存在都是因為有其先進的技術獨到之處,informix之是以能夠在頂住即将被淘汰的命運大環境下頑強生存到現在,并且本來原廠打算放棄,但是在使用者的繼續堅持下,IBM終究還是妥協,繼續進行發展的承諾,更是說明了這一點,下面就繼續來看看oracle 11gdata guard的三種類型并且适用的常見。

      Standby資料庫類型分為三類:實體Standby、邏輯Standby和快照standby

1.實體Standby

      實體Standby與Primary資料庫在實體資料庫磁盤上具有主庫相同架構的塊與塊級别主庫的實體copy,DG通過REDO應用來維護實體Standby資料庫。通常在實體Standby沒有執行REDO應用操作的時候,可以将實體Standby資料庫以READ ONLY模式打開,如果資料庫中指定了Flashback Area的話,甚至還可以被臨時性的置為READ WRITE模式,操作完之後再通過Flashback Database特性恢複回READ WRITE前的狀态,以便繼續接收Primary端發送的REDO并應用。實體Standby通過REDO應用來保持與Primary資料庫的一緻性,所謂的REDO應用,實質是通過Oracle的恢複機制,應用歸檔檔案(或Standby Redologs檔案)中的REDO資料。恢複操作屬于塊對塊的應用。如果正在執行REDO應用的操作,Oracle資料庫就不能被Open。       Oracle 11g版本中增強實體Standby的應用功能,在11g版本中,實體Standby可以在OPEN READ ONLY模式下繼續接收和應用primaru庫産生的REDO資料,這就極大地提升了實體Standby資料庫的應用場合。       如果以READ WRITE模式打開,那麼Standby資料庫将暫停從Primary資料庫接收REDO資料,并且暫時失去災難保護的功能。當然,以READ WRITE模式打開也并非一無是處,如你可能需要臨時調試一些資料,但又不友善在正式庫中操作,那就可以臨時将Standby資料庫置為READ WRITE模式,操作完之後将資料庫閃回到操作前的狀态(閃回之後,Data Guard會自動同步,不需要重建實體Standby,不過如果從另一個方向看,沒有啟動閃回,那就回不到READ WRITE前的狀态了)。 實體Standby特點如下: (1)災難恢複及高可用性。實體Standby提供了一個健全、高效的災難恢複,以及高可用性的解決方案。更加易于管理switchover/failover角色轉換及在更短的計劃内或計劃外停機時間。 (2)資料保護。使用實體Standby資料庫,DG能夠確定即使面對無法預料的災害也能夠不丢失資料。前面也提到實體Standby是基于塊對塊的複制,是以與對象、語句無關,Primary資料庫上有什麼,實體Standby資料庫端也會有什麼。 (3)分擔Primary資料庫壓力。通過将一些備份任務、僅查詢的需求轉移到實體Standby資料庫,可以有效節省Primary資料庫的CPU及I/O資源。 (4)提升性能。實體Standby所使用的REDO應用技術使用最底層的恢複機制,這種機制能夠繞過SQL級代碼層,是以效率最高。

2.邏輯Standby

     邏輯Standby也要通過Primary資料庫(或其備份,或其複制庫,如實體Standby)建立,是以在建立之初與實體Standby資料庫類似。不過由于邏輯Standby通過SQL應用的方式應用REDO資料,是以邏輯Standby的實體檔案結構,甚至資料的邏輯結構都可以與Primary不一緻。與實體Standby不同,邏輯Standby正常情況下是以READ WRITE模式打開,使用者可以在任何時候通路邏輯Standby資料庫,就是說邏輯Standby是在OPEN狀态執行SQL應用。同樣有利也有弊,由于SQL應用自身特點,邏輯Standby對于某些資料類型及一些DDL/DML語句會有操作上的限制。可以在視圖DBA_LOGSTDBY_UNSUPPORTED 中檢視不支援的資料類型,如果使用了這種資料類型,則不能保證資料庫完全一緻。 邏輯Standby 的讀寫打開可以使它做報表系統,這樣減輕系統的壓力。 除了上述實體Standby中提到的類似災難恢複、高可用性及資料保護等特點之外,邏輯Standby還有下列一些特點: (1)有效地利用備機的硬體資源。除災難恢複外,邏輯Standby資料庫還可用于其他業務需求。如通過在Standby資料庫建立額外的索引、物化視圖等提高查詢性能并滿足特定業務需要;又如建立新的SCHEMA(該SCHEMA在Primary資料庫端并不存在),然後在這些SCHEMA中執行那些不适于在Primary資料庫端執行的DDL或者DML操作等。 (2)分擔Primary資料庫壓力。邏輯Standby資料庫可以在保持與Primary同步時仍然置于打開狀态,這使得邏輯Standby資料庫能夠同時用于資料保護 和報表操作,進而将主資料庫從報表和查詢任務中解脫出來,節約寶貴的 CPU和I/O資源。 (3)平滑更新。可以通過邏輯Standby來實作如跨版本更新,為資料庫打更新檔等操作。應該說應用的空間很大,而帶來的風險卻很小(前提是如果你擁有足夠的技術實力。另外雖然實體Standby也能夠實作一些更新操作,但如果跨平台的話恐怕就力不從心了,是以此項沒有作為實體Standby的特點列出),我個人認為這是一種值得可行的線上的滾動的平滑的更新方式,如果你的應用支援建立邏輯Standby的話。

3.快照standby

      一個快照standby資料庫就是一個完全可更新的standby資料庫,就像一個實體或者邏輯standby資料庫,一個快照standby資料庫從主庫接收和歸檔redo資料。但是不像實體standby或者邏輯standby資料庫會應用它所接收的redo資料。通過快照standby接收的redo資料不會被應用直到在首次放棄任何本地更新操作後被轉化還原為一個實體standby資料庫。      snapshot standby被使用在需要一個臨時,可更新實體standby的快照的場景,注意因為redo資料隻會被快照standby資料庫接收但是不會被應用,直到被轉化為一個實體standby資料庫,而從一個主庫恢複的故障時間和需要被應用的redo資料的資料量成正比。 ============================================ Oracle 專家QQ群:60632593、60618621、23145225 部落格:blog.csdn.net/newhappy2008