【问题标题】:Why can't I set QUERY_REWRITE_ENABLED to TRUE?为什么我不能将 QUERY_REWRITE_ENABLED 设置为 TRUE?
【发布时间】:2017-10-31 10:02:01
【问题描述】:

我正在尝试为 Oracle 数据库创建物化视图,但出现此错误:

我尝试使用“alter session set QUERY_REWRITE_ENABLED = TRUE;”来更改会话和系统,但没有任何效果。

知道可能出了什么问题吗?

我的代码是:

create materialized view First
refresh complete on commit 
enable query rewrite
as
select id,user_id
from answers;

【问题讨论】:

  • 您使用的是哪个版本的 Oracle?不是版本,而是版本,如“标准”、“企业”等。看看select * from v$version 怎么说。您的版本可能不支持查询重写。
  • 我使用的是 Express 版
  • 那么这就是你的答案。在docs.oracle.com/database/121/DBLIC/editions.htm#DBLIC109 上搜索搜索词“rewrite”。您会发现查询重写仅在企业版中可用。顺便说一句,如果您只是学习,您可以免费安装和使用企业版。但是,对于商业用途,情况并非如此。
  • 是的,只是为了学习。谢谢!
  • 附加好处:如果您正在学习(并且真的想在 Oracle 中做得很好),您将从开始学习 Oracle 12 中的所有新事物中受益:多租户设置、MATCH_RECOGNIZE 子句、 CROSS APPLY 等 - 都在企业版中,这将允许您使用比 Express 版更多的功能。 (根据经验 - 我经历了与您相同的步骤,并且我对查询重写有同样的问题;有人给了我正是我现在在这里分享的信息。)

标签: oracle ddl materialized-views


【解决方案1】:

OP 澄清说她使用的是快捷版。话虽如此:

https://docs.oracle.com/database/121/DBLIC/editions.htm#DBLIC110 上搜索搜索词“rewrite”。您会发现查询重写仅在企业版中可用。顺便说一句,如果您只是学习,您可以免费安装和使用企业版。但是,对于商业用途而言,情况并非如此。

(提供的链接适用于 Oracle 数据库版本 12.1。Express Edition 中的当前可用版本是 11.2;您可以通过 Google 搜索“Oracle 11.2 Oracle”找到 Oracle 11.2 版本(包括 Express 版本)的相应文档数据库版本”。)

【讨论】:

    猜你喜欢
    • 2014-09-23
    • 2011-09-06
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2020-12-03
    • 2012-08-14
    • 1970-01-01
    相关资源
    最近更新 更多