ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DRM --- RAC object remastering ( Dynamic remastering )

DRM --- RAC object remastering ( Dynamic remastering )

原创 Linux操作系统 作者:zhouwf0726 时间:2019-02-23 19:06:05 0 删除 编辑

系统启动时,在RAC中,以hash方式确定每个数据块的master实例。随着应用的运行,可能某个数据块更多的被非master实例访问,如果可以根据访问频率,
将数据块的master动态调整为访问频率最高的实例,将会减少实例间通讯,提高应用性能。

1,DRM相关参数
_gc_affinity_time:检查是否需要remaster的频率(以分钟为单位);设置为0禁用该特性(同时停止了相关信息收集);缺省值10分钟
_gc_affinity_limit: 某个节点至少需要访问一个对象(比当前master多)多少次才能被DRM;缺省值50
_gc_affinity_minimum: 在开始remaster一个对象前,每分钟至少需要访问的次数,缺省值2400
_gc_undo_affinity:对undo段是否启用drm,缺省值TRUE

2,DRM实现机制
(1)由LCK0进程维护对象统计信息x$object_affinity_statistics,在满足_gc_affinity_limit,_gc_affinity_minimum条件后,会被放在一个队列;
(2)LMD0读取该队列,启动GRD冻结;
(3)LMON与LMS进程完成重构.

x$object_affinity_statistics跟踪对象访问次数:
select * from x$object_affinity_statistics where bject=6099472;
ADDR INDX INST_ID OBJECT NODE OPENS
---------------- ---------- ---------- ---------- ---------- ----------
FFFFFFFF7C05BFA8 0 1 6099472 1 7437

3,DRM相关视图:
(1)v$gcshvmaster_info
SQL> select * from v$gcshvmaster_info;
HV_ID CURRENT_MASTER PREVIOUS_MASTER REMASTER_CNT
1 1 1 32767 0
2 2 0 32767 1
3 3 1 32767 0
4 4 0 32767 1
...
126 126 0 32767 1
127 127 1 32767 0
128 128 25 6 117440517
已选择128行。

说明:
如果object_id>4294950912,表示undo segment no:
usn=object_id-4294950912,其中:
[ 4294950912 = power(2,32) - power (2,14) = xFFFFC000 ]

(2)v$gcspfmaster_info
SQL> select * from v$gcspfmaster_info;
FILE_ID OBJECT_ID CURRENT_MASTER PREVIOUS_MASTER REMASTER_CNT
---------- ---------- -------------- --------------- ------------
0 1 0 32767 1
0 4 1 32767 0
0 181049 1 32767 1
0 185360 1 32767 0
0 185364 1 32767 0
0 181614 0 1 2
0 181632 1 0 2
0 181679 0 1 3
0 182118 0 32767 1
0 182184 0 32767 1
0 184027 1 32767 1

已选择11行。

测试:
--对象
SELECT owner, object_name, object_type
FROM dba_objects
WHERE object_id = 181679;
OWNER OBJECT_NAME OBJECT_TYPE
BOCNETYL USERS TABLE

--表BOCNETYL.USERS当前master是1:
select * from v$gcspfmaster_info where object_id=181679;
FILE_ID OBJECT_ID CURRENT_MASTER PREVIOUS_MASTER REMASTER_CNT
0 181679 1 0 2

--在instance0上对表BOCNETYL.USERS进行全表扫描
select /*+ full(t) */count(*) from users t;


--表BOCNETYL.USERS当前master是0:
select * from v$gcspfmaster_info where object_id=181679;
FILE_ID OBJECT_ID CURRENT_MASTER PREVIOUS_MASTER REMASTER_CNT
0 181679 0 1 3

(3)表X$KJDRMAFNSTATS记录DRM次数

4,手工DRM
SQL> select object_id,current_master, previous_master ,remaster_cnt from V$GCSPFMASTER_INFO where object_id = 144615
OBJECT_ID CURRENT_MASTER PREVIOUS_MASTER REMASTER_CNT
---------- -------------- --------------- ------------
144615 0 2 0
The object 144615 is currently mastered on node 0.

NODE2> oradebug setmypid
Statement processed.

NODE2> oradebug lkdebug -m pkey 144615
Statement processed.

NODE2> select object_id,current_master, previous_master ,remaster_cnt from V$GCSPFMASTER_INFO where object_id = 144615
OBJECT_ID CURRENT_MASTER PREVIOUS_MASTER REMASTER_CNT
144615 2 0 0

To dissolve remastering of this object on this instance
SQL> oradebug lkdebug -m dpkey 144615

SQL> select object_id,current_master, previous_master ,remaster_cnt from V$GCSPFMASTER_INFO where object_id = 144615;
no rows selected

5,DRM相关等待事件
"gcs drm freeze in enter server",虽然10gR2采用并行方式remaster,仍然可能导致系统出现大量"gc buffer busy"事件.

6,DRM不同版本的变化
(1)10gR1是文件粒度的remaster;10gR2是对象粒度的remaster;
(2)11g后,affinity被替换为policy,比如:
x$object_affinity_statistics ==> x$object_policy_statistics
_gc_affinity_limit ==> _gc_policy_limit
_gc_affinity_time ==> _gc_policy_time

新增了视图v$policy_history,其中所有'initiate_affinity'都是DRM事件.
select * from v$policy_history
INST_ID POLICY_EVENT DATA_OBJECT_ID TARGET_INSTANCE_NUMBER EVENT_DATE
---------- -------------------- -------------- ---------------------- --------------------
2 glru_on 0 1 10/15/2010 10:58:28
2 glru_on 0 1 10/15/2010 11:21:32
2 initiate_affinity 74809 1 10/15/2010 13:27:44

7,DRM建议
不建议完全禁止drm,而是提高drm触发条件,比如增加_gc_affinity_time,_gc_affinity_limit,_gc_affinity_minimum.
在启用DRM的情况下,可以在不丢失高可用性的前提下,方便的实现应用访问特定实例(通过优先访问特定ip,而不是load_balance=yes),减少实例间通信,提高系统性能。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/756652/viewspace-720877/,如需转载,请注明出处,否则将追究法律责任。

上一篇: sql profile
请登录后发表评论 登录
全部评论

注册时间:2006-02-22

  • 博文量
    134
  • 访问量
    84880