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 系列十三:PCM資源訪問Oracle
- 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 系列一:基礎概念Oracle
- Oracle RAC 和OPS 區別 - Cache FusionOracle
- 【RAC原理】Cache Fusion
- ORACLE RAC的DRM (動態資源管理)Oracle
- Oracle RAC CacheFusion 系列十五:Oracle RAC CRServer Part TwoOracleServer
- Oracle RAC搭建(二)Oracle
- Oracle RAC基本管理Oracle
- 管理ORACLE RAC GUARD——RAC GUARD概念和管理Oracle
- Oracle RAC日常管理命令Oracle
- ORACLE RAC GUARD操作——RAC GUARD概念和管理Oracle
- MAC+Vmware Fusion安裝Oracle11g RACMacOracle
- RAC的cache fusion對資料塊訪問效率的影響
- ORACLE RAC GUARD故障排除——RAC GUARD概念和管理Oracle
- 定製ORACLE RAC GUARD——RAC GUARD概念和管理Oracle
- 使用ORACLE RAC GUARD命令——RAC GUARD概念和管理Oracle
- ORACLE RAC GUARD架構——RAC GUARD概念和管理Oracle架構
- Oracle RAC效能管理(筆記)Oracle筆記
- 【原創】Oracle RAC 日常管理Oracle
- oracle rac管理基本命令Oracle
- 管理Oracle RAC工具及命令Oracle
- 【Oracle】 RAC 環境刪除oracle 之二Oracle
- ORACLE RAC GUARD配置引數——RAC GUARD概念和管理Oracle
- oracle RACOracle
- Oracle系列:Oracle RAC叢集體系結構Oracle
- Oracle RAC Failove 之二:TAFOracleAI
- Oracle RAC引數檔案管理Oracle
- oracle 11G Rac service管理Oracle
- Oracle10g RAC管理 - CRSOracle
- Oracle RAC 日常管理之CRS篇Oracle
- 為ORACLE RAC GUARD配置網路——RAC GUARD概念和管理Oracle
- Using Oracle Database 11g Release 2 Result Cache in an Oracle RAC EnvironmentOracleDatabase
- oracle 資源管理器(二)Oracle