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

Était-ce utile?

La solution

OK, il peut y avoir de nombreuses raisons à cela.

  1. Vous n'avez pas encore recréé le MV en 11g. Vous ne pouvez pas rafraîchir un MV pour le créer.

  2. Vous n'avez pas recréé de synonyme (public ou privé) au schéma où se trouve le MV.

  3. 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;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top