暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 更新实体化视图-无法呈现实体化视图DDL。.. 使用DBMS_METADATA尝试内部生成器

askTom 2017-02-17
738

问题描述

我知道它效率不高,但是由于我在拥有表空间的Oracle数据库上拥有特权,因此我一直在运行SSIS程序包以每天删除并重新创建约20个表。用于报告查询的表。花了两个小时。我从SQL SERVER运行SSIS,通过加入来自JOSH @ Clarity (不允许用户创建表) 的表,在JOSH @ DabaseA上创建表。本周,我让他们允许我在JOSH @ DatabaseA上实现观点。我使用 “在预建表” 子句创建了它们。我可以在表空间中看到MVs,但是它们今天没有按编程刷新,当我手动刷新它们时,它只允许完全刷新。

下面是我在评估其中一个视图时在SQL Developer的 “SQL” 选项卡下得到的内容。下面是MV创作脚本。我已经搜索过,但找不到列出的错误的答案。我也不知道错误与什么有关。MV最初是创建的。我能够强制完全刷新,但不能快速刷新。我不知道当它没有刷新这个AM时发生了什么。这就是这个错误的原因吗?为什么要发表评论?当我创建MV或尝试刷新时,此评论是否出现?我打电话给我的数据库只是想问我是否有DBMS_METADATA的特权,他说,“可能是在JOSH @ DatabaseA上,可能不是在JOH @ DatabaseB上”,但他不知道这是否与我所看到的有关。这个错误是什么,它阻止我更新吗?

-- Unable to render MATERIALIZED VIEW DDL for object JBERRIS.PASASTATUS with DBMS_METADATA attempting internal generator.
CREATE MATERIALIZED VIEW PASASTATUS 
LOGGING 
TABLESPACE USERS 
PCTFREE 10 
INITRANS 1 
STORAGE 
( 
  INITIAL 65536 
  NEXT 1048576 
  MINEXTENTS 1 
  MAXEXTENTS UNLIMITED 
  BUFFER_POOL DEFAULT 
) 
NOCOMPRESS 
NOCACHE 
NOPARALLEL AS 
Select unique
      facte.AN_EPISODE_ID, 
      first_value(conce.CONCEPT_VALUE) over (partition by facte.an_episode_id order by conce.cur_value_datetime desc) as ASAstatus,
      facte.AN_Date as AnesDate
    from
      F_AN_RECORD_SUMMARY@clarity facte
      inner join HNO_INFO@clarity notee                                          on facte.AN_53_ENC_CSN_ID = notee.PAT_ENC_CSN_ID
      inner join NOTE_CONCEPT@clarity conce                                      on notee.NOTE_ID = conce.HNO_ID
    where 
      notee.IP_NOTE_TYPE_C                                                = 24 /* 24 is preop note, 25 is post op */
      and conce.CONCEPT_ID                                                      = 'EPIC#10040'  
      and  facte.AN_EPISODE_ID in (select an_episode_id from F_AN_RECORD_SUMMARY@clarity fan3  inner JOIN OR_LOG@clarity orlclz2 ON      orlclz2.LOG_ID = fan3.LOG_ID Where orlclz2.LOC_ID  IN (4060020, 4060021,4060022, 1170004))
      and facte.AN_DATE  >='01-oct-15'
复制




MV创建SQL
CREATE MATERIALIZED VIEW "JBERRIS"."PASASTATUS" ("AN_EPISODE_ID", "ASASTATUS", "ANESDATE")
  ON PREBUILT TABLE WITH REDUCED PRECISION
  USING INDEX 
  REFRESH FORCE ON DEMAND START WITH sysdate+0 NEXT (Sysdate + 1) + 7/24
  USING DEFAULT LOCAL ROLLBACK SEGMENT
  USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
  AS Select unique
      facte.AN_EPISODE_ID, 
      first_value(conce.CONCEPT_VALUE) over (partition by facte.an_episode_id order by conce.cur_value_datetime desc) as ASAstatus,
      facte.AN_Date as AnesDate
    from
      F_AN_RECORD_SUMMARY@clarity facte
      inner join HNO_INFO@clarity notee                                          on facte.AN_53_ENC_CSN_ID = notee.PAT_ENC_CSN_ID
      inner join NOTE_CONCEPT@clarity conce                                      on notee.NOTE_ID = conce.HNO_ID
    where 
      notee.IP_NOTE_TYPE_C                                                = 24 /* 24 is preop note, 25 is post op */
      and conce.CONCEPT_ID                                                      = 'EPIC#10040'  
      and  facte.AN_EPISODE_ID in (select an_episode_id from F_AN_RECORD_SUMMARY@clarity fan3  inner JOIN OR_LOG@clarity orlclz2 ON      orlclz2.LOG_ID = fan3.LOG_ID Where orlclz2.LOC_ID  IN (4060020, 4060021,4060022, 1170004))
      and facte.AN_DATE  >='01-oct-15';
复制


专家解答

该错误不是从数据库中返回SQL Developer。它想要使用DBMS_METADATA来获取一些DDL,并且它失败了 (最典型的是访问包本身或数据字典的某些元素的权限不足),所以SQL Dev退回到查询数据字典本身,而不是使用DBMS_METADATA。

因此,这与您是否可以进行快速刷新无关。为了最好地了解为什么MV可以 (或不能) 快速刷新,请查看DBMS_MVIEW.EXPLAIN_MVIEW工具。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论