DBMS_Snapshot.refresh无法处理11g,物化视图错误

时间:2011-05-18 12:23:38

标签: oracle oracle11g ora-06512

我在DBMS_Snapshot.refresh上执行了Oracle 10g它工作正常,但是当我在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

3 个答案:

答案 0 :(得分:2)

好的,可能有很多原因。

  1. 你没有在11g中重新创建MV。你无法刷新MV来创建它。

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

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

  4. 您可以尝试DBMS_MVIEW而不是DBMS_SNAPSHOT。

    exec dbms_mview.refresh('Table1');
    

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我的情况略有不同。 DBMS_MVIEW.REFRESH('ABC.XYZ')调用从oracle存储过程(SCHEMA1.PROC1)发生。我将SP称为不同的用户(UserA)。我已经向用户授予了所有权限,但没有给出任何意见。显然,oracle似乎并不关心用户拥有的权限,它会查找包所有者的权限..这很奇怪,与我到处准备的相反......但它确实有效

没有用:

授予对UserA的任何物质化视图;

将ABC.MLOG $ _XYZ上的选择权交给UserA;

曾为:

授予对SCHEMA1的任何物质化视图;

将ABC.MLOG $ _XYZ选择为UserA,SCHEMA1;