3

我执行DBMS_Snapshot.refreshOracle 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

非常感谢任何帮助

问候。

南迪什

4

3 回答 3

2

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

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

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

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

您可以尝试 DBMS_MVIEW 而不是 DBMS_SNAPSHOT。

exec dbms_mview.refresh('Table1');
于 2011-05-19T07:58:19.730 回答
0

该错误消息表明它正在"Table1"以区分大小写的方式进行查找。尝试通过'TABLE1'

于 2011-05-18T12:40:48.917 回答
0

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

没用:

向用户 A 授予更改任何实体化视图;

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

工作过:

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

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

于 2014-01-16T19:24:03.080 回答