select * from d1 where id='33344444'
select * from dm1 where id='33344444'
drop materialized view dm1
CREATE MATERIALIZED VIEW dm1
BUILD IMMEDIATE
REFRESH COMPLETE START WITH SYSDATE
NEXT sysdate+1/24/60/2
with rowid
as
select * from d1
delete from d1 where id like '3334444%'
insert into d1 values ('333444414','515')
update d1 set Name='Ö±ÊôÒµÎñ²¿test29' where id='110127'
select id, snaptime$$, dmltype$$ from mlog$_d1;
select sysdate , sysdate+1/24/60 from dual
exec dbms_mview.refresh('dm1')
2007年12月6日19:30:53
视图无法更新?
原因: 参数必须设置
job_queue_interval = 10 每隔这么长时间唤醒一次job
job_queue_processes = 4 后台启动这么多进程,这些进程的任务就是去唤醒job,但一个可能忙不过来,所以可能多个,每job_queue_interval 秒去检查并唤醒一次
只是这些后台进程每10秒中去检查一次
看看你的这些job是否需要执行
如果不执行它就继续回去睡10秒
需要执行则唤醒job执行自己的任务
zy: 我在测试时 oaracle 9i没有设置 job_queue_interval 只是设置了job_queue_processes
(job_queue_processes 没有设置此值 害我浪费好几个小时 测试为什么不刷新)
其它:(zy:是否必须 没有验证 ? 待测试)
需要权限:GRANT CREATE MATERIALIZED VIEW,还必须直接赋予GRANT QUERY REWRITE.为实现查询重写,必须使用CBO.
13.1 物化视图如何工作
设置
COMPATIBLE参数必须高于8.1.0
QUERY_REWRITE_ENABLED = TRUE
QUERY_REWRITE_INTEGRETY =
ENFORCED - 查询仅用Oracle强制与保证的约束、规则重写;
TRUSTED – 查询除用Oracle强制与保证的约束、规则,也可用用户设定的数据间的任何关系来重写;
STALE_TOLERATED – 即便Oracle知道物化视图中数据过期(与事实表等不同步),也重写查询。
创建物化视图的用户必须具有直接赋予的GRANT QUERY REWRITE权限,不能通过角色继承。
REVOKE QUERY REWRITE
FROM "AUTOCLAIMZHLH"
GRANT QUERY REWRITE TO "AUTOCLAIMZHLH" WITH ADMIN OPTION
REVOKE CREATE SNAPSHOT
FROM "AUTOCLAIMZHLH"
GRANT CREATE SNAPSHOT TO "AUTOCLAIMZHLH" WITH ADMIN OPTION
zy验证: job_queue_processes 必须
GRANT QUERY REWRITE TO "AUTOCLAIMZHLH" 非必须
GRANT CREATE SNAPSHOT TO "AUTOCLAIMZHLH" 非必须
QUERY_REWRITE_ENABLED = TRUE 非必须
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12548713/viewspace-45913/,如需转载,请注明出处,否则将追究法律责任。