根据前面系列的文章的解释,我们知道PCM资源的Master节点是通过hash算法得出。那么在一个多节点的RAC集群中,数据块请求节点和存放它的相关锁元素信息节点有很大概率是不相同的。这就意味着用户对资源的请求会存在很多的2或3次回路,从而造成很多的消息通信增加私网的负载进而影响影响数据库的性能。为了缓解这种性能影响,Oracle使用资源的remaster来减少资源的跨节点请求。针对某一个数据库对象的的访问次数和方式,来决定数据库对象对应的buffer应该被mastering 到哪一个实例。这里的“访问”更明确地说是请求BL锁。
其实早在9i版本,Oracle就意识到这个问题并开始引入了我们一般都不会注意到的隐含参数包括:_lm_dynamic_remastering,_lm_dynamic_lms,_lm_file_affinity,_lm_dynamic_load 可以通过SQL语句查看参数描述:
SELECT KSPPINM AS "hidden parameter",
KSPPSTVL AS "value",
KSPPDESC "description"
FROM X$KSPPI
JOIN X$KSPPCV
USING (INDX)
WHERE KSPPINM LIKE '\_%' ESCAPE '\'
AND KSPPINM LIKE '_lm_%'
ORDER BY KSPPINM;
10.1版本开始Oracle正式支持file affinity。10.2版本Oracle进行了优化将file affinity进行细化为object affinity及undo affinity,并记录系统的负载信息(默认由参数_lm_lhupd_interval控制)。file affinity由下面两个参数来控