在Oracle的DG中,RFS、LNSn、MRP、LSP進程的做用分別是什麼?數據庫
這幾個進程是DG結構中日誌傳輸、接受和應用的關鍵性進程,下面分別介紹這幾個進程。oracle
(一)RFS進程異步
RFS(Remote File Server)進程主要用來接受從主庫傳送過來的日誌信息。對於物理備庫而言,RFS進程能夠直接將日誌寫進Standby Redo logs,也能夠直接將日誌信息寫到歸檔日誌中。通常能夠在主備庫的告警日誌中看到以下的信息:ide
主庫:spa
1LNS1 started with pid=21, OS id=11222
備庫:日誌
1RFS[2]: Successfully opened standby log 5: '/opt/oracle/oradata/lhrdb/std_redo5a.log'
在數據庫中查詢:blog
1SQL> SELECT PROCESS,PID,STATUS FROM V$MANAGED_STANDBY; 2PROCESS PID STATUS 3--------- ---------- ------------ 4ARCH 18547 CLOSING 5ARCH 18549 CLOSING 6MRP0 23485 APPLYING_LOG 7RFS 1092 IDLE 8RFS 1090 IDLE 9[oracle@Oracle1 ~]$ ps -ef | grep '1092\|1090' 10oracle 1092 1 0 May05 ? 00:00:18 oraclelhrdb (LOCAL=NO) 11oracle 1090 1 0 May05 ? 00:00:00 oraclelhrdb (LOCAL=NO)
對於Oracle 11g而言,該進程通常會自動啓動,可是,對於Oracle 10g而言,因爲某些特殊緣由,該進程可能不會自動啓動,那麼能夠使用以下的步驟來手動啓動該進程:進程
1① 啓動實時應用 2 物理:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; 3 邏輯:ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE; 4② alter system set log_archive_dest_state_2='defer'; 5alter system switch logfile; 6alter system set log_archive_dest_state_2='enable'; 7alter system switch logfile; 8③ 重啓備庫
(二)LNSn(LGWR Network Server process)進程同步
DG能夠使用ARCn、LGWR來傳送日誌,但它們都是把日誌發送給本地的LNSn(若是有多個目標備庫,那麼會啓動相應數量的LNSn進程,同時發送數據)進程,而後備庫的RFS進程接收數據,接收到的數據能夠存儲在備庫的備用Redo日誌文件中或備庫的歸檔日誌中,而後再應用到備庫中。it
通常狀況下,主庫切換(ALTER SYSTEM SWITCH LOGFILE;)日誌能夠啓動LNSn進程,若不能正常啓動則能夠按照以下的步驟來處理:
1① ALTER SYSTEM SWITCH LOGFILE; 2② 備庫啓動實時應用後,主庫: 3ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='DEFER'; 4ALTER SYSTEM SWITCH LOGFILE; 5ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE'; 6ALTER SYSTEM SWITCH LOGFILE; 7③ 重啓備庫、主庫
進程查詢(ps -ef|grep -v grep|grep -E "ora_lns|ora_nsa|ora_nss"):
1[root@rhel6_lhr lhr]# ps -ef|grep -v grep|grep -E "ora_lns|ora_nsa|ora_nss" 2oracle 8090 1 0 03:57 ? 00:01:40 ora_lns1_oradg10g 3oracle 8092 1 0 03:57 ? 00:01:40 ora_nsa2_oradg11g 4oracle 8095 1 0 03:57 ? 00:01:40 ora_nss2_orawl11g
須要注意的是,若在Oracle 10g中採用LGWR傳輸日誌的時候,則進程表現爲LNSn,但在Oracle 11g中,若採用LGWR ASYNC(異步方式)來傳輸日誌的時候,則進程表現爲nsa,若採用LGWR SYNC(同步方式)來傳輸日誌的時候,則進程表現爲nss,且經過視圖GV$MANAGED_STANDBY查詢的結果不盡相同,具體參考【表 3-31 DG傳輸進程及其模式表】。
表 3-31 DG傳輸進程及其模式表
版本 |
10g |
11g |
||||
傳輸模式 |
LGWR ASYNC(異步) |
LGWR SYNC(同步) |
ARCH |
LGWR ASYNC |
LGWR SYNC |
ARCH |
後臺進程表現(ps -ef|grep -v grep|grep -E "ora_lns|ora_nsa|ora_nss") |
ora_lns1_mydg |
ora_lnsb_mydg |
ora_arc3_mydg |
ora_nsa2_mydg |
ora_nss2_mydg |
ora_arc3_mydg |
視圖GV$MANAGED_STANDBY |
LNS |
LGWR |
ARCH |
LNS |
LGWR |
ARCH |
切換日誌的時候告警日誌 |
出現過一次,LNS: Standby redo logfile selected for thread 1 sequence 13 for destination LOG_ARCHIVE_DEST_2,但再切換的時候就不出現了 |
無 |
無 |
LNS: Standby redo logfile selected for thread 1 sequence 98 for destination LOG_ARCHIVE_DEST_2 |
LNS: Standby redo logfile selected for thread 1 sequence 98 for destination LOG_ARCHIVE_DEST_2 |
ARC0: Standby redo logfile selected for thread 1 sequence 102 for destination LOG_ARCHIVE_DEST_2 |
是否默認 |
否 |
否 |
是,默認採用歸檔進程傳送 |
是,默認採用LGWR異步模式傳送 |
否 |
否 |
(三)MRP(Managed Recovery Process)進程
該進程只針對物理備庫,做用爲應用從主庫傳遞過來的Redo日誌到物理備庫,稱爲Redo Apply。若是使用SQL語句「ALTER DATABASE RECOVER MANAGED STANDBY DATABASE」啓用該進程,那麼前臺進程將會作恢復。若是加上DISCONNECT語句,那麼恢復過程將在後臺進程,發出該語句的進程能夠繼續作其它的事情,進程以下所示:
1[oracle@rhel6_lhr ~]$ ps -ef | grep ora_mrp 2oracle 4794 1 0 10:33 ? 00:00:00 ora_mrp0_orawldg
(四)LSP(logical standby process)進程
只有邏輯備庫纔會有該進程。LSP進程控應用Redo日誌到邏輯備庫。進程以下所示:
1[oracle@rhel6_lhr ~]$ ps -ef | grep ora_lsp 2oracle 4683 1 0 10:31 ? 00:00:01 ora_lsp0_oraljdg