物化视图复制环境的管理

上周去做了次物/化视图日志的清理,清理后,原来整个库41G的物化视图日志缩小到5G。以前TOP SQL全是物化视图刷新的相关语句,清理后全部没有了。数据库的压力有明显下降

对于物化视图复制环境,ORACLE提供的DBA视图更本就不够用
特别是这次遇到的这个环境,多个地市从省局刷取属于其的数据,而这21个地市的数据库名称又一模一样
刷新的目标表名也一样,从dba_registered_mviews更本就找不到很多关键信息,很多信息要从底层的数据字典表中去找
主要这几个reg_snap$,slog$,mlog$,Snap_Reftime$

对于长时间未刷新的物化视图,可以通过reg_snap$,Snap_Reftime$查询,但是今天的这个情况,21个地市数据库名一样
则只能查到最后一个地市刷新的时间,其他地市也不知道何时开始未刷新,这个只有从slog$中去找未刷新的snap_id

清除时的步骤为:
1:通过reg_snap$,Snap_Reftime$找到长时间未刷新的物化视图,使用DBMS_MVIEW.unregister_mview注销掉
2:通过slog$,找到无注册信息的物化视图的SNAP_ID,使用DBMS_MVIEW.PURGE_MVIEW_FROM_LOG来purge不需要的物化视图日志
   该操作本质上是先删除mlog$_xxxx中,slog$记录日期前的日志,在删除slog$中对应的记录,在UPDATE mlog$中保留的日期判断信息
3:停止其他数据库在本数据库上的刷新操作,如果不能停止,那么可以关闭监听,阻止其他数据库连接过来刷新数据
4:在SESSION 1:
   LOCK TABLE DJ_YZCWSBQC IN EXCLUSIVE MODE;
5:在SESSION 2:
   CREATE TABLE T_MLOG$_DJ_YZCWSBQC TABLESPACE CTAIS2_IDX AS SELECT * FROM MLOG$_DJ_YZCWSBQC;
   TRUNCATE TABLE MLOG$_DJ_YZCWSBQC;
   INSERT /*+append nologging */ INTO MLOG$_DJ_YZCWSBQC SELECT * FROM T_MLOG$_DJ_YZCWSBQC;
   COMMIT;
   DROP TABLE T_MLOG$_DJ_YZCWSBQC;

还有一点特别注意,如果是多层复制的环境,例如这次这个
查询机刷生产机数据,数据分发数据库在刷查询机数据,各地的数据库在刷数据分发数据库的数据
物化视图的重新全部刷新,不会使在该物化视图上的物化视图日志膨胀

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

转载于:http://blog.itpub.net/8242091/viewspace-626495/

你可能感兴趣的:(数据库)