您好,登錄后才能下訂單哦!
這篇文章主要講解了“分析Oracle中11g DataGuard”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“分析Oracle中11g DataGuard”吧!
1、什么是DataGuard
DataGuard是Oracle推出的一項專門針對oracle數據庫的高可用技術,在8i之前被稱之為Standby Dtabase,從9i開始正式更名為DataGuard。通常情況下至少會有兩個數據鏡像節點構成的主備關系。通過redo日志的同步技術來保證數據的實時同步,可以實現數據庫的主備快速切換實現數據的容災。
2、為什么要用DataGuard
DataGuard 中文名又叫數據衛士,顧名思義,是為了保證數據安全ORACLE推出的一項技術,主要用于對數據安全性重視程度比較高的一些場合,比如:銀行,電信等行業他們都在應用了非常多套的DataGuard數據衛士來保障數據的安全。
當然同時也用于數據庫日常維護而不中斷業務,比如例行停機,測試改變,升級維護等等。
3、DataGuard所帶來的價值
可以實現數據的零丟失,維護的零停機,保證業務的持續在線運行,通過讀寫分離有效的分擔數據庫壓力,降低由于各種原因宕機的風險。
4、DataGuard的體系架構
5、DataGuard 是否安全
DataGuard的同步是通過redo傳輸并且在standby端應用實現數據的同步,那么它的同步鏈路是建立在Oracle Net之上,通過Oracle Net來進修數據的傳輸,其之間走的是SSL協議,SSL使用RSA公鑰密碼和對稱密鑰加密,提供身份驗證、加密和數據完整性。SSL是自動用于重做運輸驗證在兩個Oracle數據庫。如果SSL身份驗證需求沒有得到滿足,每個數據庫必須使用遠程登錄密碼文件。在一個DataGuard配置,所有物理和快照備用數據庫必須使用密碼文件的一個副本從主數據庫,刷新副本須當SYSOPER或SYSDBA特權授予或撤銷后,任何用戶的密碼與這些特權是改變
當一個密碼文件是用于redo傳輸驗證,密碼文件中的的用戶帳戶用于redo傳輸各數據庫之間的比較啟動一個redo傳輸會話和目標數據庫。密碼必須是同樣在兩個數據庫中。默認情況下,系統用戶的密碼是用于驗證重做運輸會話密碼文件時使用。
6、DataGuard的三種保護模式
最大保護模式:
1)這種模式提供了最高級別的數據保護能力;
2)要求至少一個物理備庫收到重做日志后,主庫的事務才能夠提交;
3)主庫找不到合適的備庫寫入時,主庫會自動關閉,防止未受保護的數據出現;
4)優點:該模式可以保證備庫沒有數據丟失;
5)缺點:主庫的自動關閉會影響到主庫的可用性,同時需要備庫恢復后才能提交,對網絡等客觀條件要求非常的高,主庫的性能會因此受到非常大的沖擊。
最大可用性模式:
1)該模式提供了僅次于“最大保護模式”的數據保護能力;
2)要求至少一個物理備庫收到重做日志后,主庫的事務才能夠提交;
3)主庫找不到合適的備庫寫入時,主庫不會關閉,而是臨時降低到“最大性能模式”模式,直到問題得到處理;
4)優點:該模式可以在沒有問題出現的情況下,保證備庫沒有數據丟失,是一種折中的方法;
5)缺點:在正常運行的過程中缺點是主庫的性能受到諸多因素的影響。
最大性能模式:
1)該模式是默認模式,可以保證主數據庫的最高可用性;
2)保證主庫運行過程中不受備庫的影響,主庫事務正常提交,不因備庫的任何問題影響到主庫的運行;
4)優點:避免了備庫對主數據庫的性能和可用性影響;
5)缺點:如果與主庫提交的事務相關的恢復數據沒有發送到備庫,這些事務數據將被丟失,不能保證數據無損失;
簡單來看由三部分組成:主庫,備庫,中間層(各種服務+日志、歸檔文件),中間層我們放到后面說,先看一下主庫和備庫:
Primary Database
DG環境包含一個主庫。 主庫可以是單實例,也可以是RAC 集群。備庫至少有一個standby 數據庫組成。 主備庫之間通過oracle Net進行通信,主備庫不受地理位置的限制。
Standby Databases
Standby 數據庫與主庫一致保持事務一致。一個主庫可以對應多個備庫。備庫的種類在11g中有三種:
1.物理備庫
2.邏輯備庫
3.快照備庫
物理standby(Physical standby database)
物理standby是對主庫進行physically identical copy。 這是一種Media recovery,是基于block-for-block的恢復。在數據塊級別進行恢復,這種方式沒有數據類型的限制,可以保證兩個數據庫完全一致。
在Oracle 11g之前,standby 數據庫只能在Mount 狀態下進行恢復,也可以是打開,但只能已只讀方式打開,并且打開時不能執行恢復操作。到了11g,standby 可以啟動到read-only狀態并同步,這樣standby 數據庫就可以用來進行一些數據查詢操作,提高數據庫的利用率。
邏輯standby(Logical standby database)
邏輯standby 的同步使用的是SQL Apply。這種方式 像logminer挖掘日志,但是通過Logminer 技術,通過把日志內容還原成SQL 語句,然后SQL引擎執行這些語句,Logminer Standby不支持所有數據類型,可以在視圖 DBA_LOGSTDBY_UNSUPPORTED 中查看不支持的數據類型,如果使用了這種數據類型,則不能保證數據庫完全一致。
快照 standby(Snapshot Standby Database)
Snapshot standby 是Oracle 11g中的新特性,也是對standby database的一次升級。Snapshot standby 和 物理standby,邏輯standby 一樣,也會從主庫接收歸檔文件,但是不同的是,snapshot standby 不會應用這些接收的歸檔。
Snapshot Standby Database和邏輯備庫都建立在物理standby基礎上,如果我們想在standby 庫上做一些測試,因為主庫我們不能動,我們可以在備庫測。 那么我們就可以把這個standby 切換成snapshot standby。
切換語句如下:
SQL> alter database convert to snapshot standby;
把snapshot standby 數據庫打開,進行我們的測試。
SQL> alter database open;
測試完畢后,我們把數據庫重啟到mount 狀態。 執行命令將數據庫從snapshot狀態切換到之前的狀態,如物理standby或者邏輯standby。
SQL> alter database convert to physical standby;
從snapshot standby的功能看來oracle是逐漸弱化邏輯備庫的,在11g中使用物理備庫和快照備庫將是主流
一、為何要設置數據庫強制歸檔?
alter database force logging;
Oracle日志記錄的三種模式:logging,force logging,nologging
logging:在創建數據庫對象時(視圖,索引,序列等)將日志信息寫入聯機重做日志文件,logging相當于
對象的一個屬性,用來標記創建對象時是否記錄了REDO日志,包括在DML時是否記錄了REDO日志。
force logging:強制記錄日志,對數據所有的操作都產生日志信息,并將信息寫入聯機重做日志文件。
nologging:相反,較少的記錄日志。
在做DATA GUARD時要保證數據的一致性,所以打開數據庫強制歸檔模式。
二、為什么要在mount狀態下開啟數據庫歸檔?
Oracle數據庫啟動的三個階段,nomount,mount,open,分別加載的文件為參數文件,控制文件,數據文件,
將數據庫啟動到mount階段時,數據庫根據參數文件中指定的控制文件路徑打開控制文件,
獲取數據文件和日志文件的信息,此時可對數據庫進行維護,開啟歸檔模式,Oracle規定要在mount實例下開啟歸檔。
三、為什么要配置靜態監聽參數?
在DATA GUARD架構中,在數據庫mount狀態下,動態監聽無法將服務注冊到數據庫,靜態監聽則可以完成這個任務。
典型監聽文件listen.ora分為兩個部分,LISTENER注冊的是服務,SID_LIST_LISTENER注冊的是實例。
四、參數文件中各項參數的意義是什么?
1、*.db_name='orcl'
數據庫名,需要保持同一個DATA GUARD中所有的數據庫db_name一致
2、*.db_unique_name='orcl_p'
每一個數據庫都要有唯一的名稱
3、*.log_archive_config='dg_config=(orcl_p,orcl_s)'
該參數用于控制發送歸檔日志到遠程位置,以及接收遠程歸檔日志,并指定DATA GUARD配置的唯一數據庫名,
默認值為SEND,RECEIVE,NODG_CONFIG, 當該
參數為SEND時,會激活發送歸檔日志到遠程位置,
參數為NOSEND時,會禁止發送歸檔日志到遠程位置;
參數為RESEIVE時,會激活接收遠程歸檔日志;
參數為NORECEIVE時會禁止接收遠程歸檔日志;
參數為DG_CONFIG時,可以指定最多9個惟一數據庫名;
參數為NODG_CONFIG時,會禁止指定惟一數據庫名,
該參數是動態參數,可以使用alter system set log_archive_config='SEND';來修改。
4、*.log_archive_dest_1='location=/u01/arch valid_for=(all_logfiles,all_roles) db_unique_name=orcl_p'
log_archive_dest_1是DG重做日志傳輸的主要參數,一般在主庫中起作用,在處理級聯備庫的時候會在備庫發揮作用,
該參數也可指定在線重做日志(ORL)和備庫重做日志(SRL)產生歸檔日志的傳輸目的地。
(1)service:指定備庫的網絡連接名
(2)sync:指定使用同步的方法傳送重做數據,即客戶端事務的提交會發生在LGWR進程收到備庫LNS發來的
信息確認之后,對于最大可用及最大保護模式,需要至少一個備庫net_timeout指定LGWR進程
等待LNS進程響應時間,如果期間沒有收到響應,則認為備庫發生故障(failed),默認為30s,
等待期間需要做以下事情:
a:停止舊的LNS進程
b:啟動新的LNS進程
c:與備庫建立連接
d:檢測并停止舊的RFS進程
e:啟動新的RFS進程
f:選擇并打開新的SRL
g:初始化SR頭,即備庫的重做日志數據庫
h:響應LNS進程告知已經完成準備工作
完成上面的操作后,LNS進程會通知LGWR備庫連接成功,如果該過程超過了30s,則會繼續放棄備庫。
(3)reopen:屬性控制主庫嘗試重新連接已經發生故障的備庫的等待時間,默認為30s
(4)db_unique_name屬性要在log_archive_dest_n中使用的話同時要在log_archive_config中設置,否則DATA GUARD會拒絕連接這個目標庫,必須在主備庫中將db_unique_name添加到log_archive_config參數中,當主庫發起連接時,它將會發送自己的db_unique_name到備庫,同時要求備庫返回惟一的db_unique_name。在備庫中將會檢查log_archive_config參數,以確保主庫的db_unique_name存在,如果不存在,那么連接請求就會被拒絕,如果存在,備庫會把自己db_unique_name返回主庫的LNS進程,如果返回值與主庫該值不匹配,連接就會被終止。
(5)valid_for:屬性定義了何時使用目標參數log_archive_dest_n以及作用于何種類型的日志文件
日志文件的合法值有以下三種:
online_logfile僅在歸檔ORL中有效
standby_logfile僅在歸檔SRL中有效
all_logfiles無論哪種重做日志文件類型都有效
角色的合法值有以下三種:
primary_role僅在主庫中有效
standby_role僅在備庫中有效
all_roles主備庫都有效
(6)affirm:屬性是使用sync方式目標的默認值
5、*.log_archive_dest_state_1=enable
用來指定歸檔目錄是否可用。
6、*.standby_file_management='auto'
在主庫創建數據文件時備庫會自動創建數據文件
7、*.log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcl'
*.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcl'
log_file_name_convert與db_file_name_convert來保證主備庫數據文件路徑一致
8、*.fal_server='orcl_s'
FAL指獲取歸檔日志(fetch archive log),因為網絡中斷或者資源緊張等問題導致主備日志不同步,
MRP(Managed recovery process)/LSP(Logical Standby Process)不能直接與主庫連接來獲取丟失的歸檔日志,因此需要用到FAL來解決,fal_server后對應備庫的db_unique_name
五、Oracle DATA GUARD進程結構是怎樣的?
1、存在于主庫的進程:
(1)LGWR:收集事務日志,更新聯機日志,在同步模式下,LGWR將redo信息直接傳送到備庫的RFS進程,主庫在繼續處理前等待備庫的確認。在非同步的情況下,也是直接將日志信息傳到備庫的RFS進程,但是不等待備庫的確認信息。
(2)ARCH:在歸檔的同時,傳遞日志到備庫RFS進程,可以用于解決GAP日志不連續問題。
(3)LNSn:Primary Database 產生的Redo日志要同時寫到日志文件和網絡。也就是說LGWR進程把日志寫到本地日志文件的同時還要發送給本地的LNSn進程(Network Server Process),再由LNSn(LGWR Network Server process)進程把日志通過網絡發送給遠程的目的地,每個遠程目的地對應一個LNS進程,多個LNS進程能夠并行工作。
2、存在于備庫的進程:
(1)FAL:只有物理備庫才有的進程,FAL指獲取歸檔日志(Fetch Archive Log),因為網絡中斷或者資源緊張等問題導致主備日志不同步,MRP(Managed recovery process)/LSP(Logical Standby Process)不能直接與主庫連 接來獲取丟失的歸檔日志,因此需要用到FAL來解決。
(2)RFS(Remote File Server):主要用于接收從主庫傳過來的日志信息。arch進程歸檔重做日志,由MPR應用到備庫。
(3)MRP(Managed Recovery Process):只針對于物理備庫,應用歸檔日志到備庫
(4)LSP(Logic Standby Process):只有邏輯備庫擁有,控制歸檔日志應用到邏輯備庫。
3、Oracle DG通過同步日志文件來保證主庫與備庫的一致性
如果一個數據庫與單個或者多個備庫之間連接出現問題,那么主庫產生的日志文件便無法傳輸到備庫上去,使用歸檔日志進程(FAL)提供一個客戶服務機制,用于在主庫與備庫中斷連接后將歸檔日志發送到備庫上,以實現自動填充間隔和重新同步。在備庫上,Oracle DATA GUARD使用遠程文件服務器(RFS)進程從主數據庫接收重做記錄,使用管理恢復進程(MRP)將重做信息應用到物理備庫中,使用邏輯備用進程(LSP)將經過SQL轉換的重做信息應用到邏輯備庫中。
4、Oracle DATA GUARD三種保護模式
保護模式
出現災難時數據丟失風險
重做傳輸機制
最大保護
零數據丟失;雙重故障保護
LGWR SYNC
最高可用性
零數據丟失;單故障保護
LGWR SYNC
最高性能
最小數據丟失
LGWR SYNC 或ARCH
默認保護模式為最高性能模式,可以使用alter database set standby database to maximize (protection|availability|performance}; 來切換保護模式
最大保護模式保證在事務提交時同時寫到主庫與備庫的日志文件中來保證一致性,優點是安全,缺點是在備庫出現故障時,主庫也無法正常使用。
最高可用性相同與最大保護模式基本一樣,不同點在于當備庫出現故障時主庫會立即切換為最高性能模式。
最高性能只需要確保提交的事務寫到主庫的日志文件中即可。
感謝各位的閱讀,以上就是“分析Oracle中11g DataGuard”的內容了,經過本文的學習后,相信大家對分析Oracle中11g DataGuard這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。