DBMS_Snapshot.refresh не работает на 11g, материализованная ошибка представления - PullRequest
3 голосов
/ 18 мая 2011

Я выполнил 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 ]

2 голосов
/ 19 мая 2011

ОК, может быть много причин для этого.

  1. Вы еще не воссоздали MV в 11g. Вы не можете обновить MV, чтобы создать его.

  2. Вы не воссоздали синоним (открытый или закрытый) для схемы, в которой находится MV.

  3. Вы не воссоздали гранты MV в другой схеме, поэтому создайте их.

Вы можете попробовать DBMS_MVIEW вместо DBMS_SNAPSHOT.

exec dbms_mview.refresh('Table1');
0 голосов
/ 16 января 2014

Мой случай был немного другим. Вызов DBMS_MVIEW.REFRESH ('ABC.XYZ') происходит из хранимой процедуры оракула (SCHEMA1.PROC1). Я звонил SP как другой пользователь (UserA). Я дал все разрешения пользователю, но не оплакивать. Судя по всему, oracle, похоже, не заботится о разрешениях, которые есть у пользователя, он ищет разрешения для владельца пакета ... это очень странно и противоречит тому, что я готов везде ... но это сработало

не работает:

GRANT ИЗМЕНИТЬ ЛЮБОЙ МАТЕРИАЛИЗОВАННЫЙ ВЗГЛЯД на UserA;

GRANT SELECT ON ABC.MLOG $ _XYZ TO UserA;

Работала:

GRANT ИЗМЕНИТЬ ЛЮБОЙ МАТЕРИАЛИЗОВАННЫЙ ВИД НА СХЕМУ1;

GRANT SELECT ON ABC.MLOG $ _XYZ TO UserA, SCHEMA1;

0 голосов
/ 18 мая 2011

Сообщение об ошибке предполагает, что он ищет "Table1" с учетом регистра. Попробуйте вместо этого ввести 'TABLE1'.

...