標籤:oracle
1.建立原表和物化視圖日誌
SQL> create table t1(id int,name varchar2(30));Table created.SQL> alter table t1 add constraint pk_t1 primary key(id) using index;Table altered.SQL> create materialized view log on t1 with primary key;Materialized view log created.
2.建立目標表和物化視圖這裡我建立是refresh fast on commit類型的物化視圖
SQL> create table t2 as select * from t1 where 1=2;Table created.SQL> create materialized view t2 on prebuilt table refresh fast on commit as select * from t1;Materialized view created.
3.簡單測試
在t1插入一條資料,一提交t2即存在資料
SQL> insert into t1 values(1,‘A‘);1 row created.SQL> commit;Commit complete.SQL> select * from t2;ID NAME---------- ------------------------------ 1 A
4.ddl測試
通過測試我們發現物化視圖不支援ddl語句
我們給t1添加一個列和rename一個列
SQL> alter table t1 add ddl_test int;Table altered.SQL> alter table t1 rename column name to names;Table altered.SQL> select * from t2;ID NAME---------- ------------------------------ 1 A 2 4SQL> insert into t1 values(3,‘x‘,1234);1 row created.SQL> commit;Commit complete.SQL> select * from t1;ID NAMES DDL_TEST---------- ------------------------------ ---------- 1 A 2 4 3 x1234SQL> select * from t2;ID NAME---------- ------------------------------ 1 A 2 4
探索資料沒有過來,我們看一下物化視圖的定義和狀態
SQL> select dbms_metadata.get_ddl(‘MATERIALIZED_VIEW‘,‘T2‘) from dual;DBMS_METADATA.GET_DDL(‘MATERIALIZED_VIEW‘,‘T2‘)-------------------------------------------------------------------------------- CREATE MATERIALIZED VIEW "SCOTT"."T2" ("ID", "NAME") ON PREBUILT TABLE WITHSQL> select staleness from user_mviews;STALENESS-------------------COMPILATION_ERROR
Oracle 使用物化視圖實現表資料同步