2015-05-19 96 views

回答

1

是的。物化視圖日誌可以支持儘可能多的物化視圖。

支持多物化視圖可能會導致日誌大於它支持單個物化視圖時的日誌,儘管這可能不是非常重要,因爲您的日誌可能不會長時間存儲數據。如果您正在將數據複製到遠程數據庫(根據定義,您無法使用快速刷新的物化視圖),但如果其中一個遠程實例化視圖停止刷新或消失,而源自未知,則可能會有點棘手它可能會導致數據在日誌中無限排隊。但是,再次,這聽起來不像你面臨的情況。

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_usersPRIMARY 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物化視圖日誌可以作爲你需要的許多物化視圖,只要適當的約束被保留。