li
  当前位置:主页 > 性能优化 > 文章内容
li
物化视图日志结构
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:12  
本文章共6997字,分5页,当前第1页,快速翻页:
 

物化视图的快速刷新要求基本必须建立物化视图日志,这篇文章简单描述一下物化视图日志中各个字段的含义和用途。


物化视图日志的名称为MLOG$_后面跟基表的名称,如果表名的长度超过20位,则只取前20位,当截短后出现名称重复时,Oracle会自动在物化视图日志名称后面加上数字作为序号。

物化视图日志在建立时有多种选项:可以指定为ROWID、PRIMARY KEY和OBJECT ID几种类型,同时还可以指定SEQUENCE或明确指定列名。上面这些情况产生的物化视图日志的结构都不相同。

任何物化视图都会包括的列:

SNAPTIME$$:用于表示刷新时间。

DMLTYPE$$:用于表示DML操作类型,I表示INSERT,D表示DELETE,U表示UPDATE。

OLD_NEW$$:用于表示这个值是新值还是旧值。N(EW)表示新值,O(LD)表示旧值,U表示UPDATE操作。

CHANGE_VECTOR$$表示修改矢量,用来表示被修改的是哪个或哪几个字段。

如果WITH后面跟了ROWID,则物化视图日志中会包含:

M_ROW$$:用来存储发生变化的记录的ROWID。

如果WITH后面跟了PRIMARY KEY,则物化视图日志中会包含主键列。

如果WITH后面跟了OBJECT ID,则物化视图日志中会包含:

SYS_NC_OID$:用来记录每个变化对象的对象ID。

如果WITH后面跟了SEQUENCE,则物化视图日子中会包含:

SEQUENCE$$:给每个操作一个SEQUENCE号,从而保证刷新时按照顺序进行刷新。

www.ixdba.net


如果WITH后面跟了一个或多个COLUMN名称,则物化视图日志中会包含这些列。

下面通过例子进行详细说明:

SQL> create table t_rowid (id number, name varchar2(30), num number);

表已创建。

SQL> create materialized view log on t_rowid with rowid, sequence (name, num) including new values;

实体化视图日志已创建。

SQL> create table t_pk (id number primary key, name varchar2(30), num number);

表已创建。

SQL> create materialized view log on t_pk with primary key;

实体化视图日志已创建。

SQL> create type t_object as object (id number, name varchar2(30), num number);
2 /

类型已创建。

SQL> create table t_oid of t_object;

表已创建。

SQL> create materialized view log on t_oid with object id;

实体化视图日志已创建。

建立环境后来看看物化视图日志中包含的自动:

SQL> desc mlog$_t_rowid
名称 是否为空? 类型
--------------------------------------- -------- -------------
NAME VARCHAR2(30)
NUM NUMBER
M_ROW$$ VARCHAR2(255)
SEQUENCE$$ NUMBER
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)

除了最基本的4列之外,由于指定了ROWID、SEQUENCE和NAME、NUM列,因此物化视图日志中包含了相对应的列。

SQL> desc mlog$_t_pk
名称 是否为空? 类型
----------------------------------------- -------- -------------
ID NUMBER
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)

主键物化视图日志中除了基本列之外还包括基本的主键。

SQL> desc mlog$_t_oid
名称 是否为空? 类型



阅读更多内容1 · 2 · 3 · 4 · 5 · 下一页>>


  上一篇: DIM-00003错误   下一篇: Oracle CAST函数不生效
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·DIM-00003错误
·减少全库导入时发生的错误(一)
·Oracle11新特性——备份恢复功能...
·安装ORACLE10201 for REDHAT AS4...
·安装Oracle10201 for REDHAT AS4...
·撤销事务报错ORA-55505
·安装ORACLE10201 for REDHAT AS4...
·RMAN CROSSCHECK命令小bug
·撤销事务指定错误的XID导致ORA-6...
·Oracle11新特性——撤销事务(二...
·Oracle CAST函数不生效
·Oracle分页查询语句(一)
·RMAN-6172错误
·清除auto.exe病毒
·物化视图的快速刷新(一)
·Oracle基本数据类型存储格式浅析...
·全文索引文档显示——标注
·将普通表转变为分区表
·物化视图——数据仓库手册
·TO_DATE函数的小问题
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接