Oracle RAC Cache Fusion 系列九:Oracle RAC 分散式資源管理(二)
因為叢集的分散式架構,透過程式間的通訊完成資源的共享、分發、同步對分散式鎖管理實現就變得尤為必要。 有了這種通訊的存在,在與叢集中的其他例項上LMD程式完成通訊鎖定一個資源後,無論有多少DLM例項發生故障,都不會丟失有關鎖資源的重要資訊。但是需要注意的一點是資料庫的崩潰恢復(能夠恢復在中止例項的緩衝區快取記憶體中丟失的塊)不是DLM的功能,塊的全域性快取記憶體處理仍然使用相同的“寫入前刷日誌”規則來確保持久化。透過前面系列文章我們知道GRD或DLM是由GES元件和GCS組建組成,而這些功能的程式(LMON、LMS、LMD等)實現我們也有了大致的瞭解。現在我們來更進一步的瞭解這些程式的函式實現和引數調整。
DLM存在於群集的每個例項中。
- 協調不同例項之間的請求和對共享資源的訪問。
- 儲存叢集中所有鎖的清單。
- 資源可用時授予和通知程式。
- 當其他程式請求鎖時通知鎖的所有者。
容錯: DLM可以承受n-1個節點故障。
死鎖檢測: DLM檢測並報告死鎖。
LMD程式:
LMD0是DLM的核心,LMD0處理所有鎖定操作和資源建立,檢測死鎖以及向其他LMD0傳送訊息。LMD0的處理統計資訊可以透過兩個檢視V$DLM_CONVERT_LOCAL和V$DLM_CONVERT_REMOTE檢視。統計資訊由初始化引數timed_statistics控制,在11g版本預設為TRUE。
假設當前在轉換佇列上等待的鎖定符合授權佇列,則LMD會使用 move-scan-convert 流程進行定期檢查。
LMD0的主迴圈:kjmdm
• lock db鎖定:
- 停止任何死鎖檢測:kjdddei
- 鎖定並重置:kjfzfcl
在鎖定狀態下,無法從DLM獲取任何鎖定或建立任何新資源。在重構期間鎖定整個GRD,以便可以快速從節點故障中恢復。
• lock db解鎖:
- 檢測鎖轉換:kjcvscn。
- 死鎖檢測:kjddits / kjddscn。
- 清理恢復域:kjprsem。
- 更新統計資訊:kjxstc。
- 傳送流控制訊息:kjctssb。
LMON程式:
由前面系列文章我們知道LMON程式主要負責整個資料庫叢集層面的一致性關係(CGS),監控整個叢集的全域性佇列和資源。根據前面DLM快取資源和鎖定結構的介紹。當叢集存在不再需要的資源時就會將他放置在一個空閒列表上。然後LMON呼叫kjrchc清除資源的DLM快取。
LMON程式的使用的主要函式如下:
- LMON的主迴圈:kjfcln
- 偵聽本地訊息:kjcswmg
- 響應重構事件:kjfcrfg
- 清除GES快取:kjrchc
LMS程式:
LMS是整個Cache Fusion體系最活躍和最忙碌的程式。它負責維護GRD中的資料塊資源資訊。
LMS程式數由_lm_lms確定預設值為max(#CPU/ 4,2)
1.掃描具有可授予轉換鎖的PCM資源。
2.處理降級轉換佇列由kclpbi處理。
3.如果訊息正在排隊並且超過_side_channel_batch_timeout引數設定的時間,則flush訊息。
4.處理PCM鎖的遠端訊息。
GES資源和鎖
GES資源即non-PCM資源的初始分配數量可以透過查詢隱含引數_lm_ress。如果用盡,則可以在shared_pool中申請分配更多資源。ges資源的初始分配,使用和限制資訊可以透過v$resource_limit的ges_ress值獲得(SELECT * FROM V$RESOURCE_LIMITWHERE RESOURCE_NAME LIKE 'ges%' ;)
預設情況下_lm_ress=1.1 * ( localres +(number_of_instance-1) * localres / number_of_instance )
localres = processes + dlm_locks + transactions+ enqueue_resources+ db_files+7+
parallel_max_servers *cluster_database_instance+ parallel_max_servers + cluster_database_instance+200
GES資源鎖初始分配數量可以透過查詢隱含引數_lm_locks。同樣的如果用盡,則可以在shared_pool中申請分配更多鎖資源。ges鎖的初始分配,使用和限制資訊可以透過v$resource_limit的ges_locks值獲得(SELECT * FROM V$RESOURCE_LIMIT WHERE RESOURCE_NAME LIKE 'ges%' ;)
預設情況下_lm_locks=(localres+_enqueue_locks)+ (number_of_instance-1 * (localres+_enqueue_locks) / number_of_instance)
localres = processes + dlm_locks +transactions + enqueue_resources + db_files + 7 +
parallel_max_servers *cluster_database_instance+ parallel_max_servers + cluster_database_instance+200
GCS資源和鎖
GCS資源即PCM資源的初始分配數量可以由隱含引數_gcs_resources 配置或預設max(1.1 * _db_block_buffers,2500)。如果耗盡,則從shared_pool分配的更多資源以1024為增量單位。gcs資源的初始分配,使用和限制資訊可以透過v$resource_limit的gcs_resources值獲得(SELECT * FROMV$RESOURCE_LIMIT WHERE RESOURCE_NAME LIKE 'gcs%' ;)
GCS資源鎖即PCM資源鎖的初始分配數量可以由隱含引數_pcm_shadow_locks配置或則預設max(1.1 * _db_block_buffers,2500)。如果耗盡,則從shared_pool分配的更多資源以1024為增量單位。gcs資源的初始分配使用和限制資訊可以透過v$resource_limit的gcs_shadows值獲得(SELECT * FROMV$RESOURCE_LIMIT WHERE RESOURCE_NAME LIKE 'gcs%' ;)
DLM程式
DLM程式數量初始分配數量可以透過設定隱含引數_lm_procs或max( ( 64 + 256 ) + ( number_of_instance-1 ), processes )如果耗盡,則從shared_pool分配更多資源。DLM程式的初始分配,使用和限制資訊可以透過v$resource_limit的ges_locks值獲得(SELECT * FROM V$RESOURCE_LIMIT WHERE RESOURCE_NAME LIKE 'ges%' ;)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28218939/viewspace-2652301/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle RAC Cache Fusion 系列八:Oracle RAC 分散式資源管理(一)Oracle分散式
- Oracle RAC Cache Fusion 系列十七:Oracle RAC DRMOracle
- Oracle RAC Cache Fusion系列十八:Oracle RAC Statisticsand Wait EventsOracleAI
- Oracle RAC Cache Fusion 系列十四:Oracle RAC CR Server Part OneOracleServer
- Oracle RAC Cache Fusion 系列十:Oracle RAC Enqueues And Lock Part 1OracleENQ
- Oracle RAC Cache Fusion 系列十三:PCM資源訪問Oracle
- Oracle RAC Cache Fusion 系列一:基礎概念Oracle
- Oracle RAC CacheFusion 系列十五:Oracle RAC CRServer Part TwoOracleServer
- oracle RACOracle
- Oracle 11.2 DataGuard RAC To RAC搭建Oracle
- ORACLE RAC clusterwareOracle
- Oracle RAC引數檔案管理Oracle
- 【BUILD_ORACLE】Oracle 19c RAC搭建(六)建立RAC資料庫UIOracle資料庫
- 【RAC】Oracle RAC如何修改心跳網路Oracle
- Oracle RAC Wait EventsOracleAI
- oracle rac 增加磁碟Oracle
- 【TUNE_ORACLE】Oracle 19c RAC搭建番外篇之RAC引數配置參考(二)Oracle
- 【RAC】Oracle rac 如何修改公網及vipOracle
- Oracle 11g RAC 監聽日常管理Oracle
- Oracle 12c rac ocr和votedisk管理Oracle
- Oracle RAC 環境下的連線管理Oracle
- Oracle RAC+DG搭建Oracle
- Oracle RAC更新補丁Oracle
- Oracle RAC新增節點Oracle
- 4.2.1.12 規劃 Oracle RACOracle
- Oracle RAC自啟動Oracle
- Networker備份oracle racOracle
- Oracle:RAC 程式簡介Oracle
- 【BUILD_ORACLE】Oracle 19c RAC搭建(一)安裝資源規劃UIOracle
- G003-ORACLE-INS-RAC-01 ORACLE 19C RAC Ins ON OEL 7.8Oracle
- oracle rac資料庫的安裝Oracle資料庫
- vgant 安裝oracle資料庫racOracle資料庫
- oracle 12c rac 詳細部署教程(二)Oracle
- Oracle RAC一鍵部署004(RAC引數校驗)Oracle
- 【RAC】Oracle RAC上線測試場景介紹Oracle
- Oracle RAC序列效能測試Oracle
- oracle RAC手動配置互信Oracle
- Oracle資料庫(RAC)巡檢報告Oracle資料庫