|
第一种是建立在整张表上,如 create materialized view log on sales_bak with rowid,sequence;
第二种是制定表上具体的列,如
CREATE MATERIALIZED VIEW LOG ON sales WITH SEQUENCE, ROWID
(prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold)
INCLUDING NEW VALUES;
观察这两种物化视图日的定义发现,
第一种,
SQL> desc mlog$_sales_bak;
Name Null? Type
----------------------------------------- -------- ----------------------------
M_ROW$$ VARCHAR2(255)
SEQUENCE$$ NUMBER
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)
XID$$ NUMBER
第二种,
23:11:46 SQL> desc mlog$_sales;
Name Null? Type
----------------------------------------- -------- ----------------------------
PROD_ID NUMBER
CUST_ID NUMBER
TIME_ID DATE
CHANNEL_ID NUMBER
PROMO_ID NUMBER
QUANTITY_SOLD NUMBER(10,2)
AMOUNT_SOLD NUMBER(10,2)
M_ROW$$ VARCHAR2(255)
SEQUENCE$$ NUMBER
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)
XID$$ NUMBER
我的疑问是,如 create materialized view log on sales_bak with rowid,sequence;这种方式建立的日志,是如何记录那些被修改的列呢??
SQL> desc mlog$_sales_bak;
Name Null? Type
----------------------------------------- -------- ----------------------------
M_ROW$$ VARCHAR2(255)
SEQUENCE$$ NUMBER
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)
XID$$ NUMBER
这里面根本就没有任何列的信息呀??那么这个日志是怎样起到日志做用呢? |
|