Oracle DBMS_Snapshot.refresh无法在11g上工作,具体化视图错误

Oracle DBMS_Snapshot.refresh无法在11g上工作,具体化视图错误,oracle,oracle11g,ora-06512,Oracle,Oracle11g,Ora 06512,我在Oracle 10g上执行了DBMS\u 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" doe

我在
Oracle 10g
上执行了
DBMS\u 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
非常感谢您的帮助

问候


Nandish

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

好的,可能有很多原因

  • 你还没有在11g中重新制作MV。无法刷新MV来创建它

  • 您没有为MV所在的架构重新创建同义词(public或private)

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

  • 您可以尝试使用DBMS\U MVIEW而不是DBMS\U快照

    exec dbms_mview.refresh('Table1');
    

    我的情况有点不同。DBMS_MVIEW.REFRESH('ABC.XYZ')调用发生在oracle存储过程(SCHEMA1.PROC1)中。我以另一个用户(UserA)的身份调用SP。我已将所有权限授予该用户,但未授予任何权限。显然,oracle似乎并不关心用户拥有的权限,而是寻找包所有者的权限。。这很奇怪,与我在各地准备的情况相反。。但它确实起了作用

    没有工作:

    将任何物化视图授予UserA

    将ABC.MLOG$_XYZ上的SELECT授予UserA

    工作:

    允许更改SCHEMA1的任何物化视图


    将ABC.MLOG$_XYZ上的SELECT授予UserA,SCHEMA1

    这个错误看起来很能自我解释。关于错误消息,到底有什么是不清楚的?