Oracle的实体化视图(MVIEW)的深入研究之二

Oracle的实体化视图(MVIEW)的深入研究之二   <script src="http://blog.csdn.net/count.aspx?ID=1544171&Type=Rank" type="text/javascript"></script>    CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。

Oracle的实体化视图(MVIEW)的深入研究之二

转:http://www.anysql.net/oracle/reorg_master_table.html

当在一个表上建了物化视图的日志(Materialized View Log)后, 所有的DML操作都会被相应地记录到物化视图日志表(MLOG$_)中, 如果想对这个表进行操作, 但不想这些操作被记录到日志(MVIEW LOG)中, 应当怎么办呢? 在DBMS_MVIEW包中有两个过程可以用来完成这个要求. 这里我们需要打开两个会话, 其中一个会话以DBA的身份登陆(Session DBA), 另一个会话随便了(Session USER), 按如下次序来进行操作:

    在Session USER中先运行以下语句去看一下MVIEW LOG表中有多少条记录:

SQL> SELECT count(*) FROM MLOG$_T_REORG;

  COUNT(*)
----------
         0

    在Session DBA中运行BEGIN_TABLE_REORGANIZATION过程开始维护, 记得执行完后要运行COMMIT命令, 否则会阻塞(Block)别的进程:

SQL> exec dbms_mview.begin_table_reorganization('ANYSQL','T_REORG');

PL/SQL procedure successfully completed.

    在Session USER中先运行DML直接修改表的数据, 提交后看一下MVIEW LOG表中的记录有没有增加:

SQL> insert into t_reorg select * from tab;

13 rows created.

SQL> COMMIT;

Commit complete.

SQL> SELECT count(*) FROM MLOG$_T_REORG;

  COUNT(*)
----------
         0

    在Session DBA中运行END_TABLE_REORGANIZATION过程结束维护, 记得执行完后要运行COMMIT命令, 否则会阻塞(Block)别的进程:

SQL> exec dbms_mview.end_table_reorganization('ANYSQL','T_REORG');

PL/SQL procedure successfully completed.

    在Session USER中先运行一些DML语句, 检查一下MVIEW LOG表中的记录数是不是增多了:

SQL> delete t_reorg;

13 rows deleted.

SQL> commit;

Commit complete.

SQL> SELECT count(*) FROM MLOG$_T_REORG;

  COUNT(*)
----------
        13

    在这儿说了一大堆, 其实是如何让表不生成实体化视图日志的问题.  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值