设为首页 加入收藏

TOP

oracle10gRAC中DRM的理解(一)
2015-07-24 11:44:37 来源: 作者: 【 】 浏览:10
Tags:oracle10gRAC DRM 理解
关于DRM的一些总结

1. 什么是DRM
DRM(Dynamic Resource Management)是oracle 10g的一个新特性,在oracle rac环境中,ORACLE使用GRD(Global Resource Service)来记录各个节点的资源信息,具体是通过GCS(Global Cache Service)和GES(Global Enqueue Service)这两个服务进行管理。由于RAC中每个节点都有自己的SGA和buffer cache,为了保证所有节点cache 资源的一致性和高性能。GCS和GES会指定RAC中的某一个节点的实例来管理cache,这个节点就是Resource Master。当rematering或改变主节点只会发生在重新配置,会自动在两个正常操作实例启动或实例关闭,异常节点就是被集群踢出。所以当以节点A作为主节点是也就是 Resource Master时,这个资源就掌握在节点A中,直到被重新配置。

理论上讲,利用DRM,非master节点对所需资源有频繁访问需求时,可以提升为master节点,从而减少大量后续的跨节点资源访问需求,例:cache resource 被节点B频繁访问时,资源就可以从节点A remaster到节点B。

但是,作为一个好的RAC应用设计,同一个资源从多个节点访问本来就是应该避免的问题,如果访问的同一资源只在一个节点上,那么对于DRM来说,就根本不存在。其次,DRM过程本身就耗费资源。

/* 下面是老熊网站的一个例子:http://www.laoxiong.net/problem-caused-by-drm. html */

在一套RAC 系统中,间歇性的出现性能问题,但是一段时间后自动恢复正常。

从AWR中的TOP 5等待来看:?

Top 5 Timed Events                                         Avg %Total  
~~~~~~~~~~~~~~~~~~                                        wait   Call  
Event                                 Waits    Time (s)   (ms)   Time Wait Class  
------------------------------ ------------ ----------- ------ ------ ----------  
latch: cache buffers lru chain      774,812     140,185    181   29.7      Other  
gc buffer busy                    1,356,786      61,708     45   13.1    Cluster  
latch: object queue header ope      903,456      55,089     61   11.7      Other  
latch: cache buffers chains         360,522      49,016    136   10.4 Concurrenc  
gc current grant busy               112,970      19,893    176    4.2    Cluster  
          -------------------------------------------------------------  
可以看到,TOP 5中,有3个是latch相关的等待,而另外2个则是跟RAC相关的等待。
如果再查看更细的等待数据,可以发现其他问题:
                                                                  Avg  
                                            %Time  Total Wait    wait     Waits  
Event                                 Waits -outs    Time (s)    (ms)      /txn  
---------------------------- -------------- ----- ----------- ------- ---------  
latch: cache buffers lru cha        774,812   N/A     140,185     181       1.9  
gc buffer busy                    1,356,786     6      61,708      45       3.3  
latch: object queue header o        903,456   N/A      55,089      61       2.2  
latch: cache buffers chains         360,522   N/A      49,016     136       0.9  
gc current grant busy               112,970    25      19,893     176       0.3  
gcs drm freeze in enter serv         38,442    97      18,537     482       0.1  
gc cr block 2-way                 1,626,280     0      15,742      10       3.9  
gc remaster                           6,741    89      12,397    1839       0.0  
row cache lock                       52,143     6       9,834     189       0.1  
从上面的数据还可以看到,除了TOP 5等待,还有”gcs drm freeze in enter server mode“以及”gc remaster”这2种比较少见的等待事件,从其名称来看,明显与DRM有关。那么这2种等待事件与TOP 5的事件有没有什么关联?。MOS文档”Bug 6960699 – “latch: cache buffers chains” contention/ORA-481/kjfcdrmrfg: SYNC TIMEOUT/ OERI[kjbldrmrpst:!master] [ID 6960699.8]”提及,DRM的确可能会引起大量的”latch: cache buffers chains”、”latch: object queue header operation”等待,虽然文档没有提及,但不排除会引起”latch: cache buffers lru chain“这样的等待。
为了进一步证实性能问题与DRM相关,使用tail -f命令监控LMD后台进程的trace文件。在trace文件中显示开始进行DRM时,查询v$session视图,发现大量的 “latch: cache buffers chains” 、”latch: object queue header operation”等待事件,同时有”gcs drm freeze in enter server mode“和”gc remaster”等待事件,同时系统负载升高,前台反映性能下降。而在DRM完成之后,这些等待消失,系统性能恢复到正常。
看起来,只需要关闭DRM就能避免这个问题。怎么样来关闭/禁止DRM呢?很多MOS文档提到的方法是设置2个隐含参数:
_gc_affinity_time=0  
_gc_undo_affinity=FALSE  
不幸的是,这2个参数是静态参数,也就是说必须要重启实例才能生效。
实际上可以设置另外2个动态的隐含参数,来达到这个目的。按下面的值设置这2个参数之后,不能完全算是禁止/关闭了DRM,而是从”事实上“关闭了DRM。
_gc_affinity_limit=250  
_gc_affinity_minimum=10485760  

甚至可以将以上2个参数值设置得更大。这2个参数是立即生效的,在所有的节点上设置这2个参数之后,系统不再进行DRM,经常一段时间的观察,本文描述的性能问题也不再出现。
下面是关闭DRM之后的等待事件数据:
Top 5 Timed Events                                         Avg %Total  
~~~~~~~~~~~~~~~~~~                                        wait   Call  
Event                                 Waits    Time (s)   (ms)   Time Wait Class  
------------------------------ ------------ ----------- ------ ------ ----------  
CPU time                                         15,684          67.5  
db file s
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle两种临时表的创建与使用详解 下一篇Oracle用户管理(二)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)
·Linux source 命令 - (2025-12-24 19:50:34)
·switch520最新的地址 (2025-12-24 19:19:41)
·微信聊天功能使用了 (2025-12-24 19:19:39)