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 ответа
ОК, может быть много причин для этого.
Вы еще не воссоздали MV в 11g. Вы не можете обновить MV, чтобы создать его.
Вы не воссоздали синоним (публичный или частный) для схемы, в которой находится MV.
Вы не воссоздали гранты 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;