Dbms_snapshot.refresh ne fonctionne pas sur 11g, erreur de vue matérialisée
Question
J'ai exécuté DBMS_Snapshot.refresh
sur Oracle 10g
Cela a bien fonctionné, mais quand je exécute la même chose sur Oracle 11g
il donne l'erreur suivante
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
Toute aide très appréciée
Salutations.
Nandif
La solution
OK, il peut y avoir de nombreuses raisons à cela.
Vous n'avez pas encore recréé le MV en 11g. Vous ne pouvez pas rafraîchir un MV pour le créer.
Vous n'avez pas recréé de synonyme (public ou privé) au schéma où se trouve le MV.
Vous n'avez pas recréé de subventions au MV dans un autre schéma, alors créez-les.
Vous pouvez essayer DBMS_MVIEW au lieu de DBMS_SNAPSHOT.
exec dbms_mview.refresh('Table1');
Autres conseils
Le message d'erreur suggère qu'il recherche "Table1"
D'une manière sensible à la cas. Essayer de passer 'TABLE1'
Au lieu.
Mon cas était peu différent. L'appel DBMS_MVIEW.REFRESH ('ABC.XYZ') se produit à partir d'une procédure stockée Oracle (schema1.proc1). J'appelais le SP comme un utilisateur différent (USERA). J'ai donné toutes les autorisations à l'utilisateur, mais sans Awail. Apparemment, Oracle ne semble pas se soucier de l'autorisation de l'utilisateur, il cherche les autorisations pour le propriétaire du package. C'est très étrange et contraire à ce que je prépare partout .. mais cela a fonctionné
n'a pas fonctionné:
Accorder modifier toute vision matérialisée à Usera;
Grant Sélectionner sur ABC.MLOG $ _XYZ à Usera;
Travaillé:
Accorder modifier toute vision matérialisée du schéma1;
Grant SELECT sur ABC.MLOG $ _XYZ à USERA, Schema1;