oracle物理DG管理-redo数据传输,应用与三种模式
環境http://blog.csdn.net/sunziyue/article/details/50799648基礎之上
1學習配置參數
下列參數為primary 角色相關
*.db_name='orcl'???? ???????//注意Guard Data中所有數據庫DB_NAME應該一致;
*.db_unique_name='orcldg'??//配置有效的db_unique_name列表,且負責主備驗證內容;
*.log_archive_config='dg_config=(orcl,orcldg)' //同一個Guard Data中所有數據庫的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' ???//遠程歸檔文件路徑,負責傳輸重做等;
| service:遠程備庫網絡服務名 lgwr或者arch: ?lgwr或者arch進程傳輸主庫的redo數據 sync或者async:?同步或者異步傳輸 affirm與noaffirm: affirm表示只有當日志寫入standby重做日志后才算日志傳輸成功,noaffirm則沒有這個要求; reopen:主數據庫重新連接備庫的時間 net_timeout:當采用sync傳輸模式時,超過多少秒則表示網路超時(默認為30s),建議設置改參數; valid_for:定義使用log_archive_dest_n參數歸檔,控制主備庫是否可以歸檔在線日志文件或者歸檔備用日志文件,有如下子參數: ? ? ? ? ? ? ? ? ?online_logfile:僅歸檔聯機日志文件 ? ? ? ? ? ? ? ? ?standby_logfile:歸檔備用日志文件 ? ? ? ? ? ? ? ? ?all_logfiles:歸檔所有日志文件 ? ? ? ? ? ? ? ? ?primary_role:在主角色起作用 ? ? ? ? ? ? ? ? ?standby_role:在備角色起作用 ? ? ? ? ? ? ? ? ?all_roles:在所有角色起作用 compression:傳送中進行壓縮, delay:在備庫延遲應用redo的時間(秒/單位) |
*.log_archive_dest_state_1=enable? //控制相關歸檔路徑是否生效;
*.log_archive_dest_state_2=enable? //控制相關歸檔路徑是否生效;
*.log_archive_max_processes=10?? //歸檔進程數量;
以下參數為主庫轉為standby 角色時相關的參數
*.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' ? ??//當備庫和主庫文件不同,彼此切換主備的時候使用該參數轉換;
*.fal_server=orcl???? //用于管理歸檔中斷,FAL(fetch archive log),響應傳輸歸檔的庫;
*.fal_client=orcldg??
*.standby_file_management=auto//如果主庫數據文件發生某些修改,是否自動同步到備庫;
2三種模式| 比較項 | 最大保護 | 最高可用 | 最大性能 |
| Redo寫或傳輸進程 | lgwr | lgwr | lgwr或者arch |
| 網絡傳輸模式 | sync | sync | sync或者async |
| 是否落盤確認 | affirm | affirm | affirm或者noaffirm |
| standby redologs | 需要 | 需要 | 可有可無 |
(1)設置參數位置
主庫log_archive_dest_n參數設置
示例:*.log_archive_dest_2='service=orcl ?lgwr sync affirm
valid_for=(online_logfiles,primary_role)? db_unique_name=orcl'
(2)重要參數分析
arch:只支持最大性能模式。歸檔日志通過primary上的arch進程傳送給standby的rfs進程,保存到指定路徑(如果有standby redo logfile,則保存到該位置,然后再歸檔),然后redo應用。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?( 圖片來自互聯網)
lgwr:primary使用LGWR即時將日志傳送到standby的rfs進程,并保存到standby redo logfile中,而不再需要等到歸檔操作時才傳送,保存到standbyredo logfile,然后再歸檔,然后redo應用。
| 用LGWR傳輸大致如下: 1)主庫:只要有新的重做日志產生,lgwr進程將觸發LNSn進程把新生成的日志傳輸給備庫rfs進程。 2)備庫:rfs進程接收到日志后,將其寫入standby重做日志,如果備庫開啟了實時應用,就立即做日志應用,如果沒有開啟,則等standby重做日志歸檔后再應用。 3)其中,async和sync的區別在于:sync是在redo還在內存時,LNSn進程就開始傳輸,而async是在redo寫到online redo log后,LNSn才開始傳輸。 同步的實時性來看,lgwr(sync) > lgwr(async)> arch |
sync模式下,主庫產生任何redo時,同時馬上觸發網絡傳輸給備庫RFS進程;?
async模式下,主庫產生redo時,先寫到本地online redo logfile文件中,LNSn進程從online redo logfile文件中取redo數據網絡傳輸給備庫RFS進程。
(3)模式切換
首次performance>>availability>>protection順序需要在主庫執行且主庫必須處于mount狀態;
如果已經由performance>> availability>>protection數據保護級別操作過1次,那么再次操作時可直接操作;
protection>>availability>>performance順序直接操作即可
| 主備庫操作:SQL>select database_role,protection_mode,protection_level from v$database; 主庫更改log_archive_dest_n參數配置,如: SQL>alter system set log_archive_dest_2='service=orcldg lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=orcldg'; 主庫操作:SQL> shutdown immediate; 備庫操作:alter database recover managed standby database cancel; 主庫操作:SQL>startup mount; 主庫操作:SQL>alter database set standby database to maximize availability; 主庫操作:SQL>alter database open 完成。 問題 當切換為alter database set standby database to maximize protection;之后alter database open報錯 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,我這里是備庫端監聽沒有啟動,啟動了問題就解決了。 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備庫怎樣應用redo數據
啟動實時應用://備庫MRP進程直接讀取standbyredo logfile應用
? ? ? ? ? ? ? ? ? ? ? ? ? ?alter database recover managed standby database using current logfile disconnect from session;
取消實時應用:alter database recover managed standby database cancel;
延遲應用數據:
? ? ? ? ? ? ? ? ?主庫*.log_archive_dest_2='service=orcl…'參數中指定delay屬性(如果備庫實時應用redo數據,delay則不起作用)
? ? ? ? ? ? ? ? ?備庫配置:alter database recover managed standby database delay 10 disconnect from session;//舉例
取消延時應用數據:alter database recover managed standby database nodelay;
| 備庫啟動遇到問題 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沒有傳輸到備庫,可能落后了很多歸檔文件 處理: 1)備庫查詢:SQL>select process,client_process,sequence#,status from v$managed_standby;//定位正在應用的日志文件 select max(sequence#) from v$archived_log; 2)主庫查詢:SQL> select process,client_process,sequence#,status from v$managed_standby;//查詢主庫當前寫到的日志文件 select max(sequence#) from v$archived_log; 3)對比備庫與主庫之間的待傳輸應用日志文件,從主庫拷貝到備庫歸檔路徑 4)備庫注冊 ALTER DATABASE REGISTER PHYSICAL LOGFILE '/u01/app/oracle/archivelog/xxx.dbf' ; 5)備庫應用redo alter database recover managed standby database disconnect from session; 即可。 |
?
總結
以上是生活随笔為你收集整理的oracle物理DG管理-redo数据传输,应用与三种模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ThinkPad紧凑型蓝牙键盘(0B47
- 下一篇: mongoDB add user in