J'ai une idée que je peux accéder via un lien de base de données en tant que telle:
SQL> select count(*) from REMOTE_SCHEMA.REMOTE_VIEW@REMOTE_DB;
COUNT(*)
--------
110
Je peux créer et interroger avec succès la vue distante via un synonyme:
SQL> create synonym REMOTE_VIEW for REMOTE_SCHEMA.REMOTE_VIEW@REMOTE_DB;
Synonym created
SQL> select count(*) from REMOTE_VIEW;
COUNT(*)
--------
110
Si j'essaie de créer une vue matérialisée à l'aide du synonyme, il échoue:
SQL> create materialized view REMOTE_MV
build immediate
refresh complete
next sysdate+1
with ROWID
as
select * from REMOTE_VIEW;
ORA-00942: table or view does not exist
Créer la vue matérialisée sans le synonyme réussit:
SQL> create materialized view REMOTE_MV
build immediate
refresh complete
next sysdate+1
with ROWID
as
select * from REMOTE_SCHEMA.REMOTE_VIEW@REMOTE_DB;
Materialized view created
Des idées pourquoi utiliser le synonyme échoue? Idéalement, j'aimerais utiliser le synonyme d'isoler la vue matérialisée à partir du lien de base de données. Le lien de base de données pourrait différer en fonction de l'environnement et je souhaite que la requête de visualisation matérialisée reste la même indépendamment.
Réussi à comprendre! Vous Can Créer des vues matérialisées sur Synonymes, mais c'est mon manque de compréhension de la redéfinition basée sur les éditions (EBR) qui causait les problèmes.
Synonymes privés par défaut est éditionable:
[Éditionable | Non émis]
Utilisez ces clauses pour spécifier si le synonyme est un objet édition ou non édition si l'édition est activée pour le type d'objet de schéma Synonyme de Schema. Pour les synonymes privés, la valeur par défaut est éditionable. Pour les synonymes publiques, la valeur par défaut est non émis.
Des vues matérialisées sont toutefois des objets non évités:
tilisation de la redéfinition à base d'édition
24.1.1.2.1 Vues matérialisées
Une vue matérialisée est un objet non traité qui peut spécifier une édition d'évaluation, ce qui lui permet de dépendre des objets édition.
Créer une vue matérialisée [Schéma.] Matérialisations_View Autres_Clauses [Evaluation_edition_Clause] [Query_rewrite_clause] comme sous-requête
Où l'évaluation_edition_edition_clause est la suivante:
Évaluer en utilisant {Edition actuelle | Édition édition | NULL EDITION}
L'édition actuelle est l'édition dans laquelle l'instruction DDL est exécutée. Spécifier l'édition NULL est équivalente à l'omission de la clause qui l'inclut. Si vous omettez l'évaluation_edition_edition_édoition, les objets éditions sont invisibles lors de la résolution de noms.
J'ai donc testé avec succès deux options pour résoudre le problème:
Utilisez l'instruction Créer une vue matérialisée pour créer une vue matérialisée. Une vue matérialisée est un objet de base de données contenant les résultats d'une requête. La clause de la requête peut nommer des tables, des vues et d'autres vues matérialisées. plus
Vous ne pouvez pas créer de vue matérialisée à partir de synonyme. Je ne sais pas pourquoi voudriez-vous cela, mais nous créons une vue matérialisée comme exemple de travail.