oracle DG 日誌傳輸小結
有兩種日誌傳輸方式(ARC和LGWR),第一種是採用ARC程式傳輸日誌,其示意圖如下:
注:上圖來自《大話Oracle RAC》
其大致過程如下:
1)主庫:日誌先寫入線上重做日誌,當線上重做日誌滿後(或人為切換), ARC0程式歸檔該日誌至主庫本地歸檔目錄,歸檔完成後,ARC1馬上將該歸檔日誌傳輸到備庫;
2)備庫:RFS程式接收日誌,如果備庫有Standby重做日誌,則把日誌複製到Standby重做日誌,接著把Standby重做日誌歸檔至備庫本地歸檔目錄,最後應用歸檔日誌;如果沒有配置Standby重做日誌,RFS程式接收日誌後,直接把它放到備庫的歸檔目錄下,再應用該日誌。
另外一種是使用LGWR程式傳輸日誌,它又分為兩種方式,分別是ASYNC和SYNC,下面是ASYNC的示意圖:
下面是SYNC的示意圖如下:
注:上圖來自《大話Oracle RAC》
用LGWR傳輸大致如下:
1)主庫:只要有新的重做日誌產生,LGWR程式將觸發LNSn程式把新生成的日誌傳輸到備庫(注意:這裡不能由LGWR直接傳輸,因為整個資料庫例項只有一個LGWR,為了保證它的主要業務效能不受影響,不能由它直接傳輸);
2)備庫:RFS程式接收到日誌後,將其寫入Standby重做日誌,如果備庫開啟了實時應用,就立即做日誌應用,如果沒有開啟,則等Standby重做日誌歸檔後再應用。
3)其中,ASYNC和SYNC的區別在於:SYNC是在redo還在記憶體時,LNSn程式就開始傳輸,而ASYNC是在redo緩衝到online redo log後,LNSn才開始傳輸。
從上面可以得出,從同步的實時性來看,LGWR(SYNC) > LGWR(ASYNC)> ARCH
SERVICE(必須):指定備庫的網路連線名;
SYNC/ASYNC(預設為ASYNC):指定日誌的傳輸模式(同步/非同步);
NET_TIMEOUT:指定當採用SYNC傳輸模式時,超過多少秒則表示網路超時(預設為30s),在使用SNYC模式時,強烈建議設定改引數;
AFFIRM/NOAFFIRM:AFFIRM表示只有當日志寫入Standby重做日誌後才算日誌傳輸成功,NOAFFIRM則沒有這個要求;
DB_UNIQUE_NAME:指定備庫的DB_UNIQUE_NAME;
VALID_FOR:格式為(redo_log_type,database_role),只有這兩個條件全部符合,才會傳送日誌;
其中redo_log_type有如下取值:ONLINE_LOGFILE, STANDBY_LOGFILE, ALL_LOGFILES
database_role有如下取值:PRIMARY_ROLE, STANDBY_ROLE, ALL_ROLES
REOPEN:指定當連線錯誤發生時,多少秒之後重試;
COMPRESSION:指定是否對日誌進行壓縮,已提高網路傳輸效能。
下面是log_archive_dest_n的一個例子:
SQL> ALTER DATABASE ADD STANDBY LOGFILE (\'/oracle/dbs/slog2.rdo\') SIZE 500M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE (\'/oracle/dbs/slog3.rdo\') SIZE 500M;
上面提到過,備庫的Standby日誌也會被歸檔,它的歸檔路徑由備庫的log_archive_dest_n引數的location屬性設定,如下所示:
第一步:在主庫執行如下語句獲得最新歸檔序列號:
第二步:在主庫執行如下語句確認最新歸檔的日誌是否已經傳輸至備庫:
DESTINATION STATUS ARCHIVED_THREAD# ARCHIVED_SEQ#
------------------ ------ ---------------- -------------
/private1/prmy/lad VALID 1 947standby ## 947如果狀態不是VALID,則說明日誌傳輸失敗。
Oracle DG會自動檢測日誌傳輸GAP並自動解決,但有時候GAP無法自動解決,必須DBA人工干預,下面我們講講手動解決的步驟:
首先,在備庫執行下列語句查詢是否有GAP:
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
----------- ------------- --------------
1 7 10 ##HIGH_SEQUENCE#減去LOW_SEQUENCE#就是當前的GAP數,上例顯示備庫缺少從7到10(不包含10)的歸檔日誌。
接著,在主庫查詢這些歸檔日誌的目錄位置:
NAME
--------------------------------------------------------------------------------
/primary/thread1_dest/arcr_1_7.arc /primary/thread1_dest/arcr_1_8.arc /primary/thread1_dest/arcr_1_9.arc
把這些歸檔日誌從主庫複製至備庫,並在備庫上註冊:
SQL> ALTER DATABASE REGISTER LOGFILE \'/physical_standby1/thread1_dest/arcr_1_8.arc\';
SQL> ALTER DATABASE REGISTER LOGFILE \'/physical_standby1/thread1_dest/arcr_1_9.arc\';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31520497/viewspace-2156783/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DG 日誌傳輸監控
- DataGuard日誌傳輸模式模式
- oracle10g DataGuard的日誌傳輸方式Oracle
- 【DataGuard】Oracle DataGuard 日誌傳輸狀態監控Oracle
- 從alert日誌看Oracle 11g Datagurad日誌傳輸(上)Oracle
- 從alert日誌看Oracle 11g Datagurad日誌傳輸(下)Oracle
- [20170228]dg的日誌傳輸與應用問題.txt
- oracle可傳輸表空間TTS小結OracleTTS
- SQL Server 事務日誌傳輸SQLServer
- sqlserver關於日誌傳輸log shipping的總結SQLServer
- oracle dg 歸檔日誌恢復情況Oracle
- linux-oracle11g-dg搭建日誌LinuxOracle
- Oracle歸檔日誌比聯機重做日誌小很多的情況總結Oracle
- 【DG】三張經典圖片展示Data Guard主備之間日誌傳輸及恢復
- Oracle 11g Dataguard 暫停物理備庫的日誌傳輸Oracle
- 7 Redo Transport Services 日誌傳輸服務
- MySQL如何傳輸二進位制日誌MySql
- DG沒有應用日誌應用日誌
- Oracle11g Data Guard 暫停物理備庫的日誌傳輸Oracle
- 日誌檔案使用小結(轉)
- downstream環境下archive程式停止傳輸日誌Hive
- ORACLE RAC 日誌結構解析Oracle
- DG歸檔日誌缺失恢復
- 減少日誌產生量小結
- 日誌檔案的修復小結
- 關於11G DataGuard 日誌傳輸的案例
- 【DataGuard】10GR 日誌傳輸服務引數
- 容災端檢查日誌應用情況 Oracle11g DGOracle
- oracle物理DG管理-redo資料傳輸,應用與三種模式Oracle模式
- linux下如何增量增量傳輸mysql binlog日誌LinuxMySql
- 由於域名解析引起的dataguard傳輸日誌故障
- oracle 歸檔日誌的小知識點Oracle
- Oracle日誌Oracle
- dg歸檔沒有傳輸到備庫
- 【Oracle日誌】- 日誌檔案重建Oracle
- 用zabbix監控oracle dg從庫是否應用日誌的指令碼Oracle應用日誌指令碼
- reportbuilder 日誌輸出UI
- Python輸出日誌Python