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 中?
有1千万个随机数,随机数的范围在1到1亿之间,将1到1亿之间没有在随机数中的数求出来
为啥 ('1'+'1') 在 Java 中输出 98? [复制]