物化视图二

一、提前条件
1、在自己的用户下创建物化视图:
a、拥有create materialized view和(create table or create any table)系统权限;
b、拥有访问基表的系统权限(select or select any table)。
 
2、在别的用户下创建物化视图:
a、拥有create materialized view的系统权限;
b、必须具有(create table)的系统权限;
c、必须具有访问别的用户表的系统权限(select or select any table)。
 
二、例子
 
例一:
CREATE MATERIALIZED VIEW LOG ON times
   WITH ROWID, SEQUENCE (time_id, calendar_year)
   INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW LOG ON products
   WITH ROWID, SEQUENCE (prod_id)
   INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW sales_mv
   BUILD IMMEDIATE
   REFRESH FAST ON COMMIT
   AS SELECT t.calendar_year, p.prod_id,
      SUM(s.amount_sold) AS sum_sales
      FROM times t, products p, sales s
      WHERE t.time_id = s.time_id AND p.prod_id = s.prod_id
      GROUP BY t.calendar_year, p.prod_id;
注:REFRESH FAST 刷新模式必须对基表创建物化视图日志表;
 
例二:
CREATE MATERIALIZED VIEW sales_by_month_by_state
     TABLESPACE example
     PARALLEL 4
     BUILD IMMEDIATE
     REFRESH COMPLETE
     ENABLE QUERY REWRITE
     AS SELECT t.calendar_month_desc, c.cust_state_province,
        SUM(s.amount_sold) AS sum_sales
        FROM times t, sales s, customers c
        WHERE s.time_id = t.time_id AND s.cust_id = c.cust_id
        GROUP BY t.calendar_month_desc, c.cust_state_province;
注:1、PARALLEL 4允许并行操作,并行度是4。
     2、REFRESH COMPLETE不需要对基本建立物化视图日志。
例三:
with primary key:
CREATE MATERIALIZED VIEW catalog  
   REFRESH FAST START WITH SYSDATE NEXT  SYSDATE + 1/4096
   WITH PRIMARY KEY
   AS SELECT * FROM product_information;
 
with rowid:
CREATE MATERIALIZED VIEW order_data REFRESH WITH ROWID
   AS SELECT * FROM orders;
例四:
CREATE MATERIALIZED VIEW LOG ON employees
   WITH PRIMARY KEY
   INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW emp_data
   PCTFREE 5 PCTUSED 60
   TABLESPACE example
   STORAGE (INITIAL 50K NEXT 50K)
   REFRESH FAST NEXT sysdate + 7
   AS SELECT * FROM employees;
注:1、没有包含 START WITH语句,所有oracle会在next周期(当前日期的下一周)进行更新。
    2、每周更新一次。
    3、由于包含物化视图日志,并且更新方式是fash,物化视图不会立刻建立,会在7天后建立。
 
例五:
CREATE MATERIALIZED VIEW all_customers
   PCTFREE 5 PCTUSED 60
   TABLESPACE example
   STORAGE (INITIAL 50K NEXT 50K)
   USING INDEX STORAGE (INITIAL 25K NEXT 25K)
   REFRESH START WITH ROUND(SYSDATE + 1) + 11/24
   NEXT NEXT_DAY(TRUNC(SYSDATE), 'MONDAY') + 15/24
   AS SELECT * FROM sh.customers@remote
         UNION
      SELECT * FROM sh.customers@local;
注:1、oracle会在第二天上午11点更新物化视图,以后每天下午3点更新物化视图。
     2、默认的更新方式是 FORCE。
     3、由于子查询包含 UNION操作,所以更新方式不支持 FAST,oracle自动 complete刷新。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7204674/viewspace-621179/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7204674/viewspace-621179/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值