Bonjour,
Contexte :
- Logiciel Oracle 11gR2 (11.2.0.1.0) standard édition.
- Une base de prod (instance PROD) contenant des tables volumineuses dans le schema SCH.
- Une base distante (instance DIST) reliée par réseau à la demande et doit doit pouvoir faire tourner notre application est donc posséder les données de la prod.
- Une mise à jour à la demande, mais impossible de copier toutes les données via le réseau.
Solution envisagée :
Sur le server de prod :
- Création de log de vues matérialisées (MV) des tables via la commande
Sur le server distant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 create materialized view log on SCH.TABLE1 tablespace TS_MVIEWLOG
- Création des tables dans le meme schema SCH et les mêmes noms.
- Création des MV en utilisant la commande
A ce moment là, j'ai l'erreur oracle suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE MATERIALIZED VIEW SCH.TABLE1 ON PREBUILT TABLE REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT * FROM SCH.TABLE1@PROD;
En cherchant sur les forums, j'ai trouvé cette information :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE MATERIALIZED VIEW SCH.TABLE1 * ERREUR à la ligne 1 : ORA-32349: impossible de référencer la table préconstruite dans l'interrogation de définition de la vue matérialisée
voir le lien https://community.oracle.com/thread/1068463?tstart=0ORA-32349 is a new error introduced in 11g
The error message doesn't exist in 10g -- I could create the expected Deadlock error in 10g even when not using a DBLink with a simple
create materialized view abc on prebuilt table refresh fast on demand as select * from abc
Essentially you can't create an MV that way ! It becomes a self-reference.
See MetaLink (Oracle Support) Note#1068662.1
The workaround is to use a different name.
Or wait to see if a Patch for Bug#9369183 is released.
La solution proposée est de créer la MV avec un nom différent de la table sous-jacente d'après ce que j'ai compris. Mais ensuite, mon application ne marchera plus!!!
Ou alors, il faudra que je créé un alias sur toutes les MV ayant comme nom le nom d'une table existante. Je ne suis pas certain qu'Oracle me le permette (mais je n'ai pas essayé).
Le problème est que j'ai plus de 400 tables.
Si quelqu'un avait une solution à ce problème ou pouvait aller vérifier sur metalink (oracle support) si le bug a été corrigé et qu'un patch existe ça m'aiderait beaucoup. J'ai actuellement un problème d'accès à metalink et je n'arrive pas à voir la note#1068662.1 et si un patch existe .
Merci d'avance pour votre aide.
Partager