ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 物化视图

oracle 物化视图

原创 Linux操作系统 作者:itpot 时间:2007-12-28 18:51:58 0 删除 编辑
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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: oracle cbo 的优化
请登录后发表评论 登录
全部评论

注册时间:2007-12-27

  • 博文量
    39
  • 访问量
    53744