Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks

          本文作者: junsansi???? 轉載網址: http://www.5ienet.com/index.shtml

          ?
          ?
          第一部分基礎1之名詞先混個臉熟? 2007.11.23
          ?
          ??? 它有無數個名字,有人叫它dg,有人叫它數據衛士,有人叫它data guard,在oracle 的各項特性中它有著舉足輕理的地位,它就是(掌聲).........Oracle Data Guard。而對于我而言,我一定要親切的叫它:DG(注:主要是因為打著方便)。
          ??? 不少未實際接觸過dg 的初學者可能會下意識以為dg 是一個備份恢復的工具。我要說的是,這種形容不完全錯,dg 擁有備份的功能,某些情況下它甚至可以與primary 數據庫完全一模一樣,但是它存在的目的并不僅僅是為了恢復數據,應該說它的存在是為了確保企業數據的高可用性,數據保護以及災難恢復(注意這個字眼,災難恢復)。dg 提供全面的服務包括:創建,維護,管理以及監控standby 數據庫,確保數據安全,管理員可以通過將一些操作轉移到standby 數據庫執行的方式改善數據庫性能。后面這一長串大家可以把它們理解成形容詞,千萬不要被其花哨的修飾所迷惑,要抓住重點,要擁有透明現象看本質的能力,如果沒有那就要努力學習去擁有,下面我來舉一個例子,比如我們夸人會說它聰明勇敢善良等等,這些就屬于形容詞,不重要,重點在于我們究竟想形容這個人是好人還是壞人。然后再回來看看oracle 對dg 功能上的形容,數據保護和災難恢復應該都可以歸結為高可用性,那么我們可以清晰的定位dg 的用途了,就是構建高可用的企業數據庫應用環境。
          ?
          ?
          一、DataGuard配置(DataGuardConfigurations)
          ?
          ??? Data Guard 是一個集合,由一個primary 數據庫(生產數據庫)及一個或多個standby 數據庫(最多9 個)組成。組成Data Guard 的數據庫通過Oracle Net 連接,并且有可能分布于不同地域。只要各庫之間可以相互通信,它們的物理位置并沒有什么限制,至于操作系統就更無所謂了(某些情況下),只要支持oracle 就行了。
          ??? 你即可以通過命令行方式管理primary 數據庫或standby 數據庫,也可以通過Data Guard broker 提供的專用命令行界面(DGMGRL),或者通過OEM 圖形化界面管理。
          ?
          1.Primary數據庫
          ?
          ??? 前面提到,Data Guard 包含一個primary 數據庫即被大部分應用訪問的生產數據庫,該庫即可以是單實例數據庫,也可以是RAC。
          ?
          2.Standby數據庫
          ?
          ??? Standby 數據庫是primary 數據庫的復制(事務上一致)。在同一個Data Guard 中你可以最多創建9 個standby數據庫。一旦創建完成,Data Guard 通過應用primary 數據庫的redo 自動維護每一個standby 數據庫。Standby數據庫同樣即可以是單實例數據庫,也可以是RAC 結構。關于standby 數據庫,通常分兩類:邏輯standby 和物理standby,如何區分,兩類各有什么特點,如何搭建,這方面內容就是后面的章節主要介紹的,在這里呢三思先簡單白話一下:
          ?
          ??? 邏輯standby
          ?
          ??? 就像你請人幫你素描畫像,基本器官是都會有的,這點你放心,但是各器官位置啦大小啦膚色啦就不一定跟你本人一致了。
          ?
          ??? 物理standby
          ?
          ??? 就像拿相機拍照,你長什么樣出來的照片就是什么樣,眼睛絕對在鼻子上頭。或者說就像你去照鏡子,里外都是你,哇哈哈。具體到數據庫就是不僅文件的物理結構相同,甚至連塊在磁盤上的存儲位置都是一模一樣的(默認情況下)。
          ?
          ??? 為什么會這樣呢?這事就得從同步的機制說起了。邏輯standby 是通過接收primary 數據庫的redo log并轉換成sql 語句,然后在standby 數據庫上執行SQL 語句(SQL Apply)實現同步,物理standby 是通過接收并應用primary 數據庫的redo log 以介質恢復的方式(Redo Apply)實現同步。
          ?
          ??? 另外,不知道大家是否注意到形容詞上的細節:對于相機拍照而言,有種傻瓜相機功能強大而操作簡便,而對于素描,即使是最簡單的畫法,也需要相當多的練習才能掌握。這個細節是不是也說明邏輯standby相比物理standby 需要操作者擁有更多的操作技能呢?
          ?
          ?
          二、DataGuard服務(DataGuardServices)
          ?
          ??? REDO 傳輸服務(Redo Transport Services)
          ?
          ??? 控制redo 數據的傳輸到一個或多個歸檔目的地。
          ?
          ??? Log 應用服務(Log Apply Services)

          ??? 應用redo 數據到standby 數據庫,以保持與primary 數據庫的事務一致。redo 數據即可以從standby 數據庫的歸檔文件讀取,也可直接應用standby redo log 文件(如果實時應用打開了的話)。
          ?
          ??? 角色轉換服務(Role Transitions)
          ?
          ??? Dg 中只有兩種角色:primary 和standby。所謂角色轉換就是讓數據庫在這兩個角色中切換,切換也分兩種:switchover 和failover
          ?
          ??? switchover :轉換primary 數據庫與standby 數據庫。switchover 可以確保不會丟失數據。
          ??? failover :當primary 數據庫出現故障并且不能被及時恢復時,會調用failover 將一個standby 數據庫轉換為新的primary 數據庫。在最大保護模式或最高可用性模式下,failover 可以保證不會丟失數據。
          ?

          ??? 注:上述各概念簡要了解即可,這里寫的太簡單,不要咬文嚼字,不然你會越看越糊涂,相關服務在后面章節將會有詳細介紹,不僅有直白的描述,還會有示例,再加上淺顯的圖片,就算你一看不懂,再看肯定懂:)

          ?

          三、DataGuard保護模式(DataGuardProtectionModes)
          ?
          ??? 對于Data Guard 而言,其生存邏輯非常簡單,好好活,做有意義的事,做黑多黑多有意義的事:)
          ??? 由于它提供了三種數據保護的模式,我們又親切的叫它:有三模:
          ?
          ??? 最大保護(Maximumprotection):
          ?
          ??? 這種模式能夠確保絕無數據丟失。要實現這一步當然是有代價的,它要求所有的事務在提交前其redo 不僅被寫入到本地的online redo log,還要同時提交到standby 數據庫的standby redo log,并確認redo 數據至少在一個standby 數據庫可用(如果有多個的話),然后才會在primary 數據庫上提交。如果出現了什么故障導致standby數據庫不可用的話,primary 數據庫會被shutdown。
          ?
          ??? ● 最高性能(Maximumperformance):
          ?
          ??? 這種模式提供在不影響primary 數據庫性能前提下最高級別的數據保護策略。事務可以隨時提交,當前primary 數據庫的redo 數據也需要至少寫入一個standby 數據庫,不過這種寫入可以是不同步的。
          ??? 如果網絡條件理想的話,這種模式能夠提供類似最高可用性的數據保護而僅對primary 數據庫有輕微的性能影響。
          ?
          ??? ● 最高可用性(Maximumavailability):
          ?
          ??? 這種模式提供在不影響primary 數據庫可用前提下最高級別的數據保護策略。其實現方式與最大保護模式類 似,也是要求所有事務在提交前必須保障redo 數據至少在一個standby 數據庫可用,不過與之不同的是,如果出現故障導入無法同時寫入standby 數據庫redo log,primary 數據庫并不會shutdown,而是自動轉為最高性能模式,等standby 數據庫恢復正常之后,它又會再自動轉換成最高可用性模式。
          ??? 最大保護及最高可用性需要至少一個standby 數據庫redo 數據被同步寫入。三種模式都需要指定LOG_ARCHIVE_DEST_n 初始化參數。LOG_ARCHIVE_DEST_n 很重要,你看著很眼熟是吧,我保證,如果你完完整整學完dataguard,你會對它更熟。
          ?
          ?
          四、DataGuard優點總結

          ??? ● 災難恢復及高可用性
          ??? ● 全面的數據保護
          ??? ● 有效利用系統資源
          ??? ● 在高可用及高性能之間更加靈活的平衡機制
          ??? ● 故障自動檢查及解決方案
          ??? ● 集中的易用的管理模式
          ??? ● 自動化的角色轉換
          ?

          ??? 經常開篇的灌輸,相信大家已經看的出來,上面這幾條都是形容詞,看看就好,記住更好,跟人窮白活的時候通常能夠用上:)

          ?
          ?
          ?
          ?




          -The End-

          posted on 2009-02-17 22:19 decode360-3 閱讀(220) 評論(0)  編輯  收藏 所屬分類: DBA
          主站蜘蛛池模板: 奉新县| 台前县| 宜春市| 连山| 乐平市| 宜阳县| 十堰市| 山东省| 台东县| 崇州市| 北流市| 舒兰市| 兰西县| 灵山县| 南皮县| 陆丰市| 从江县| 平定县| 汝阳县| 大冶市| 万安县| 云霄县| 同仁县| 临西县| 改则县| 万州区| 兴文县| 奇台县| 九龙县| 广安市| 洪泽县| 尚志市| 保德县| 柞水县| 永城市| 沐川县| 许昌市| 平安县| 句容市| 六枝特区| 舒城县|