rac基礎知識溫習(1)

myownstars發表於2011-08-01

RAC上的DDL

多節點的RAC,每個節點上都可能有引用表a的遊標,無論在任意節點對錶aDDL,都需要把所有節點上的引用物件置為invalid;

此時每個節點上的LCK0程式,會對本例項library cache的物件加shared-modeIV(invalidation) instance lock,使用者修改是需要獲取相應的exclusiveIV鎖,

此時會通知本地的LCK0釋放shared-mode鎖,本地LCK0釋放鎖之前,會通知其他節點上的LCK0,其他節點的LCK0收到通知後會把本地library cache中的相關物件置為無效。

 

Oracle例項新增程式

LMS—負責資料塊在例項間的傳遞,對應的服務為GCS(global cache service),透過引數GCS_SERVER_PROCESSES控制

LMD—提供GES(global enqueue services),負責多個例項間協調對資料塊的訪問順序

LCK—負責non-cache fusion資源的同步訪問

LMON—各例項之間的LMON會定期通訊,檢查叢集中各節點的健康狀態,負責叢集重構、GRD恢復等操作

   叢集軟體的健康檢測必須還要從資料庫層面進行,如某個instance掛掉,但從networkOSclusterware層面是檢查不到的

1、  提供節點監控,節點的健康狀態透過儲存在GRD中的點陣圖記錄的,1代表正常;各節點間的LMON相互通訊,確保點陣圖的一致性

2、  LMON檢測到例項級別的腦裂時,先通知下層的clusterware,期待叢集解決;一旦超時,自動觸發instance membership recovery

3、  LMON藉助兩種心跳機制:節點間的網路心跳;控制檔案的磁碟心跳(每3秒更新一次)

 

 

GCS負責維護全域性SCN的產生,採用broadcast演算法:每個commit後,節點向其他節點廣播,確保每個節點commit後,都能立刻看到SCN

 

 

RACClusterware的互動

Clusterware層:所有節點的clusterware組成一個叢集,並選出一個master node;每個穩定的叢集狀態稱為cluster incarnation numberRAC instane啟動時會把LMONDBWR等需要操作共享儲存的程式作為一個組註冊的clusterware層,並獲取一個node id

              RAC叢集和節點叢集是兩個層次的叢集,各有腦裂、I/O隔離等問題;

              RAC檢測到節點故障,則暫停對外服務;通知clusterware異常,並等待其完成叢集重構;clusterware完成重構後,會通知上層RAC叢集,RAC叢集收到訊息開始重構;

RAC層:由LMON程式負責維護,提供CGSNMRAC例項的所有程式被當成一個組NM註冊到clusterware中;

 

重構觸發型別:

1、  有節點加入或離開叢集,由NM觸發

2、  Network heartbeat異常,LMON/GCS/GES通訊超時;由_cgs_send_timeout控制,預設值為300

3、  Controlfile heartbeat異常,每個例項的CKPT每隔3秒更新控制檔案的checkpoint progress record,每個例項對應一個;create database …max instance決定了會建立多少個這種記錄;由_controlfile_enqueue_timeout控制,預設900

 

Hangcheck-timer

--linux核心級的IO-Fencing模組,監控Linux的執行狀態,若長時間掛起,則會自動重啟系統;需要引數hangcheck_tickhangcheck_margin,此外CRS本身還有一個MissCount引數;

 Clusterware在重構時,必須確保故障節點是dead狀態,因此misscount > hangcheck_tick + hangcheck_margin,確保節點重構時,節點已經被hangcheck-timer重啟

 

CSS有兩種心跳機制:

1、  透過私有網路的network heartbeat,叫做misscount

2、  透過voting diskdisk heartbeat,叫做I/O timeout

 

Failover

1、  client-side connect time

tnsname中配置多個地址,使用者發起請求時,會遍歷地址列表直至成功

2、  TAF(transparent application failover)

tnsname中新增failover_mode配置

Amethod 分為basic/preconnect Btype分為session/select

3、  Service-side TAF

在資料庫伺服器端配置fail_mode

Loadbalance

1、  connection balancing

客戶端均衡:tnsnames配置中新增load_balance=yes

伺服器均衡:PMON收集系統的負載資訊,並登記到listener中,由local_listener/remote_listener決定,其中remote_listener需要tnsname設定

2、透過service,在應用層面上分散

 

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

相關文章