探讨实体化视图的刷新机制
Author:Kamus
Mail:kamus@itpub.net
Date:2004年10月
今天给客户搭建历史查询服务器,用oracle8i的snapshot实现,也就是9i的实体化视图。
顺手做了一下trace,看了一下刷新时候oracle后台是怎么工作的。
前期准备,使用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;
先看快速刷新,测试表是T1,创建了快照日志,用于刷新的视图是MV_T1,用户是KAMUS
执行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;
然后tkprof生成trace结果的报表,下面只是节选了其中一部分。
执行一次dbms_mview.refresh,Oracle后台会执行13个 user