【问题标题】:Materialized view created successfully but giving query too long error on refreshing物化视图创建成功,但刷新时查询太长错误
【发布时间】:2014-07-03 16:06:33
【问题描述】:

我创建了一个物化视图。

CREATE MATERIALIZED VIEW apps.RPRO_BILLED_CONTRACTS_MV
REFRESH COMPLETE
START WITH SYSDATE
NEXT (sysdate+1/1440) with rowid
AS "query";

它已成功创建并在选择 * 操作时返回行。 但是我想检查它是否令人耳目一新,事实证明它不是。 我将手动刷新命令运行为:

BEGIN
DBMS_SNAPSHOT.REFRESH('RPRO_BILLED_CONTRACTS_MV');
end;

现在返回错误: 错误报告

ORA-32411: materialized view definition query exceeds the maximum length
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2563
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2776
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2745
ORA-06512: at line 2

32411. 0000 -  "materialized view definition query exceeds the maximum length"
*Cause:    The materialized view definition query exceeds the 64K limit.
*Action:   Change the materialized view definition query so that it does not exceed
           the maximum length of 64K.

我很困惑,如果查询太长,怎么会创建视图并返回值但不刷新。请帮忙。

【问题讨论】:

标签: sql plsql oracle11g materialized-views


【解决方案1】:

物化视图的CREATE 进程与REFRESH 进程不同。

CREATE 期间,可以使用任意长度的 SQL 语句创建实体化视图。在REFRESH 期间,将强制执行下面描述的 64K 限制:

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6002.htm

一种可能的解决方法是链接您的物化视图创建。如果您可以将查询分解成更小的块,则可以使用子查询构建最终的物化视图,该子查询本身引用物化视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2014-04-24
    • 2013-02-05
    相关资源
    最近更新 更多