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

ysping發表於2009-08-05

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

1.GSD global services daemon

GSDrac的管理工具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是用來進行序列化行更新的共享的記憶體結構。

[@more@]

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提供了10LMS程式,該程式數量隨著節點間的訊息傳遞的資料的增加而增加。

5. lock process(LCK)

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

6.DIAG:DIAGNOSABILITY DAEMON

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

7Operating System-Dependent(OSD)

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

OSD包括三個自部分:

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

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

The Interconnect

8Real Application Cluster Shared Disk Component

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

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

9Real Application Cluster-Specific Daemon and Instance Processes

包含兩部分:

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

RAC中特別的例項程式:

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

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

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

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

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

10The Global Cache and Global Enqueue Service

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

GCSGES包括以下特性:

應用透明性;

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

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

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

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

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

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

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

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

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

資料塊識別符號(Data Block IdentifierDBA)

大多數當前版本的位置

資料塊的模式(NSX)

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

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

1ClusterWare相關程式列表

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

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

相關文章