oracle data guard方案,Oracle Data Guard 概念篇

一個Data Guard 配置由一個生產庫和一個或者多個standby數據庫組成,在Data Guard配置中,主庫和備庫都既可以是rac環境,也可以是單機環境。

這篇文章主要介紹dataguard的一些基本知識

dataguard的分類、dataguard的服務類型、dataguard的保護模式

1.Dataguard中的備庫分為物理備庫和邏輯備庫及快照備庫

備庫是主庫的一致性拷貝,使用一個主庫的備份可以創建多到30個備庫,將其加入到dataguard環境中,創建成功后,dataguard通過自動應用從主庫傳送到備庫的redo數據維護每個備庫。

1.1物理備庫(Physical standby database)

物理備庫提供物理上和主數據庫相同的拷貝,磁盤數據庫結構和主庫是相同的,物理備庫是塊到塊的拷貝,一個物理備庫通過應用從主庫收到的redo數據保持和主庫的同步,稱為日志應用(redo apply),11g的dataguard在應用日志的時候是可以打開的,10g是不允許的。11g的這種特性稱為active data guard。

1.2邏輯備庫 (Logical standby database)

邏輯備庫包含和主庫相同的邏輯信息,物理結構和數據結構可以是不同的,邏輯備庫把從主庫收到的redo轉換為sql語句,然后在備庫上執行sql語句,稱為sql應用(sql apply)。邏輯備庫除了能應用于災難恢復,還允許用戶查詢邏輯備庫和通過邏輯備庫生成報表,用于其他目的,使用邏輯備庫能升級database軟件,在無停機的情況下打補丁等操作。

1.3快照備庫 (Snapshot Standby Database)

快照備庫是11g中出現的,類似物理備庫和邏輯備庫一樣,快照備庫從主庫接收redo數據,和物理或邏輯備庫不同的是,快照備庫只接收而不應用接收到的redo數據。直至快照備庫轉換為物理備庫,之后先扔掉任何對快照備庫的更新,然后應用接收到的redo數據。快照數據庫最好用在要求臨時的,可更新的物理備庫快照場景。

典型的data guard配置如圖所示,來自oracle concept

7b7211aa010eaf5183312d05e92cff39.png

2. dataguard的服務類型 (Data GuardServices)

日志傳輸服務(Redo Transport Services)

日志應用服務(Apply Services)

角色轉換 ? ? (Role Transitions)

2.1日志傳送服務管理從生產庫傳送redo數據到一個或多個歸檔目錄。日志傳輸服務完成以下工作:

2.1.1在配置中從主庫傳輸redo數據到備庫

2.1.2在網絡失敗后,管理備庫缺失的archivelog,自動解決缺失

2.1.3自動掃描在備庫中錯誤的或損壞的redo,自動從主庫或其他備庫重新獲得并替換損壞的archive log。

log_archive_dest_n初始化參數用來確定本地的redo和遠程歸檔redo的位置。log_archive_dest_n中詳細參數解析

2.2日志應用服務在備庫中應用redo數據,維護和備庫主庫之間的同步,redo數據默認從歸檔redo日志中應用,若啟用了實時應用,則直接從standby redo日志中應用;對于非實時應用redo,當主庫日志發生切換時,備庫才會應用從主庫傳輸來的redo日志。默認情況下,對于非實時應用,應用服務會等待備庫redo日志被歸檔才會應用歸檔redo日志,實時應用允許應用服務應用當前正在填充的備庫redo日志中的redo數據。

日志應用工作方式:redo apply和sql apply

物理備庫和邏輯備庫主要的區別就是日志應用的工作方式不同,物理備庫使用redo apply,邏輯備庫使用sql apply,類似MySQL 的主從的方式。

Redo apply在物理備庫上使用常規的數據庫恢復技術,也就是介質恢復,來應用redo中的數據。如圖所示:

23e3c26258d5e4768fc3729dd129a1a9.png

Sql apply在邏輯備庫上使用這種方式,首先將接收到的redo數據轉換為sql語句,然后在邏輯備庫中執行生成的sql語句,之后在備庫中應用。使用的是logminer技術。如圖

2ad120973a2a5ceff53a8d7a7536c0d7.png

日志應用服務配置

standby redolog

實時應用要求standby數據庫必須有standby redo日志,lgwr同步和異步傳輸模式要求傳輸目的地配置standby redo日志,standby redo日志用于存儲從一個主庫接收到的redo日志,standby redo日志在結構上和聯機redo日志是相同的,也使用創建和管理聯機redo日志相同的sql來創建和管理standbyredo日志。

Standby數據庫使用RFS前臺進程接收傳送過來的redo日志,將其寫到當前的standby redo日志組,當源數據庫發生了日志切換,傳入的redo將寫到下一個standby redo日志組中,之前的standby 日志通過ARCn前臺進程被歸檔。在源數據庫,進程順序地填充和歸檔redo日志組,這種方式唄鏡像到每個redo傳輸目的地,在standby數據庫以相同的順序填充和歸檔standby redo日志組。

每個standby redo日志的大小必須至少和redo源數據庫的redo日志組中最大的redo日志一樣大,推薦傳輸目的地的standby redo日志和源主庫的redo日志中的所有日志相同大。

對于standby 數據庫的每個redo線程,standby redo日志至少比在redo源主庫的redo日志多一個redo日志組,在源主庫,查詢v$log視圖確定源主庫redo日志組的個數,對于rac,查詢v$thread視圖確定源主庫redo的線程數,對每個線程使用的standby redo日志進行配置。

操作過程:

selectgroup#,bytes from v$Log ;主庫

selectgroup#,bytes from v$standby_log ;備庫

Oracle推薦在dataguard中的主數據庫也創建standby redo日志,這樣當switchover到備庫角色也可以立即實現實時接收redo數據

alterdatabase add standby logfile創建或添加standby redo日志,如果standby redo日志租不活動或者redo傳輸用于解決缺失,那么standby數據庫接收到的redo數據被直接寫到一個歸檔redo日志。

實時應用redo 數據

若啟用實時應用特性,應用服務能在不等待當前standby redo數據被歸檔的情況下,應用接收到的redo數據,這樣使得switchover和failover的速度更快,因為standby redo日志中的數據在failover或者switchover開始的時候已經被應用到standby 數據庫,減少了切換需要花費的時間。

物理備庫開啟實時引用

alterdatabase recover managed standby database using curren logfile dixconnect fromsession ;

邏輯備庫開啟實時引用

alterdatabase start logical standby apply immediate ;

啟用實時應用要求備庫配置由standby redo日志,并且開啟了歸檔

注:對于日志傳輸,可以將其劃分為實時傳輸(同步、異步)和切換時傳輸(默認傳輸方式),實時傳輸與實時應用之間沒有關系,實時傳輸只是和dataguard保護模式有關。

延遲應用redo

在一定程度上保護應用程序對主庫的破壞及減少誤操作對standby數據庫的影響。當設置delay間隔之后,不能延遲傳輸redo數據到standby數據庫,只是會延遲應用redo日志,從standby目的地完成歸檔開始計算延遲時間。延遲結束之后開始應用歸檔日志。

指定延遲時間:

在主庫和備庫通過指定log_archive_dest_n初始化參數delay=設置延遲時間,默認情況是沒有延遲時間的,若指定了delay參數但是沒有指定值,默認是30分鐘。

取消指定時間

物理備庫

alterdatabase recover managed standby database nodelay ;

邏輯備庫

alterdatabase start logical standby apply nodelay;

執行以上的命令,在時間間隔到之前應用服務立即開始應用歸檔redo日志文件到備庫。

2.3使用switch over或failover操作改變數據庫角色,將備庫轉換成主庫或將主庫轉換為備庫。

Switchover是主庫個一個備庫的轉換,可以確保沒有數據丟失,是在有計劃的典型操作。在switchover期間,主庫角色轉變為備庫,備庫轉換為主庫,在主庫inactive時,failover可以將備庫轉換為主庫角色,failover可能會導致數據丟失,failover只有在主數據庫啟動失敗的情況下才使用。

3.dataguard的保護模式

Oracle提供三種保護模式滿足不同級別的系統。最大保護、最大性能、最高可用。三種保護模式都要求使用特定的redo傳送選項發送redo數據到至少一個備庫

3.1最大保護

如果主庫失敗,最大保護模式可以確保沒有數據丟失,事務在完成提交之前,事務恢復需要的redo數據必須寫到主庫的聯機redo日志和至少一個同步的備庫的standby redo log,若主庫不能寫redo數據到至少一個備庫,為了確保數據不會丟失,主庫會被關閉,正是應了最大保護模式這句話。

使用最大保護模式必須符合的條件:

a.主庫在log_archive_dest_n的參數設置中必須使用到lgwr sync affirm屬性來歸檔到備庫

b.備庫必須配置standby redo log

c.至少有一個備庫是可用的

采用最大保護模式的主庫,不能使用shutdown immediate對唯一的standby數據庫執行關閉操作。因為會導致主庫關閉

3.2最大性能

是默認的保護模式,提供在不影響主庫性能的情況下的最高級別的數據庫保護模式,主庫的用戶事務一旦被寫入本地聯機redo中,就被允許提交,不需要立刻寫到至少一個備庫中,主庫只要使用arch 或lgwr async屬性對遠程的備庫進行歸檔即可,redo數據也寫到一個或多個備庫,但是對于事務提交是異步完成的,因此通過延遲寫redo數據到備庫不會影響主庫的性能,這種保護模式提供您比最高可用模式較少的保護,但是能最低程度的影響主庫的性能

3.3最高可用

采用個最大保護模式同樣的方式,確保redo日志被完全寫入本地數據庫和至少一個備庫的standby redo log中,才會給用于返回提交完成的信息,若因為某些原因導致備庫不可用,主庫不能講redo寫入到備庫的standby redo 中,此時主庫并不會關閉,主庫將暫時將保護模式降為最大性能模式,并且繼續進行工作,一旦備庫恢復正常,主庫的缺失消除方案會啟動,歸檔redo日志的缺失部分會被填滿,當主庫下一個日志打開的時候,主庫中的保護模式又會上升為最高可用。采用最高可用必須滿足的條件:

a.主庫在log_archive_dest_n初始化參數中需要使用lgwr sync affirm屬性歸檔到備庫

b.備庫必須配置standby redo log

c.至少有一個備庫處于可用狀態

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537851.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537851.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537851.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

洛谷P4133 [BJOI2012]最多的方案(記憶化搜索)

題意 題目鏈接 求出把$n$分解為斐波那契數的方案數&#xff0c;方案兩兩不同的定義是分解出來的數不完全相同 Sol 這種題&#xff0c;直接爆搜啊。。。 打表后不難發現$<1e18$的fib數只有88個 最先想到的應該是直接把$n$加入到搜索狀態里&#xff0c;然后枚舉能被分成哪些 但…

centos一鍵安裝redmine

官網給出的環境要求&#xff1a; http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Requirements ------------------------------------------------------------------------------------------------------------- 下載一鍵安裝&#xff1a;&#xff08;下載…

大話php設計模式視頻,大話PHP設計模式

工廠模式用工廠方法或者類來實例化對象&#xff0c;而不是直接new。首先我們需要創建一個工廠類&#xff0c;比如Factory.php。如果不使用工廠模式的&#xff0c;我們需要一個對象的時候通常需要new Inexistence\girlfriend();然而我們一般不只在一個地方需要這個對象&#xff…

Git 2.19 對Diff、Branch和Grep等做了改進

\Git的最新版帶來了豐富的新功能以及內部更新&#xff0c;包括改進的diff、branch和grep&#xff0c;更好的命令行補全&#xff0c;新的range-diff命令等。\\Git diff現在可以正確地標記以intent-to-add參數添加的新文件路徑。intent-to-add可以和git add命令一起使用&#xff…

su oracle c expdp,expdp/impdp 數據泵導入導出

useridtest/test --導出的用戶&#xff0c;本地用戶!!directorydmpfile --導出的邏輯目錄&#xff0c;一定要在oracle中創建完成的&#xff0c;并且給用戶授權讀寫權限dumpfilexx.dmp --導出的數據文件的名稱&#xff0c;如果想在指定的位置的話可以寫…

Centos 升級GLIBCXX3.4.25

32位系統: http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc6_4.7.2-5_i386.deb 64位系統: wget http://ftp.de.debian.org/debian/pool/main/g/gcc-8/libstdc6_8.2.0-7_amd64.deb 其他版本 http://ftp.de.debian.org/debian/pool/main/g/ 解壓 ar -x libst…

美團點評基于MGR的CMDB高可用架構搭建之路【轉】

王志朋 美團點評DBA 曾在京東金融擔任DBA&#xff0c;目前就職于美團點評&#xff0c;主要負責金融業務線數據庫及基礎組件數據庫的運維。 MySQL Group Replication&#xff08;以下簡稱MGR&#xff09;&#xff0c;于5.7.17版本正式GA&#xff0c;由Oracle官方出品&#xff0c…

使用 redmind 進行項目任務管理

一、項目經理 1.1、新建任務(工單) 1.2、查看任務狀態 二、團隊成員 2.1、查看任務 作為這個團隊的成員之一&#xff0c;每天開工第一件事便是進入redmine查看“我的工作臺”中自己的任務 2.2、每日反饋任務完成狀態 1、每天開始工作時&#xff0c;及時將任務狀態從“新…

oracle11g創建表空間大文件,oracle11g創建表空間 sql語法

--oracle 11g創建有限制大小的永久表空間--create tablespace test--datafile F:\app\shan\product\11.2.0\dbhome_1\oradata\test.dbf size 1M--autoextend on next 2M maxsize 1024M;--修改表空間大小&#xff1a;--alter database datafile F:\app\shan\product\11.2.0\dbho…

內存泄漏優化

目錄介紹&#xff1a; 1.什么是內存泄漏2.內存泄漏造成什么影響3.內存泄漏檢測的工具有哪些4.關于Leakcanary使用介紹5.Leakcanary捕捉常見的內存泄漏及解決辦法 5.0.1 錯誤使用單例造成的內存泄漏5.0.2 錯誤使用靜態變量&#xff0c;導致引用后無法銷毀5.0.3 [常見]Handler使用…

redmine更換主題

主題列表&#xff1a;http://www.redmine.org/projects/redmine/wiki/Theme_List 雖然有很多主題&#xff0c;但是很多主題都是要錢的&#xff0c;像這類&#xff08;上圖&#xff09;沒有下載地址的&#xff0c;都是要錢的。 含GitHub的下載地址的&#xff0c;是免費可下載的&…

redmine 郵箱配置(阿里云+windows)

說明 密碼是第三方的授權碼&#xff0c;不是郵箱密碼 需要登錄126網頁版&#xff0c;在設置里開啟 smtp 等第三方服務&#xff0c;設置授權碼 阿里云Linux 默認屏蔽25號端口&#xff0c;所以需要開啟ssl&#xff0c;和使用 465 端口 重啟下 redmind sh /opt/redmine-3.4.6-…

linux查看當前用戶終端,Linux----基本命令的使用(vi命令,查看文件內容,顯示進程,切換用戶等)...

1、vi是linux系統上經常使用的一個文本編輯器&#xff0c;其有三種模式&#xff1a;命令模式、編輯模式(插入模式)、末行模式。命令模式——>編輯模式&#xff1a;“i a o I A O”linux編輯模式——>命令模式&#xff1a;“ESC”shell命令模式——>末行模式&#xff1…

centos6.8 環境一鍵安裝包 nginx配置thinkphp5

---恢復內容開始--- lnmp1.4 一鍵安裝包 nginx配置thinkphp5 環境&#xff1a;Nginx1.12.1 PHP5.6 Coentos6.8 修改網站配置文件 server{listen 443 ssl http2;#listen [::]:443 ssl http2;server_name xxx.cn;index index.html index.htm index.php default.html default.ht…

Linux下BitNami Redmine的插件安裝與更新

截至2017年3月27日&#xff0c;Redmine-3.3.2-2安裝以下的15款插件全部成功并通過測試&#xff08;下面顯示為插件正確文件夾名&#xff09;&#xff1a; easy_wbs redmine_ckeditor 提供所見即所得編輯器 redmine_graphs 提供部分問題圖表功能 progressive_projects_list 是…

linux 進程 讀寫鎖,linux 下實現高性能讀寫鎖(read/write lock)

前一篇文章分析了Windows slim read/write lock的工作原理。我們知道它的設計相當精妙&#xff0c;于是我們可以借鑒它的思路來設計linux下的讀寫鎖。在這個讀寫鎖的設計上&#xff0c;需要注意的是linux和windows有以下幾點區別&#xff1a;(1)windows使用的keyedevent機制需要…

Linux下redmine安裝插件報錯

報錯如下&#xff1a; There was an error parsing Gemfile: compile error - syntax error, unexpected :, expecting $end gem tzinfo-data, platforms: [:mingw, :x64_mingw, :mswin, :jruby]^. Bundler cannot continue. 原因是&#xff1a; redmine不同版本對ruby版本有…

ajax post 提交無法進入controller 請求200

最近寫js遇到個問題&#xff1a; 用ajax的post方式給后臺提交數據&#xff0c;頁面200&#xff0c;但是不進入controller 斷點&#xff0c;我以為我post參數不對。 網上查的&#xff1a; 1.說路徑不對&#xff0c;但是我通過get方式是可以進入的&#xff0c;路徑是沒問題的&…

cuda 編譯 linux,Linux下安裝Tensorflow源碼及編譯

下載Tensorflow源碼git clone https://github.com/tensorflow/tensorflow如果無法下載也可以在github上直接下載tensorflow的打包文件&#xff0c;這樣也能編譯&#xff0c;但是不能使用git命令可根據需要切換到不同的分支安裝bazel輸入以下命令echo "deb [archamd64] htt…

testflight進行用戶的beta測試

發發發轉載于:https://www.cnblogs.com/caimaomao/p/9681483.html