表上建有基于物化视图快速刷新日志: mlog$_tabname
用sqlldr直接路径方式加载数据,mlog$日志表里面一直没有数据,导致物化视图快速刷新不了,
开始怀疑是否因为直接路径入库,buffer cache中没有表的缓存块,mlog$是否可以用内存中索引块的信息来获取数据,
后来用 insert /*+ append */ into tabname select ...测试了一下,
发现(1)即使表上建了主键索引,mlog$表也是基于主键创建,直接路径插入后,在v$BH中也可以查到索引块的信息,但是mlog$表仍然获取不到增量数据
(2)将insert操作trace下来,不使用append插入,trace文件中都会有一步 insert into mlog$_tabname的操作
(3)使用 append 方式的插入的trace里面,没有了 insert into mlog$_tabname,
而多了一个 insert into sys.sumdelta$;
完整的语句是:insert into sys.sumdelta$ (tableobj#, partitionobj#, dmloperation, scn, timestamp, lowrowid, highrowid, sequence)
values (:1, :2, :3, :4, :5, :6, :7, sys.cdc_rsid_seq$.nextval)
sys.sumdelta$的结构:
TABLEOBJ# NUMBER
PARTITIONOBJ# NUMBER
DMLOPERATION VARCHAR2(1) Y
SCN NUMBER
TIMESTAMP DATE
LOWROWID ROWID
HIGHROWID ROWID
SEQUENCE NUMBER Y
SPARE1 NUMBER Y
SPARE2 NUMBER Y
SPARE3 VARCHAR2(1000) Y
SPARE4 DATE Y
这个表里面是有数据的, 每次append插入都会在这个表中插入一条记录,但是非append方式的插入,这个表反倒没有数据生成,
我想,这里面记录的信息已经很全面了,为什么Mlog$表中还是获取不到数据呢?
因此想跟大家请教几个问题: (1)这个表的作用是什么,难道是专门用来在直接路径插入方式下维护快速刷新物化视图日志的吗?
(2)为什么这里记录了相关的信息,Mlog$表中还是获取不到数据呢?
(3)如果不是直接路径插入的话,日志表中又是如何获取增量数据信息的呢,是通过触发器吗?还是别的什么方式
劳烦各位高手解释的详细一点,太粗略听不明白
用sqlldr直接路径方式加载数据,mlog$日志表里面一直没有数据,导致物化视图快速刷新不了,
开始怀疑是否因为直接路径入库,buffer cache中没有表的缓存块,mlog$是否可以用内存中索引块的信息来获取数据,
后来用 insert /*+ append */ into tabname select ...测试了一下,
发现(1)即使表上建了主键索引,mlog$表也是基于主键创建,直接路径插入后,在v$BH中也可以查到索引块的信息,但是mlog$表仍然获取不到增量数据
(2)将insert操作trace下来,不使用append插入,trace文件中都会有一步 insert into mlog$_tabname的操作
(3)使用 append 方式的插入的trace里面,没有了 insert into mlog$_tabname,
而多了一个 insert into sys.sumdelta$;
完整的语句是:insert into sys.sumdelta$ (tableobj#, partitionobj#, dmloperation, scn, timestamp, lowrowid, highrowid, sequence)
values (:1, :2, :3, :4, :5, :6, :7, sys.cdc_rsid_seq$.nextval)
sys.sumdelta$的结构:
TABLEOBJ# NUMBER
PARTITIONOBJ# NUMBER
DMLOPERATION VARCHAR2(1) Y
SCN NUMBER
TIMESTAMP DATE
LOWROWID ROWID
HIGHROWID ROWID
SEQUENCE NUMBER Y
SPARE1 NUMBER Y
SPARE2 NUMBER Y
SPARE3 VARCHAR2(1000) Y
SPARE4 DATE Y
这个表里面是有数据的, 每次append插入都会在这个表中插入一条记录,但是非append方式的插入,这个表反倒没有数据生成,
我想,这里面记录的信息已经很全面了,为什么Mlog$表中还是获取不到数据呢?
因此想跟大家请教几个问题: (1)这个表的作用是什么,难道是专门用来在直接路径插入方式下维护快速刷新物化视图日志的吗?
(2)为什么这里记录了相关的信息,Mlog$表中还是获取不到数据呢?
(3)如果不是直接路径插入的话,日志表中又是如何获取增量数据信息的呢,是通过触发器吗?还是别的什么方式
劳烦各位高手解释的详细一点,太粗略听不明白
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22458783/viewspace-613721/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22458783/viewspace-613721/