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