Oracle 物化 View

标签 oracle

根据oracle文档,我们不能使用快速刷新方法来刷新聚合物化 View 。 我在Oracle文档中找到了这个例子: http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6002.htm

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;

每次我尝试使用聚合和快速刷新时,都会出现错误。
快速刷新和聚合功能配合使用有什么特别的技巧吗?

亲切的问候

最佳答案

根据我的调查,使用聚合函数和快速刷新方法创建MV,您的MV 并且MV日志应该有特殊的结构,以便查看MV的正确结构以及在脚本下面运行的MV日志:

begin
 dbms_advisor.tune_mview(task_name=>:t,
 mv_create_stmt=>'create materialized view mv1 refresh fast 
as select job,sum(sal)    from emp group by job');
end;

然后执行以下查询以查看所需的 MV 结构和 MV 日志:

select  dbms_lob.substr( statement, 4000, 1 ), statement from user_tune_mview
where task_name='TASK_2042' order by action_id;

关于Oracle 物化 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25720486/

相关文章:

java - 使用jdbc连接oracle数据库

oracle - 在 sqlplus 中假脱机 csv 文件时的 header 格式

c# - 如何使用 c# 将使用 odbc 源的特殊字符获取到 Oracle 数据库?

java - Oracle OLAP Java 实现 - 正确的源连接

spring - Spring 批处理中的 JdbcPagingItemReader 没有给出正确的结果

oracle - 在 PL/SQL block 中调用 SQL*Plus 命令

java - 如何清除oracle中的各个列?

oracle - PLSQL - 创建带参数的过程,但只允许 2 个值

java - 使用 LDAP 登录 OpenJDK

oracle左外连接不显示右空值