[zt] Oracle RAC 後臺程式

tolywang發表於2009-12-09


作者: ysping(http://ysping.itpub.net)

rac後臺程式說明及一些概念

1.GSD global services daemon

GSD與rac的管理工具dbca srvctl oem進行互動,用來完成例項的啟動關閉等管理任務。為了保證這些管理工具執行正常必須在所有的節點上先start gsd,並且一個GSD程式支援在

一個節點的多個rac.gsd程式位於$ORACLE_HOME/bin目錄下,其log檔案為$oracle_home/srvm/log/gsdaemon.log

例如:

假設使用oem工具來啟動一個例項,oem把該任務傳遞給相應的智慧引擎,該智慧引擎生成一個包含SRVCTL命令的指令碼檔案,GSD程式讀取該指令碼檔案並且執行該指令碼,最後GSD把

執行結果返回給智慧引擎,近而智慧引擎返回給OEM.又例如假設使用srvctl工具關閉所有的例項,GSD程式接受來自SRVCTL工具發出的請求,並在本地節點上執行該請求,然後把執行結果返回給SRVCTL會話。

2.LMON:GLOBAL ENQUEUE SERVICE MONITOR

LMON主要監測群集內的全域性佇列和全域性資源,管理例項和處理異常並相應的群集佇列進行恢復操作。監控全域性鎖定(global enqueues)及其資源,並提供global enqueues資源的恢復操作。enqueues是用來進行序列化行更新的共享的記憶體結構。

 

3.LMD:GLOBAL ENQUEUE SERVICE DAEMON

LMD程式主要管理對全域性佇列和資源的訪問,並更新相應佇列的狀態,處理來自於其他例項的資源請求。每一個全域性佇列的當前狀態儲存在相應的例項共享記憶體中,該狀態表明該例項具有相應的權利使用該資源。一個例項(master)的共享記憶體中存在一個特殊的佇列,該佇列紀錄來自其他遠端例項的資源請求,當遠端例項的LMD程式發出一個資源請求時,該請求指向master例項的LMD,當master例項的LMD程式受到該請求後,在共享記憶體中的特殊佇列中監測該資源是否無效,如果有效則LMD程式更新該資源對列的狀態,並通知請求資源的LMD程式該資源佇列可以使用了,如果資源佇列正在被其他例項使用或者當前無效,則LMD程式通知正在使用中的例項的LMD程式應該釋放該資源,等資源釋放變得有效時,MASTER例項的LMD程式更新該資源佇列的狀態並通知請求資源例項的LMD程式該資源佇列可以使用了。另外LMD程式也負責佇列的死鎖問題。。。

4.LMSn:GLOBAL CACHE SERVICE PROCESS(n 0~9)

LMS程式主要用來管理叢集內資料塊的訪問,並在不同例項的BUFFER CACHE中傳輸塊映象。LMS程式跨叢集管理資料庫的請求,並保證在所有例項的BUFFER CACHE中一個資料塊的映象只能出現一次。LMS程式靠著在例項中傳遞訊息來協調資料塊的訪問,當一個例項請求資料塊時,該例項的LMD程式發出一個資料塊資源的請求,該請求只向MASTER資料塊的例項的LMD程式,MASTER例項的LMD程式同時正在使用的例項的LMD程式釋放該資源,這時擁有該資源的例項的LMS程式會建立一個資料塊映象的一致性讀,然後把該資料塊傳遞到請求該資源的例項的BUFFER CACHE中。LMS程式保證了在每一時刻只能允許一個例項去更新資料塊,並負責保持該資料塊的映象紀錄(包含更新資料塊的狀態FLAG),RAC提供了10個LMS程式,該程式數量隨著節點間的訊息傳遞的資料的增加而增加。

5.lock process(LCK)

LCK程式主要用來管理例項間資源請求和跨例項呼叫操作,呼叫操作包括資料字典等物件的訪問;並處理非CACEH FUSION的CHACE資源請求(例如:DICTIONARY CACHE或row cache的請求)

6.DIAG:DIAGNOSABILITY DAEMON

DIAG程式主要用來捕獲例項中失敗程式的診斷資訊,並生成相應的TRACE檔案(該trace檔案儲存在backupground_dump_dest/cdmp_timestamp目錄下),該程式不需要進行配置更不應該被停止。該程式自動啟動不需要進行調整,如果該程式失效則自動重新啟動。

7、Operating System-Dependent(OSD):


是指依賴作業系統的一些引數、軟體等。RAC透過作業系統相關的軟體來訪問作業系統和一些於CLUSTER相關的服務程式。OSD軟體可能由Oracle提供(windows平臺)或由硬體廠商提供(unix平臺)。

OSD包括三個自部分:

The Cluster Manager(CM):叢集監視器監視節點間通訊,並透過interconnect來協調節點操作。同時還提供CLUSTER中所有節點和例項的統一檢視。CM還控制CLUSTER的成員資格。

The Node Monitor(節點監視器):節點監視器提供節點內各種資源的狀態,包括節點、interconnect硬體和軟體和共享磁碟等。

The Interconnect。


8、Real Application Cluster Shared Disk Component:


RAC中這部分元件和單例項Oracle資料庫中的沒有什麼區別。包括一個或多個控制檔案、一系列聯機重做日誌檔案、可選的歸檔日誌檔案、資料檔案等。

在RAC中使用伺服器引數檔案會簡化引數檔案的管理,可以將全域性引數和例項特定的引數儲存在同一個檔案中。


9、Real Application Cluster-Specific Daemon and Instance Processes:


包含兩部分:

The Global Service Daemon(GSD):在每個節點上都執行一個全域性服務後臺程式,用於接收客戶端如DBCA、EM等發出的管理訊息,並完成相應的管理任務,比如例項的啟動和關閉。

RAC中特別的例項程式:

Global Cache Service Processes(LMSn):控制到遠端例項的訊息的流量,管理全域性資料塊的訪問。還用於在不同例項的緩衝區之間傳遞BLOCK的對映。

Global Enqueue Service Monitor(LMON):監視全域性佇列和叢集間的資源互動,執行全域性佇列的恢復操作。

Global Enqueue Service Daemon(LMD):管理全域性佇列和全域性資源訪問。對於每個例項,LMD管理來自遠端的資源請求。

Lock Processes(LCK):管理除Cache Fusion以外的資源請求,比如library和row cache的請求。

Diagnosability Daemon(DIAG):在例項中捕獲程式失敗的診斷資料。


10、The Global Cache and Global Enqueue Service:


全域性快取服務(GCS)和全域性佇列服務(GES)是RAC的整合元件,用於協調對共享資料庫和資料庫內的共享資源的同時訪問。GCS和GES(它們都是基本的RAC程式)發揮了關鍵作用。GCS確保資料的單個系統影像,即使資料被多個例項訪問。GCS和GES是實時應用叢集的整合元件,它們協調對共享資料庫的同時訪問,還協調對資料庫和資料庫快取內共享資源的同時訪問。GES和GCS共同維護全域性資源目錄(Global Resource Directory,GRD)來記錄有關資源和佇列的資訊。GRD儲存在記憶體中,儲存在所有例項上。每個例項都管理部分目錄。分散式特性是RAC容錯的關鍵點。協調共享快取伺服器內的併發任務稱為同步。同步使用私有互連和大量訊息傳輸。下面這些型別的資源需要同步:資料塊和佇列。GCS整體維護資料塊模式,並負責例項間的資料塊傳輸。LMS程式處理GCS訊息,並完成大多數GCS處理。佇列是一種共享記憶體結構,它序列化對資料庫資源的訪問。它可以是區域性的,也可以是全域性的。Oracle在3種模型中使用佇列:①空(N)模式;②共享(S)模式;③獨佔(X)模式。資料塊是讀寫入和讀寫出緩衝器的基本結構。它通常是最經常被請求的資源。GES維護或處理字典快取、庫快取、事務鎖定和DDL鎖定的同步。換句話說,GES管理佇列而不是資料塊。為了同步訪問資料字典快取,需要在獨佔模式和單節點叢集資料庫中使用閂鎖。在叢集資料庫快取中使用全域性佇列。

GCS和GES包括以下特性:

應用透明性;

分散式結構的全域性資源目錄:只要還存在一個節點,即使出現一個或多個節點失敗,GCS和GES仍然可以保證全域性資源目錄的完整性;

資源控制:GCS和GES會選擇一個例項來管理所有的資源資訊,這個例項叫做resource master。GCS和GES會根據資料訪問方式階段性的評估和修改resource master。這種方式會減少網路流量和資源獲取時間;

GCS和GES與CM之間的互動:GCS和GES獨立於CM。但同時GCS和GES依賴於CM提供的各個節點上例項的狀態資訊。一旦無法取得某個例項的資訊,則Oracle會馬上關閉沒有響應的例項,來保證整個RAC的完整性。

11、快取熔合和資源協調:

因為實時應用叢集中的每個節點都有自己的記憶體(快取)(不與其他節點共享),所以RAC必須協調不同節點的快取,同時減少可能降低效能的其他磁碟I/O。快取熔合這種技術使用高速互連來提供叢集中例項之間從快取到快取的資料塊傳輸。快取熔合功能允許髒資料塊的直接記憶體寫,從而不需要強迫磁碟寫和重讀(或ping)提交的資料塊。然而,這不是說不會發生磁碟寫。快取取代和出現檢查點時仍然需要磁碟寫。快取熔合解決了涉及例項間併發性的問題:多個節點上的併發讀操作、不同節點上的併發讀寫、不同節點上的併發寫操作。

如果資料塊不一定總是在例項的快取中,那麼Oracle只從磁碟讀取它們。因為推遲了資料塊的寫,所以它們通常包含來自多個事務的修改。只有當出現檢查點時,修改過的資料塊才會被寫到磁碟。進一步討論之前,我們需要熟悉Oracle 9i RAC中引入的一些概念:資源模式和資源角色。因此相同資料塊可以同時存在於多個例項中,所以有兩個識別符號可以幫助協調這些資料塊:

資源模式。模式有空模式、共享模式和獨佔模式。資料塊可以用不同模式儲存,取決於資源佔有者是要修改資料還是隻讀它們。

資源角色。這些角色可以區域性管理和全域性管理。

全域性資源目錄(GRD)不是資料庫。它是內部結構的集合,用來查詢資料塊的當前狀態。當資料塊傳輸出本地快取之外,並傳輸到另一個例項的快取中,就更新了GRD。在GRD中可用下面有關資源的資訊:

資料塊識別符號(Data Block Identifier,DBA)

大多數當前版本的位置

資料塊的模式(N、S、X)

資料塊的角色(區域性或全域性)


下表中帶(r)的程式表示需要以root使用者執行

表1:ClusterWare相關程式列表

Clusterware元件
 Linux/unix程式
 Windows服務
 Windows程式
 
Process Monitor Daemon
 oprocd(r)
 OraFenceService
 
 
RACG
 racgmain

racgimon
 
 racgmain.exe

racgimon.exe
 
Oracle Nonification Service(ONS)
 ons
 
 
 
Event Manager
 evmd(r)

evmd.bin

evmlogger
 OracleEVMService
 evmlogger.exe

evmd.exe
 
Cluster Ready
 crsd.bin(r)
 OracleCRSService
 crsd.exe
 
Cluster Synchronization Services
 init.cssd(r)

ocssd(r)

ocssd.bin
 OracleCSService
 ocssd.exe
 


12、Cluster Synchronization Service(CSS):透過控制哪個結點為叢集的成員、結點在加入或離開叢集時通知叢集成員來控制叢集的配置資訊。
13、Cluster Ready Services(CRS):管理叢集內高可用操作的基本程式。Crs管理的任何事物被稱之為資源,它們可以是一個資料庫、一個例項、一個監聽、一個虛擬IP(VIP)地址、一個應用程式等等。CRS是根據儲存於OCR中的資源配置資訊來管理這些資源的。這包括啟動、關閉、監控及故障切換(start、stop、monitor及failover)操作。當一資源的狀態改變時,CRS程式生成一個事件。當你安裝RAC時,CRS程式監控Oracle的例項、監聽等等,並在故障發生時自動啟動這些元件。預設情況下,CRS程式會進行5次重啟操作,如果資源仍然無法啟動則不再嘗試。
14、Event Management(EVM):釋出CRS建立事件的後臺程式。
15、Oracle Notification Service(ONS):通訊的快速應用通知(FAN:Fast Application Notification)事件的釋出及訂閱服務。
16、RACG:為clusterware進行功能擴充套件以支援Oracle的特定需求及複雜資源。它在FAN事件發生時執行伺服器端的呼叫指令碼(server callout script)
17、Process Monitor Daemon(OPROCD):此程式被鎖定在記憶體中,用於監控叢集(cluster)及提供I/O防護(I/O fencing)。OPROCD執行它的檢查,停止執行,且如果喚醒超過它所希望的間隔時,OPROCD重置處理器及重啟節點。一個OPROCD故障將導致Clusterware重啟節點。
類UNIX系統的Oracle Clusterware程式
crsd:執行高可用性恢復及管理操作,諸如維護OCR及管理應用資源。此程式以root使用者執行(在Max OS X類系統中以admin組中使用者執行)。此程式在發生故障時自動重啟。
evmd:事件管理守護程式。此程式還負責啟動racgevt程式以管理FAN伺服器端呼叫。
ocssd:管理叢集節點的成員資格,此程式以Oracle使用者執行。此程式發生故障導致叢集重啟。
oprocd:叢集的程式監控程式。要注意此程式只出現在那些未使用其它廠商的叢集管理軟體的平臺上。
Oracle的Clusterware需要如下兩個關鍵檔案

l 投票盤(Voting Disk):透過執行健康檢查及網路故障時在例項中執行叢集所有權的仲裁來管理叢集的成員資格(Cluster membership)。RAC使用投票盤來決定哪個例項是叢集的成員。投票盤必須在一個共享磁碟上。出於高可用性方面的考慮,Oracle建議使用多個投票盤。Oracle可使用多個投票盤但你必須使用奇數個投票盤。如果你只使用一個,那麼你必須使用外部映象來提供冗餘性。

l Oracle叢集登錄檔(Oracle Cluster Registry:OCR):維護叢集的配置資訊及叢集中任何叢集資料庫的配置資訊。OCR也管理那些Oracle Clusterware控制的相關程式的相關資訊。OCR將配置資訊儲存在一個目錄樹結構中的一系列關鍵字-值對中(key-value pairs)。OCR必須位於叢集中所有結點可同時訪問的共享磁碟中。Oracle Clusterware可使用多重OCR(multiplex或稱為多路複用)。Oracle建議使用此特性以保證高可用性。你可以在聯機時替換一個故障的OCR,可透過支援的API(如企業管理器、srvctl及dbca)來更新OCR。 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-622768/,如需轉載,請註明出處,否則將追究法律責任。

相關文章