En Oracle, convertir table en snapshot

Présentation
On a plusieurs base de données dans différents sites qui sont reliées à une base de données consolidé.

La préoccupation est que les données fondamentales ne sont pas uniformes dans les bases de données, pour cela on a pensé de standardiser ces données en mettant les données en question dans la base de données consolidé, et les autres base de données vont les recupérer directement, sachant que toutes les bases sont en production.

Là, nous avons pensé aux snapshots sans perturber les bases de données.

Nous avons trouvé une astuce qui est comme suite:




Créer un snapshot en mode rafraichissement rapide (fast)


* Dans la base consolisée:


CREATE MATERIALIZED VIEW LOG ON la_table_consolide
NOCACHE
LOGGING
NOPARALLEL
WITH PRIMARY KEY;





* Dans les autres bases

Suposant qu'on a la table intitulée la_table.



create materialized view la_table_mv
REFRESH FAST ON DEMAND
WITH PRIMARY KEY
as
select * from la_table_consolide@test



delete from sys.obj$ t where t.name='LA_TABLE_MV' and t.type#=2;
commit;
update sys.obj$ t set t.name='LA_TABLE_MV' where t.name='LA_TABLE' and t.type#=2;
commit;


MERGE INTO sys.sum$ B
USING sys.obj$ A
on (A.NAME=B.CONTAINERNAM and B.CONTAINERNAM='LA_TABLE_MV' and A.type#=2)
WHEN MATCHED THEN
UPDATE SET B.CONTAINEROBJ# = A.OBJ#;
commit;


Ça marche bien sans perturbation de la base de donnée et sans perte de données.[/QUOTE]
Téléchargement
Détails
Avatar de islamov islamov
Membre expérimenté
Voir tous les téléchargements de l'auteur
Licence : Non renseignée
Date de mise en ligne : 9 décembre 2015
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.