from
Kamus' Oracle World http://blog.csdn.net/Kamus/archive/2004/10/18/141579.aspx
进行trace:
1,
使用DBMS_SUPPORT包,这个包默认是没有安装的,需要运行下面的命令来手动安装。
SQL>conn / as sysdba
SQL>@?\rdbms\admin\dbmssupp.sql
SQL>GRANT execute ON dbms_support TO kamus;
SQL>CREATE PUBLIC SYNONYM dbms_support FOR dbms_support;
2,
执行trace:
SQL>conn kamus
SQL>exec dbms_support.start_trace(waits=>TRUE,binds=>TRUE);
SQL>exec dbms_mview.refresh(list => 'MV_T1');
SQL>exec dbms_support.stop_trace;
3,用然后tkprof生成trace结果的报表。
执行一次dbms_mview.refresh,Oracle后台会执行13个 user SQL和92个 internal SQL,实在是一个繁杂的工作。
---------
对增量刷新, 其中一步是:
delete from "KAMUS"."MLOG$_T1" where snaptime$$ <= :1
这一步操作是比较耗费资源的,使用delete,产生redo和undo,无法降低mlog表的HWM标志,同时又是一次全表扫描,如果经常有大量更新发生,最好能定时作mlog表的truncate动作,否则这一步操作可能会越来越慢。
可以考虑在snaptime$$字段上建立索引和增大undo段的大小。
posted on 2008-04-09 15:24
桂湖山 阅读(374)
评论(0) 编辑 收藏 引用 所属分类:
oracle_plsql