学习ORACLE-物化视图(MATERIALIZED VIEW)总结

数据仓库项目中使用物化视图推送数据,现记录一下相关方面的知识。
物化视图需要有基表,基表可以在本地库,也可以在远程库。可以在本地通过数据库链接访问远程库的基表

基表:hr.departments@orcl
物化视图:scott.departments@orcl1

1.快速刷新的物化视图需要在基表上建立物化视图日志

在orcl库hr用户上的departments上创建物化视图日志

CREATE MATERIALIZED VIEW LOG ON DEPARTMENTS;
SELECT * FROM ALL_MVIEW_LOGS;

查询数据字典发现生成了一个基于主键的物化视图日志MLOG$_DEPARTMENTS,结构如下

NAME TYPE
DEPARTMENT_ID NUMBER(4)
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)
XID$$ NUMBER

DEPARTMENT_ID:基表的主键,默认创建的物化视图日志为子句 with primar key,日志表会包含基表的主键列;
SNAPTIME$$:填充刷新时间;
DMLTYPE$$:填充DML操作的类型,I表示插入、D表示删除、U表示更新;
OLD_NEW$$:表示值的新旧,N表示新值,对应插入操作;O表示旧值,对应删除操作;U表示更新值,对应更新操作;
CHANGE_VECTOR$$:表示修改矢量,用来表示被修改的是哪个或哪几个字段 ;
XID$$:基于current scn类型的物化视图日志会用到XID列,该列与current scn 的对应关系存储在视图ALL_SUMMAP中;

创建物化视图日志的标准语句为

create_materialized_vw_log::=
CREATE MATERIALIZED VIEW LOG
  ON [ schema. ] table
  [ physical_attributes_clause
  | TABLESPACE tablespace
  | logging_clause
  | { CACHE | NOCACHE }
    [ physical_attributes_clause
    | TABLESPACE tablespace
    | logging_clause
    | { CACHE | NOCACHE }
    ]...
  ]
  [ parallel_clause ]
  [ table_partitioning_clauses ]
  [ WITH { OBJECT ID
         | PRIMARY KEY
         | ROWID
         | SEQUENCE
         | (column [, column ]...)
         }
           [, { OBJECT ID
              | PRIMARY KEY
              | ROWID
              | SEQUENCE
              | (column [, column ]...)
              }
           ]...
    [ new_values_clause ]
  ] ;
  
  physical_attributes_clause::=
  [ { PCTFREE integer
  | PCTUSED integer
  | INITRANS integer
  | storage_clause
  }
    [ PCTFREE integer
    | PCTUSED integer
    | INITRANS integer
    | storage_clause
    ]...
]

logging_clause::=
{ LOGGING | NOLOGGING }

parallel_clause::=
{ NOPARALLEL | PARALLEL [ integer ] }

new_values_clause::=
{ INCLUDING | EXCLUDING } NEW VALUES

关键字解读
OBJECT ID:则物化视图日志中会包含SYS_NC_OID$,用来记录每个变化行的对象标识符;
PRIMARY KEY:则物化视图日志中会包含主键列;
ROWID:则物化视图日志中会包含M_ROW$$,用来存储发生变化所有行的ROWID;
SEQUENCE:物化视图日志中会包含SEQUENCE$$,用来记录DML操作顺序的编号,保证刷新按顺序刷新,由于无法唯一定位记录,一般不单独使用&#

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值