Info 409 - Bases de données avancées Université Libanaise Faculté des Sciences – Section I Master 1 Informatique Info 409 - Bases de données avancées Semestre: 2 Année Universitaire: 2013/2014 Crédits: 5 Dr. Antoun Yaacoub
A faire decanat Créer une troisième base fanar hadath fanar connect c##userHadath/passHadath@hadath; connect c##userFanar/passFanar@fanar;
Utiliser SQL developer
Utiliser SQL developer
Utiliser SQL developer
A faire decanat hadath fanar CREATE TABLE EtudiantHadath( Etudiant_id number(5) PRIMARY KEY, nom VARCHAR2(20), ville VARCHAR2(20) ); commit; CREATE TABLE EtudiantFanar( Etudiant_id number(5) PRIMARY KEY, nom VARCHAR2(20), ville VARCHAR2(20) ); commit;
Peupler les 2 bases en utilisant les deux fichiers joints etudiant_hadath.sql etudiant_fanar.sql
Création d’un database link Créer des Synonymes Depuis Fanar CREATE PUBLIC DATABASE LINK lienBD_hadath CONNECT TO c##userHadath IDENTIFIED BY passHadath USING ‘Hadath.’; CREATE PUBLIC SYNONYM EtudiantHadath FOR EtudiantHadath@lienBD_Hadath; Depuis Hadath CREATE PUBLIC DATABASE LINK lienBD_Fanar CONNECT TO c##userFanar IDENTIFIED BY passFanar USING ‘Fanar.’; CREATE PUBLIC SYNONYM EtudiantFanar FOR EtudiantFanar@lienBD_Fanar;
Transparence à la Fragmentation Vues Procédures
Restreindre les accès à une BD Tout le monde ne peut pas VOIR et FAIRE n’importe quoi. de la vision VIEW RESTRICTION des actions GRANT
Restriction des accès Sous-Schéma ou schéma externe Administrateur de la base de données Utilisateur 2 Utilisateur 1
L’objet Vue Une vue est une table virtuelle Aucune implémentation physique des données La définition d’une vue est enregistrée dans le Dictionnaire des Données A chaque appel d’une vue: Le SGBD réactive sa construction à partir du Dictionnaire des Données Vue mono-table Créée à partir d’une table Vue multi-tables Créée par une jointure en forme relationnelle Attention aux modifications sur les vues !
Utilisation d’une vue Simplification des requêtes pour les non spécialistes Création de résultats intermédiaires pour des requêtes complexes Présentation différente de la base de données: Schéma externe Mise en place de la confidentialité
Créer une vue Création d’une vue faisant l’union des tables étudiants. CREATE VIEW Etudiants AS (SELECT * FROM EtudiantHadath) UNION (SELECT * FROM EtudiantFanar); commit; Tester la requête suivante: Select count(*) from Etudiants where ville in (‘baabda’,’mkalles’);
Créer une procédure stockée Ecriture d’une procédure stockée qui insère un nouvel étudiant. CREATE OR REPLACE PROCEDURE c##userHadath.INSERERETUDIANT (cetudiant IN NUMBER, cnom IN VARCHAR, cville IN VARCHAR) AS BEGIN IF (cville = 'laylake') THEN INSERT INTO EtudiantHadath VALUES (cetudiant, cnom, cville); ELSIF (cville = 'dekwaneh') THEN INSERT INTO EtudiantFanar VALUES (cetudiant, cnom, cville); ELSE DBMS_OUTPUT.PUT_LINE('La ville de etudiant est non connue!'); END IF; COMMIT; END; / Pour exécuter une procédure EXECUTE insereretudiant(501,'Ali','laylake'); EXECUTE insereretudiant(501,'Ali','dekwaneh'); set serveroutput on; EXECUTE insereretudiant(501,'Ali','msharafieh'); Vérifier vos insertions
Réplication des données COPY SNAPSHOT MATERIALIZED VIEW
les données ne peuvent pas être mises à jour COPY Répliquer régulièrement les données sur le serveur local au moyen de la commande COPY de SQL*Plus. COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)] USING query database = username[/password]@connect_identifier Exemple COPY FROM c##userFanar/passFanar@fanarDB – TO c##userHadath/passHadath@hadathDB – CREATE EtudiantdeFanar (etudiant_id, nom, ville) - USING SELECT * FROM EtudiantFanar; les données ne peuvent pas être mises à jour
hadath fanar CREATE SNAPSHOT LOG ON EtudiantFanar; commit; drop public synonym EtudiantFanar; CREATE SNAPSHOT EtudiantFanar REFRESH FAST START with SysDate NEXT SysDate+7 AS SELECT * FROM EtudiantFanar@lienBD_Fanar; select count(*) from EtudiantFanar;
SNAPSHOT Cette option utilise des snapshots pour répliquer les données depuis une source maître vers plusieurs cibles. Les snapshots peuvent être en lecture seule (ang. read-only) ou mis à jour (ang. updateable). Avant de créer un snapshot, il faut d’abord créer un lien vers la base de données source. 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.
SNAPSHOT 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 EtudiantFanar REFRESH FAST START with SysDate NEXT SysDate+7 AS SELECT * FROM EtudiantFanar@lienBD_Fanar;
SNAPSHOT Un REFRESH FAST utilise un snapshot log, pour actualiser le snapshot. Ce fichier se trouve sur le même site que la table maître. Dans le snapshot log, sont stockées les modifications intervenues sur la table maître. Ainsi, pour chaque mise à jour, seules les modifications qui sont envoyées, et non l’ensemble des données. Par contre, un REFRESH COMPLETE est obligatoire pour les snapshots complexes. Le snapshot log est à créer avant le snapshot: CREATE SNAPSHOT LOG ON EtudiantFanar; Notons que, les snapshots en mise à jour peuvent engendrer des conflits. Un déclencheur (ang. trigger) sauve les mises à jour opérées sur le snapshot et les transmet au site maître au moment du rafraîchissement du snapshot.
MATERIALIZED VIEW
Multimaster Replication
Read-Only Materialized View Replication
Updatable Materialized View Replication
Multimaster and Materialized View Hybrid Configurations
Materialized View Connected to a Single Master Site
Read-Only Materialized Views hadath fanar DROP MATERIALIZED VIEW EtudiantFanar; CREATE MATERIALIZED VIEW EtudiantFanar AS SELECT * FROM EtudiantFanar@lienBD_Fanar; SELECT count(*) from EtudiantFanar; INSERT into EtudiantFanar values (503,'Michel','Faraya');
Politique et méthodes de rafraichissement ON COMMIT ON DEMAND (il faut appeler une des procédures dans DBMS_MVIEW ) NEVER SPECIFY (spécifier des dates) Méthodes COMPLETE REFRESH FAST REFRESH (il faut créer un materialized view logs) FORCE REFRESH (appliquer FAST si c’est possible, sinon appliquer COMPLETE)
Politique et méthodes de rafraichissement Essayer des créer des vues matérialisées et des materialized view logs en utilisant SQL developer.