物化视图日志过大分析处理

背景:

巡检发现数据库有张表超过200G,通过名称判断是某张表的物化视图日志,表大小是200M左右,每小时刷新一次物化视图,正常刷新完成会自动清理物化视图日志,现在要根据现象进行排查。

通过分析Oracle系统视图,我们发现当前物化视图(MV_ORG_PERSON)定义语句用到refresh force,此选项提供fast和complete两种选择,当无法做快速刷新时会自动选择全量刷新;系统视图dba_mviews中last_refresh_type字段值显示为COMPLETE,证明上次物化视图为全量刷新,结合dba_mview_analysis中的fullrefreshtim字段,发现一次全量刷新需要7秒左右,检查物化视图日志mlog$_table_name及mlog$_table_name1中的snaptime$$字段,存在大量时间为4000/1/1的值,再检查dba_base_table_mviews中的MVIEW_LAST_REFRESH_TIME字段,时间为2017/2/21,这代表从2017/2/21开始物化视图日志中的数据并未被物化视图用到,因此得出以下结论:

此物化视图日志并未对当前物化视图提供快速刷新功能,导致自动选择全量刷新;

注释:dba_base_table_mviews 此视图提供使用物化视图日志进行快速刷新的时间,必须同时满足有创建物化视图日志并使用了快速刷新两个条件才会更新MVIEW_LAST_REFRESH_TIME字段的值

 

准备对物化视图日志mlog$_table_name进行清理,操作步骤如下:

1、删除物化视图日志

Drop materialized view log on table_name;

2、手动刷新物化视图,检查状态

3、业务人员检查业务状态

 

应急预案

         如果删除物化视图日志后对物化视图出现影响,手动添加物化视图日志,并重建物化视图,根据系统视图(dba_mview_analysis)提供时间,一次全量刷新在7秒钟左右。

         以下为应急预案步骤:

1、create materialized view log on table_name;

2、drop materialized view MV_table_name;

3、物化视图重建语句

4、业务人员检查业务状态

你可能感兴趣的:(oracle管理)