DBMS_Snapshot.refresh 在 11g 上不起作用,物化视图错误

Posted

技术标签:

【中文标题】DBMS_Snapshot.refresh 在 11g 上不起作用,物化视图错误【英文标题】:DBMS_Snapshot.refresh not working on 11g , materialized view error 【发布时间】:2011-05-18 12:23:37 【问题描述】:

我在Oracle 10g 上执行DBMS_Snapshot.refresh 它工作正常,但是当我在Oracle 11g 上执行相同操作时,它会出现以下错误

DBMS_SNAPSHOT.refresh('Table1','F'); 

 BEGIN DBMS_SNAPSHOT.refresh('Table1','F'); END; 
 . 
 *

 ERROR at line 1: 
 ORA-23401: materialized view "localuser"."Table1" does not 
 exist 
 ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2558 
 ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2771 
 ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2740 
 ORA-06512: at line 1

非常感谢任何帮助

问候。

南迪什

【问题讨论】:

这个错误看起来很自我解释。错误信息到底有什么不清楚的地方? 【参考方案1】:

好的,这可能有很多原因。

    您尚未在 11g 中重新创建 MV。您无法刷新 MV 来创建它。

    您没有为 MV 所在的架构重新创建同义词(公共或私有)。

    您没有在另一个架构中重新创建对 MV 的授权,因此请创建它们。

您可以尝试 DBMS_MVIEW 而不是 DBMS_SNAPSHOT。

exec dbms_mview.refresh('Table1');

【讨论】:

【参考方案2】:

错误消息表明它正在以区分大小写的方式查找"Table1"。请尝试传入'TABLE1'

【讨论】:

【参考方案3】:

我的情况略有不同。 DBMS_MVIEW.REFRESH('ABC.XYZ') 调用发生在 oracle 存储过程 (SCHEMA1.PROC1) 中。我以其他用户 (UserA) 的身份调用 SP。我已将所有权限授予用户,但没有放弃。显然,oracle 似乎并不关心用户拥有的权限,它会寻找包所有者的权限.. 这很奇怪,与我到处准备的相反.. 但它确实有效

没用:

将任何实体化视图授予 UserA;

将 ABC.MLOG$_XYZ 上的选择授予 UserA;

工作:

将任何物化视图授予 SCHEMA1;

将 ABC.MLOG$_XYZ 上的选择授予 UserA,SCHEMA1;

【讨论】:

以上是关于DBMS_Snapshot.refresh 在 11g 上不起作用,物化视图错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥 (([]===[])+/-/)[1] = 'a' 和 (1+)[(1<<1)+1] = 'b' 在 javascript 中?

在 Mysql 中对“1.1.1”格式类型进行排序

有1千万个随机数,随机数的范围在1到1亿之间,将1到1亿之间没有在随机数中的数求出来

为啥 ('1'+'1') 在 Java 中输出 98? [复制]

在 iOS 10.1.1 上运行的 Xcode 9 应用程序在启动时崩溃

片段 popbackstack 行为在 25.1.0 和 25.1.1 中被破坏