【DB筆試面試755】在Oracle的DG中,RFS、LNSn、MRP、LSP進程的做用分別是什麼?

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

♣          題目         部分

在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
     
相關文章
相關標籤/搜索