xzh2000的博客 本人提供杭州地区Oracle现场技术支持服务,包括性能调整、DataGuard、RAC等。
19 09, 2006
mlog$_xxx表hwm过高导致性能问题的解决办法
作者 xzh2000 19:49 | Permalink 静态链接网址 | Comments 最新回复 (0) | Trackback 引用 (0) | 技术交流

在fuyuncat的个人站点上,有篇关于mlog$表的HWM过高导致性能问题的一个解决方案,在用物化视图进行快速刷新来同步数据的数据库中,这个问题是非常容易遇到的,特别在数据复制源端数据更新非常频繁的情况下。。。


fuyuncat的解决办法是:安排现场,将业务处理端的客户连接断开,然后停止快照端的刷新作业,手工刷新一次同步后,检查业务处理端的mlog$表,确保这些表为空,然后truncate table mlog$表,恢复同步作业,最后恢复业务处理端的客户连接。

这样做确实没有错,但如果在确实不能停应用的情况下,该如何解决这个问题呢?其实只要通过dbms_metadata.get_ddl抽取出mlog$_表的创建语法,就知道如何做了.这个表看起来象系统表,没有索引,其实是允许dba做一些DDL,DML等操作的,由于该表的HWM提高了,所以mlog$_xxx即使没有任何记录,全表扫描一次也是很慢的。。。

create table MLOG$_TEST
( ID VARCHAR2(32),
SNAPTIME$$ DATE,
DMLTYPE$$ VARCHAR2(1),
OLD_NEW$$ VARCHAR2(1),
CHANGE_VECTOR$$ RAW(255))

为了不阻塞应用,可以用online redefinition的方式移动一下表;对于没有索引的表,另一种风险较大的办法,就是选择业务最少的时间直接alter table mlog$_test move,这样做虽然可能会对应用有一点阻塞,但只要存储的性能好,几百兆的mlog$_表能在十几秒内完成,基本上也不会有什么影响。。。

Comments
博客日历
« 八月 2008 »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
搜索
最新发表
文章分类
文章归档
网站链接
新闻聚合