oracle物理DG管理-redo数据传输,应用与三种模式
環(huán)境http://blog.csdn.net/sunziyue/article/details/50799648基礎(chǔ)之上
1學(xué)習(xí)配置參數(shù)
下列參數(shù)為primary 角色相關(guān)
*.db_name='orcl'???? ???????//注意Guard Data中所有數(shù)據(jù)庫(kù)DB_NAME應(yīng)該一致;
*.db_unique_name='orcldg'??//配置有效的db_unique_name列表,且負(fù)責(zé)主備驗(yàn)證內(nèi)容;
*.log_archive_config='dg_config=(orcl,orcldg)' //同一個(gè)Guard Data中所有數(shù)據(jù)庫(kù)的db_unique_name;
*.log_archive_dest_1='location=/u01/app/oracle/archivelogvalid_for=(all_logfiles,all_roles) ?db_unique_name=orcldg'? ??//本地歸檔文件路徑;
*.log_archive_dest_2='service=orcl?lgwr sync affirm ?valid_for=(online_logfiles,primary_role)? db_unique_name=orcl' ???//遠(yuǎn)程歸檔文件路徑,負(fù)責(zé)傳輸重做等;
| service:遠(yuǎn)程備庫(kù)網(wǎng)絡(luò)服務(wù)名 lgwr或者arch: ?lgwr或者arch進(jìn)程傳輸主庫(kù)的redo數(shù)據(jù) sync或者async:?同步或者異步傳輸 affirm與noaffirm: affirm表示只有當(dāng)日志寫(xiě)入standby重做日志后才算日志傳輸成功,noaffirm則沒(méi)有這個(gè)要求; reopen:主數(shù)據(jù)庫(kù)重新連接備庫(kù)的時(shí)間 net_timeout:當(dāng)采用sync傳輸模式時(shí),超過(guò)多少秒則表示網(wǎng)路超時(shí)(默認(rèn)為30s),建議設(shè)置改參數(shù); valid_for:定義使用log_archive_dest_n參數(shù)歸檔,控制主備庫(kù)是否可以歸檔在線(xiàn)日志文件或者歸檔備用日志文件,有如下子參數(shù): ? ? ? ? ? ? ? ? ?online_logfile:僅歸檔聯(lián)機(jī)日志文件 ? ? ? ? ? ? ? ? ?standby_logfile:歸檔備用日志文件 ? ? ? ? ? ? ? ? ?all_logfiles:歸檔所有日志文件 ? ? ? ? ? ? ? ? ?primary_role:在主角色起作用 ? ? ? ? ? ? ? ? ?standby_role:在備角色起作用 ? ? ? ? ? ? ? ? ?all_roles:在所有角色起作用 compression:傳送中進(jìn)行壓縮, delay:在備庫(kù)延遲應(yīng)用redo的時(shí)間(秒/單位) |
*.log_archive_dest_state_1=enable? //控制相關(guān)歸檔路徑是否生效;
*.log_archive_dest_state_2=enable? //控制相關(guān)歸檔路徑是否生效;
*.log_archive_max_processes=10?? //歸檔進(jìn)程數(shù)量;
以下參數(shù)為主庫(kù)轉(zhuǎn)為standby 角色時(shí)相關(guān)的參數(shù)
*.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcldg'
*.log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcldg' ? ??//當(dāng)備庫(kù)和主庫(kù)文件不同,彼此切換主備的時(shí)候使用該參數(shù)轉(zhuǎn)換;
*.fal_server=orcl???? //用于管理歸檔中斷,FAL(fetch archive log),響應(yīng)傳輸歸檔的庫(kù);
*.fal_client=orcldg??
*.standby_file_management=auto//如果主庫(kù)數(shù)據(jù)文件發(fā)生某些修改,是否自動(dòng)同步到備庫(kù);
2三種模式| 比較項(xiàng) | 最大保護(hù) | 最高可用 | 最大性能 |
| Redo寫(xiě)或傳輸進(jìn)程 | lgwr | lgwr | lgwr或者arch |
| 網(wǎng)絡(luò)傳輸模式 | sync | sync | sync或者async |
| 是否落盤(pán)確認(rèn) | affirm | affirm | affirm或者noaffirm |
| standby redologs | 需要 | 需要 | 可有可無(wú) |
(1)設(shè)置參數(shù)位置
主庫(kù)log_archive_dest_n參數(shù)設(shè)置
示例:*.log_archive_dest_2='service=orcl ?lgwr sync affirm
valid_for=(online_logfiles,primary_role)? db_unique_name=orcl'
(2)重要參數(shù)分析
arch:只支持最大性能模式。歸檔日志通過(guò)primary上的arch進(jìn)程傳送給standby的rfs進(jìn)程,保存到指定路徑(如果有standby redo logfile,則保存到該位置,然后再歸檔),然后redo應(yīng)用。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?( 圖片來(lái)自互聯(lián)網(wǎng))
lgwr:primary使用LGWR即時(shí)將日志傳送到standby的rfs進(jìn)程,并保存到standby redo logfile中,而不再需要等到歸檔操作時(shí)才傳送,保存到standbyredo logfile,然后再歸檔,然后redo應(yīng)用。
| 用LGWR傳輸大致如下: 1)主庫(kù):只要有新的重做日志產(chǎn)生,lgwr進(jìn)程將觸發(fā)LNSn進(jìn)程把新生成的日志傳輸給備庫(kù)rfs進(jìn)程。 2)備庫(kù):rfs進(jìn)程接收到日志后,將其寫(xiě)入standby重做日志,如果備庫(kù)開(kāi)啟了實(shí)時(shí)應(yīng)用,就立即做日志應(yīng)用,如果沒(méi)有開(kāi)啟,則等standby重做日志歸檔后再應(yīng)用。 3)其中,async和sync的區(qū)別在于:sync是在redo還在內(nèi)存時(shí),LNSn進(jìn)程就開(kāi)始傳輸,而async是在redo寫(xiě)到online redo log后,LNSn才開(kāi)始傳輸。 同步的實(shí)時(shí)性來(lái)看,lgwr(sync) > lgwr(async)> arch |
sync模式下,主庫(kù)產(chǎn)生任何redo時(shí),同時(shí)馬上觸發(fā)網(wǎng)絡(luò)傳輸給備庫(kù)RFS進(jìn)程;?
async模式下,主庫(kù)產(chǎn)生redo時(shí),先寫(xiě)到本地online redo logfile文件中,LNSn進(jìn)程從online redo logfile文件中取redo數(shù)據(jù)網(wǎng)絡(luò)傳輸給備庫(kù)RFS進(jìn)程。
(3)模式切換
首次performance>>availability>>protection順序需要在主庫(kù)執(zhí)行且主庫(kù)必須處于mount狀態(tài);
如果已經(jīng)由performance>> availability>>protection數(shù)據(jù)保護(hù)級(jí)別操作過(guò)1次,那么再次操作時(shí)可直接操作;
protection>>availability>>performance順序直接操作即可
| 主備庫(kù)操作:SQL>select database_role,protection_mode,protection_level from v$database; 主庫(kù)更改log_archive_dest_n參數(shù)配置,如: SQL>alter system set log_archive_dest_2='service=orcldg lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=orcldg'; 主庫(kù)操作:SQL> shutdown immediate; 備庫(kù)操作:alter database recover managed standby database cancel; 主庫(kù)操作:SQL>startup mount; 主庫(kù)操作:SQL>alter database set standby database to maximize availability; 主庫(kù)操作:SQL>alter database open 完成。 問(wèn)題 當(dāng)切換為alter database set standby database to maximize protection;之后alter database open報(bào)錯(cuò) alter database open * ERROR at line 1: ORA-03113: end-of-file on communication channel Process ID: 10711 Session ID: 1 Serial number: 5 解決:讀alert_orcl.log,我這里是備庫(kù)端監(jiān)聽(tīng)沒(méi)有啟動(dòng),啟動(dòng)了問(wèn)題就解決了。 Fatal NI connect error 12541, connecting to: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=orcldg)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcldg)(CID=(PROGRAM=oracle)(HOST=orcldg)(USER=oracle)))) ? VERSION INFORMATION: ????? TNS for Linux: Version 11.2.0.4.0 - Production ????? TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production ? Time: 08-MAR-2016 21:14:11 ? Tracing not turned on. ? Tns error struct: ??? ns main err code: 12541 TNS-12541: TNS:no listener ??? ns secondary err code: 12560 ??? nt main err code: 511 TNS-00511: No listener ??? nt secondary err code: 111 ??? nt OS err code: 0 *********************************************************************** |
3備庫(kù)怎樣應(yīng)用redo數(shù)據(jù)
啟動(dòng)實(shí)時(shí)應(yīng)用://備庫(kù)MRP進(jìn)程直接讀取standbyredo logfile應(yīng)用
? ? ? ? ? ? ? ? ? ? ? ? ? ?alter database recover managed standby database using current logfile disconnect from session;
取消實(shí)時(shí)應(yīng)用:alter database recover managed standby database cancel;
延遲應(yīng)用數(shù)據(jù):
? ? ? ? ? ? ? ? ?主庫(kù)*.log_archive_dest_2='service=orcl…'參數(shù)中指定delay屬性(如果備庫(kù)實(shí)時(shí)應(yīng)用redo數(shù)據(jù),delay則不起作用)
? ? ? ? ? ? ? ? ?備庫(kù)配置:alter database recover managed standby database delay 10 disconnect from session;//舉例
取消延時(shí)應(yīng)用數(shù)據(jù):alter database recover managed standby database nodelay;
| 備庫(kù)啟動(dòng)遇到問(wèn)題 SQL> startup ORA-10458: standby database requires recovery ORA-01196: file 1 is inconsistent due to a failed media recovery session ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf' 原因是由于某些redo沒(méi)有傳輸?shù)絺鋷?kù),可能落后了很多歸檔文件 處理: 1)備庫(kù)查詢(xún):SQL>select process,client_process,sequence#,status from v$managed_standby;//定位正在應(yīng)用的日志文件 select max(sequence#) from v$archived_log; 2)主庫(kù)查詢(xún):SQL> select process,client_process,sequence#,status from v$managed_standby;//查詢(xún)主庫(kù)當(dāng)前寫(xiě)到的日志文件 select max(sequence#) from v$archived_log; 3)對(duì)比備庫(kù)與主庫(kù)之間的待傳輸應(yīng)用日志文件,從主庫(kù)拷貝到備庫(kù)歸檔路徑 4)備庫(kù)注冊(cè) ALTER DATABASE REGISTER PHYSICAL LOGFILE '/u01/app/oracle/archivelog/xxx.dbf' ; 5)備庫(kù)應(yīng)用redo alter database recover managed standby database disconnect from session; 即可。 |
?
總結(jié)
以上是生活随笔為你收集整理的oracle物理DG管理-redo数据传输,应用与三种模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ThinkPad紧凑型蓝牙键盘(0B47
- 下一篇: 解决远程登陆Linux误按ctrl+s锁