我希望在提交时快速刷新多个物化视图。
对于“提交时快速刷新”,您需要物化视图日志。显然,提交时快速刷新需要日志。问题是我可以有多个物化视图访问日志。
显然,我仍然需要日志来满足正常的先决条件(在所有视图中): http://docs.oracle.com/cd/B19306_01/server.102/b14223/basicmv.htm
提前为任何帮助干杯。
答案 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)
是。物化视图日志可以支持任意数量的物化视图。
支持多个物化视图可能会导致日志大于支持单个物化视图时的日志,尽管这可能不是非常重要,因为您的日志可能不会长时间存储数据。如果您正在将数据复制到远程数据库(根据定义,您无法使用快速可刷新的物化视图),如果其中一个远程物化视图停止刷新或在没有源知道的情况下消失,则可能会有点棘手它可能导致数据在日志中无限排队。但是,这听起来并不像你所面临的情况。