Ce matin, j'ai voulu recréer sur une base de données Oracle, une vue matérialisée avec un Fast refresh utilisant un database link. La particularité de cette vue materialisée est qu'elle utilise un dblink portant le même nom que le schéma sur lequel se trouve la table que je souhaite avoir dans ma vue matérialisée.
Il semblerait que cette particularité génère une erreur sur certaines versions d'Oracle.
SQL> CREATE MATERIALIZED VIEW local.mytable BUILD IMMEDIATE REFRESH FAST As Select * From master.mytable@master;
CREATE MATERIALIZED VIEW local.mytable BUILD IMMEDIATE REFRESH FAST As Select * From master.mytable@master
ERROR at line 1:
ORA-12018: following error encountered during code generation for "local"."mytable"
ORA-00942: table or view does not exist
Un workaround pour contourner cette erreur consiste à d'abord la vue materialisée en Complete Refresh puis de la modifier pour qu'elle utilise un Fast refresh. Donc ici pour ma table mytable:
CREATE MATERIALIZED VIEW MyMaterializedView BUILD IMMEDIATE REFRESH COMPLETE As Select * From master.mytable@master;
Alter MATERIALIZED VIEW MyMaterializedView REFRESH FAST;
Je n'ai pas trouvé d'explications claires sur le pourquoi de ce bug mais en tout cas le workaround semble bien fonctionner.
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire