Oracle物化日志上的多个物化视图

时间:2015-05-19 16:20:36

标签: oracle oracle11g

我希望在提交时快速刷新多个物化视图。

对于“提交时快速刷新”,您需要物化视图日志。显然,提交时快速刷新需要日志。问题是我可以有多个物化视图访问日志。

显然,我仍然需要日志来满足正常的先决条件(在所有视图中): http://docs.oracle.com/cd/B19306_01/server.102/b14223/basicmv.htm

提前为任何帮助干杯。

2 个答案:

答案 0 :(得分:3)

绝对

create table data_table as (
  select * 
  from dba_users
);

alter table data_table
add constraint data_table_test_pk PRIMARY KEY (user_id);

select * from data_table;

现在,我们的表格看起来像dba_users,约束为PRIMARY KEY

create materialized view log on data_table;

create materialized view mat_view_one
refresh fast on commit
as
select username, user_id
from data_table
;

create materialized view mat_view_two
refresh fast on commit
as
select user_id, username, account_status
from data_table;

我们的日志和2个视图创建成功。 测试表中记录SYS

select * from mat_view_one
where user_id=0;

USERNAME                          USER_ID
------------------------------ ----------
SYS                                     0

select * from mat_view_two
where user_id=0;

   USER_ID USERNAME                       ACCOUNT_STATUS                 
---------- ------------------------------ --------------------------------
         0 SYS                            OPEN                             

现在让我们更新SYS的名称并提交,看看我们的观点显示了什么:

update data_table
set username='WALTERWHITE'
WHERE USER_ID=0
;
COMMIT;
USERNAME                          USER_ID
------------------------------ ----------
WALTERWHITE                             0 

   USER_ID USERNAME                       ACCOUNT_STATUS                 
---------- ------------------------------ --------------------------------
         0 WALTERWHITE                    OPEN                             

所以是的,绝对的。只要保持适当的约束,1个物化视图日志就可以根据需要提供多个物化视图。

答案 1 :(得分:2)

是。物化视图日志可以支持任意数量的物化视图。

支持多个物化视图可能会导致日志大于支持单个物化视图时的日志,尽管这可能不是非常重要,因为您的日志可能不会长时间存储数据。如果您正在将数据复制到远程数据库(根据定义,您无法使用快速可刷新的物化视图),如果其中一个远程物化视图停止刷新或在没有源知道的情况下消失,则可能会有点棘手它可能导致数据在日志中无限排队。但是,这听起来并不像你所面临的情况。