摘要:
最近在研究物化视图日志的结果,查询了一下系统中物化视图日志的情况,没想到却发现了一个问题:调用自己写的一个脚本,结果发现个别物化视图日志的数量已经达到了几十万:SQL> declare 2 v_output number; 3 begin 4 for c_cursor in (select tname from tab where tname like 'MLOG%') LOOP 5 execute immediate 'select count(*) from ' || c_cursor.tname into v_output; 6 dbms_outpu 阅读全文
摘要:
Oracle物化视图的快速刷新机制是通过物化视图日志完成的。Oracle如何通过一个物化视图日志就可以支持多个物化视图的快速刷新呢,本文简单的描述一下刷新的原理。首先,看一下物化视图的结构:SQL> create table t (id number, name varchar2(30), num number);表已创建。SQL> create materialized view log on t with rowid, sequence (id, name) including new values ;实体化视图日志已创建。SQL> desc mlog$_t名称 是否为空 阅读全文
摘要:
物化视图的日志清除是由Oracle自动完成的。Oracle会根据物化视图基表上的注册信息和物化视图的刷新来确定何时删除物化视图日志。物化视图的注册信息的清除则是在删除物化视图的时候进行,但是对于物化视图建立在远端数据库中的情况,物化视图注册信息的清除可能会复杂一些。如果物化视图建立在本地,则Oracle拥有所有的数据字典信息,因此,本篇所有的测试都是针对远端物化视图进行的。首先来看清除物化视图日志的例子。这个操作完全有Oracle进行,即使用户没有物化视图日志的DELETE权限也没有关系。首先,登陆远端数据库建立测试所用基表和物化视图日志:SQL> CONN TEST/TEST@TEST 阅读全文