rac基礎知識溫習(1)
RAC上的DDL
多節點的RAC,每個節點上都可能有引用表a的遊標,無論在任意節點對錶a做DDL,都需要把所有節點上的引用物件置為invalid;
此時每個節點上的LCK0程式,會對本例項library cache的物件加shared-mode的IV(invalidation) instance lock,使用者修改是需要獲取相應的exclusive的IV鎖,
此時會通知本地的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掛掉,但從network、OS、clusterware層面是檢查不到的
1、 提供節點監控,節點的健康狀態透過儲存在GRD中的點陣圖記錄的,1代表正常;各節點間的LMON相互通訊,確保點陣圖的一致性
2、 LMON檢測到例項級別的腦裂時,先通知下層的clusterware,期待叢集解決;一旦超時,自動觸發instance membership recovery
3、 LMON藉助兩種心跳機制:節點間的網路心跳;控制檔案的磁碟心跳(每3秒更新一次)
GCS負責維護全域性SCN的產生,採用broadcast演算法:每個commit後,節點向其他節點廣播,確保每個節點commit後,都能立刻看到SCN。
RAC和Clusterware的互動
Clusterware層:所有節點的clusterware組成一個叢集,並選出一個master node;每個穩定的叢集狀態稱為cluster incarnation number;RAC instane啟動時會把LMON、DBWR等需要操作共享儲存的程式作為一個組註冊的clusterware層,並獲取一個node id;
RAC叢集和節點叢集是兩個層次的叢集,各有腦裂、I/O隔離等問題;
若RAC檢測到節點故障,則暫停對外服務;通知clusterware異常,並等待其完成叢集重構;clusterware完成重構後,會通知上層RAC叢集,RAC叢集收到訊息開始重構;
RAC層:由LMON程式負責維護,提供CGS和NM;RAC例項的所有程式被當成一個組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_tick和hangcheck_margin,此外CRS本身還有一個MissCount引數;
Clusterware在重構時,必須確保故障節點是dead狀態,因此misscount > hangcheck_tick + hangcheck_margin,確保節點重構時,節點已經被hangcheck-timer重啟
CSS有兩種心跳機制:
1、 透過私有網路的network heartbeat,叫做misscount
2、 透過voting disk的disk heartbeat,叫做I/O timeout
Failover
1、 client-side connect time
tnsname中配置多個地址,使用者發起請求時,會遍歷地址列表直至成功
2、 TAF(transparent application failover)
在tnsname中新增failover_mode配置
A、method 分為basic/preconnect B、type分為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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【RAC】RAC相關基礎知識
- WebAPI基礎知識學習(1)WebAPI
- 1、基礎知識
- Docker容器學習梳理 - 基礎知識(1)Docker
- PHP 基礎知識-1PHP
- DDD基礎知識1
- 機器學習基礎知識1機器學習
- 1.基礎知識
- DS #1 基礎知識
- 溫習tcp知識TCP
- GO 學習筆記 《1. 基礎知識》Go筆記
- React學習手記1--基礎知識React
- PHP學習筆記(1)–基礎知識篇PHP筆記
- C++基礎知識學習筆記(1)C++筆記
- Python基礎知識1Python
- java之路,基礎知識1Java
- 【1】測試基礎知識
- 【ASM學習】基礎知識ASM
- 【轉載】oc語言基礎知識全面 看完oc基礎教程後再溫習一遍C語言
- corejava基礎知識(1)-繼承Java繼承
- Java基礎知識總結-1Java
- Java基礎知識題集(1)Java
- JS基礎知識總結(1)JS
- Python學習筆記—day1—基礎知識Python筆記
- Android基礎知識學習Android
- 基礎知識學習筆記筆記
- JavaSE基礎知識學習-----集合Java
- 【ASM學習】ASM基礎知識ASM
- Oracle 基礎溫習3Oracle
- 第二章 基礎知識(1)
- C++基礎知識筆記(1)筆記
- 1.分割槽表基礎知識
- 前端學習記錄 1:HTML 基礎知識點歸納前端HTML
- Android NDK學習筆記1-基礎知識篇Android筆記
- Redis基礎知識(學習筆記8--Redis命令(1))Redis筆記
- Redis基礎知識(學習筆記15--持久化 (1))Redis筆記持久化
- oracle學習筆記零碎(五)--基礎知識複習(1)Oracle筆記
- 基礎知識