ITPub博客

首页 > Linux操作系统 > Linux操作系统 > dbms_mview系列(一)

dbms_mview系列(一)

原创 Linux操作系统 作者:wisdomone1 时间:2013-02-22 16:47:08 0 删除 编辑

dbms_mview系列(一)
1,是dbms_snapshot同义词
2,更进一步理解物化视图及潜在的物化视图工作机制
3,可以刷新同一个刷新组的物化视图

操作指南:
如查询少于256字度,直接使用execute dbms_mview.explain_rewrite,否则用plsql begin end代码块.

操作限制和说明
 explain_rewrite过程不能接受超过32627个字符长度的查询.此限制同样应用于dbms_mview定义查询

dbms_mview包各子过程功能说明
Summary of DBMS_MVIEW Subprograms
 
file:///C:/Users/123/Desktop/每天工作明细/文档/oracle文档/oracle11g官方文档/appdev.112/e25788/d_mview.htm#CEGHCECB

BEGIN_TABLE_REORGANIZATION Procedure  刷新物化视图之前的准备工作

end_table_reorganization procedure    保证master table的物化视图结果有效,且master table处于合理状态

estimate_mview_size procedure         估算创建物化视图的大小,单位为byte或row

explain_mview procedure               解决物化视图或潜在物化视图是否可能适用一些情形,比如是否可增量刷新

explain_rewrite procedure             解释为何不能查询重写,优化器为何不重写一个查询

i_am_refresh procedure                返回i_am_refresh包状态的值

pmarker function                      返回源于rowid的一部分标识,用于partition change tracking,即pct

purge_direct_load_log procedure       自direct loader log清除记录,物化视图不再使用此log

purge_log procedure                   自物化视图日志清除记录

purge_mview_from_log                  同上

refresh procedure                     刷新不是同一刷新组的一或多个物化视图

refresh_all_mviews procedure          刷新所有物化视图,但不会影响对于master table or master物化视图变更.

refresh_dependent procedure           刷新基于特定的master table或master materiazlied view的物化视图,或者
                                      一系列master table或一系列master materiazlied views
                                     
register_mview procedure              启用每个物化视图的管理

unregister_mview procedure            与上相反

---重组master table前运行此过程
SQL> exec dbms_mview.begin_table_reorganization(tabowner => 'SCOTT',tabname => 'T_MV');
 
PL/SQL procedure successfully completed
--未进行dml master table前的数据
SQL> select * from mv_t;
 
                                      A
---------------------------------------
                                      1
                                      2
                                      3
                                     20
---物化视图日志有记录,因为未提交,一提交,即清除记录
SQL> select * from mlog$_t_mv;
 
         A SNAPTIME$$  DMLTYPE$$ OLD_NEW$$ CHANGE_VECTOR$$                                                                       XID$$
---------- ----------- --------- --------- -------------------------------------------------------------------------------- ----------
     22222 4000/1/1    I         N         FE                                                                               2.53333062
 
--插入数据
SQL> insert into t_mv values(99,10);
 
1 row inserted
 
SQL> commit;
 
Commit complete
---未同步到物化视图,说明begin_table_reorganization用于维护物化视图,在其维护期间,产生的日志不记录到物化视图日志中
--当然不会应用到物化视图
SQL> select * from mv_t;
 
                                      A
---------------------------------------
                                      1
                                      2
                                      3
                                     20
                                  22222
--插入数据在master table存在
SQL> select * from t_mv;
 
                                      A                                       B
--------------------------------------- ---------------------------------------
                                      1
                                      2
                                      3                                       3
                                     20                                    2222
                                  22222                                    2222
                                     99                                      10
 
6 rows selected
--结束物化视图维护
SQL> exec dbms_mview.end_table_reorganization(tabowner => 'SCOTT',tabname => 'T_MV');
 
PL/SQL procedure successfully completed
 
SQL> select * from mv_t;
 
                                      A
---------------------------------------
                                      1
                                      2
                                      3
                                     20
                                  22222
--再次插入数据
SQL> insert into t_mv values(8888,8888);
 
1 row inserted
 
SQL> commit;
 
Commit complete
--马上同步到了物化视图
SQL> select * from mv_t;
 
                                      A
---------------------------------------
                                      1
                                      2
                                      3
                                     20
                                   8888
                                  22222
 
6 rows selected
 
SQL> select * from t_mv;
 
                                      A                                       B
--------------------------------------- ---------------------------------------
                                      1
                                      2
                                      3                                       3
                                     20                                    2222
                                  22222                                    2222
                                     99                                      10
                                   8888                                    8888
 
7 rows selected                                     

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

下一篇: dbms_mview系列(二)
请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12685115