1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| --1--Creation du log pour la vue matérialisée rafraichie en FAST obligatoire
CREATE MATERIALIZED VIEW LOG ON account.STRUCTURE_SOCIETE;
-- oracle va créer une nouvelle table préfixé par MLOG$_ : account.MLOG$_STRUCTURE_SOCIETE. Cette table reprend la clé primaire et trace toutes les opérations (insert/update/delete)
--2--Création vue matérialisée en mode Fast refresh ON DEMAND
CREATE MATERIALIZED VIEW account.MV_TEST REFRESH FAST
AS SELECT * FROM account.STRUCTURE_SOCIETE
--3--Test de la vue matérialisée précédemment créée
SELECT * FROM account.MV_TEST
------------------
--4--OPERATIONS d'insert/update/delete pour test sur la table maitre
UPDATE account.STRUCTURE_SOCIETE
SET nom='A DETRUIRE----'
WHERE societe=5 AND division=1
INSERT INTO account.STRUCTURE_SOCIETE(groupe, societe, division, nom)
VALUES (1,5,7,'Test 7')
INSERT INTO account.STRUCTURE_SOCIETE(groupe, societe, division, nom)
VALUES (1,5,8,'Test 8')
DELETE FROM account.STRUCTURE_SOCIETE
WHERE groupe=1 AND societe=5 AND division=7
------------------
--5--LOG de la VM
--Détecte les insert/update/delete réalisés sur la table maitre depuis le dernier refreh de la VM
SELECT * FROM account.MLOG$_STRUCTURE_SOCIETE
------------------
--5REFRESH DE LA VM
EXECUTE DBMS_REFRESH.MAKE('groupeDWH','account.MV_TEST',NULL,NULL);
--LES INFORMATIONS DE LA TABLE DE LOG account.MLOG$_STRUCTURE_SOCIETE sont utilisées pour le refresh de la VM. Une fois lopération terminée par Oracle, la table de log est automatiquement vidée. |
Partager