DBMS_Snapshot.refresh не работает на 11g, материализованная ошибка представления

Я казнил 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 ответа

Решение

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

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

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

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

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

exec dbms_mview.refresh('Table1');

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

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

не работал:

GRANT ALTER ЛЮБОГО МАТЕРИАЛИЗИРОВАННОГО ВИДА НА UserA;

GRANT SELECT В ABC.MLOG$_XYZ TO UserA;

Работал:

GRANT ALTER ЛЮБОГО МАТЕРИАЛИЗИРОВАННОГО ВИДА НА SCHEMA1;

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

Другие вопросы по тегам