我想在提交時快速刷新多個物化視圖。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物化視圖日誌可以作爲你需要的許多物化視圖,只要適當的約束被保留。