分类: Oracle
2008-05-23 13:15:16
来源: 作者:AnySQL.net |
|
当在一个表上建了物化视图的日志(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; 在Session DBA中运行BEGIN_TABLE_REORGANIZATION过程开始维护, 记得执行完后要运行COMMIT命令, 否则会阻塞(Block)别的进程: SQL> exec dbms_mview.begin_table_reorganization('ANYSQL','T_REORG'); 在Session USER中先运行DML直接修改表的数据, 提交后看一下MVIEW LOG表中的记录有没有增加: SQL> insert into t_reorg select * from tab; 在Session DBA中运行END_TABLE_REORGANIZATION过程结束维护, 记得执行完后要运行COMMIT命令, 否则会阻塞(Block)别的进程: SQL> exec dbms_mview.end_table_reorganization('ANYSQL','T_REORG'); 在Session USER中先运行一些DML语句, 检查一下MVIEW LOG表中的记录数是不是增多了: SQL> delete t_reorg; 在这儿说了一大堆, 其实是如何让表不生成实体化视图日志的. |