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