Deux types de snapshots peuvent être crées : simples et complexes. Un snapshot
simple ne contient pas de clause distinct, group by, connect by, de jointure
multitables ou d’opérations set.
Syntaxe
CREATE SNAPSHOT [schema.]snapshot
[ [PCTFREE integer] [PCTUSED integer]
[INITRANS integer] [MAXTRANS integer]
[TABLESPACE tablespace]
[STORAGE storage_clause]
[ USING INDEX [ PCTFREE integer | TABLESPACE tablespace
| INITTRANS integer | MAXTRANS integer
| STORAGE storage_clause ] ...
| [CLUSTER cluster (column [, column]...)] ]
[ REFRESH [FAST | COMPLETE | FORCE] [START WITH date] [NEXT date]]
AS subquery
Exemple:
Le snapshot suivant est défini de façon à extraire les données maîtres et renouveler
l’opération 7 jours plus tard.
CREATE SNAPSHOT prix_local
REFRESH COMPLETE
START with SysDate NEXT SysDate+ 7 (chaque semaine)
AS SELECT * FROM prix@bd_regional;
Sur le site d’instantané(SNAPSHOT), Oracle crée une table local dénommée
prix_local, contenant toutes les colonnes de la table maître prix. Oracle crée
une vue dénommée prix_local, définie comme étant une requête sur la table
distante prix. Il planifie aussi une tâche pour rafraîchir l’instantané.
Option 3 : Commande Vues matérialisées
A l’origine cette commande est utilisée pour sauvegarder le résultat d’une requête
dans une table.
Syntaxe
CREATE MATERIALIZED VIEW nom
[TABLESPACE … STORAGE …]
[REFRESH FAST|COMPLETE|FORCE
START WITH sysdate
NEXT sysdate+1 // en jours…
WITH PRIMARY KEY // si possible …
USING ROLLBACK SEGMENT …]
AS
SELECT…
Exemple 1 :
CREATE MATERIALIZED VIEW Ventes-par-Mois
REFRESH COMPLETE
START WITH sysdate NEXT sysdate+1 (chaque jour)
AS
SELECT mois, SUM(montant) FROM Ventes GROUP BY mois;