Académique Documents
Professionnel Documents
Culture Documents
Introduction
Dans un SGBDRé, on suppose que les données soient stockées
sur au moins deux sites.
Dans ce TP, nous allons utiliser au moins deux ordinateurs
(on peut utiliser un ordinateur et une machine virtuelle) avec
Oracle installé sur chacun
Les deux ordinateurs utilisés doivent être reliés grâce à un
réseau TCP/IP
Introduction
Pour se connecter au SGBD Oracle, il faut fournir trois
paramètres :
Le nom d'utilisateur
Le mot de passe
L'alias : il renseigne sur plusieurs données à la fois :
• Le protocole réseau utilisé pour accéder à la machine cible,
• Le nom ou l'adresse de la machine cible sur laquelle se situe le serveur,
• Le SID cible ou le nom global de la base,
• Le port d'écoute du serveur.
Introduction
Le processus d'écoute Oracle (LISTNER):
Le processus d'écoute Oracle est un service permettant à des clients
d'utiliser le protocole TCP pour accéder une base de données
distante
Le fichier de configuration du LISTENR se trouve dans
$ORACLE_HOME/Network/Admin/ et se nomme « listener.ora ».
Dans ce fichier on peut configurer :
• le nom de la machine (HOST), le port (par défaut est 1521) et le nom du
service d’écoute (DEFAULT_SERVICE_LISTENER).
Utiliser Oracle Net Manager pour configurer le LISTENER
Introduction
Le processus d'écoute Oracle (LISTNER):
Protocole = TCP,
HOST = Pc-de-hp,
PORT = 1521
DEFAULT_SERVICE_LISTENER = (XE).
NB: Lorsqu’un lien est référencé par une instruction SQL, Oracle
ouvre une session dans la base distante et y exécute l’instruction
La session reste ouverte au cas où elle serait de nouveau nécessaire
• Pour tester:
SELECT *FROM perso;
Transparence vis-à-vis de la localisation:
Synonymes
Exemple (suite):
Sur le deuxième site:
• On suppose qu’il existe une table nommée « profession » sur le site 1.
• Sur le site 2, on va créer un synonyme noté « profession » pour cette table sur
le site 1
• Pour tester:
SELECT *FROM profession ;
Pour supprimer un synonyme:
DROP SYNONYM nom_du_synonyme;
Exemple
CREATE TRIGGER tr_emp10
INSTEAD OF INSERT ON emp10
FOR EACH ROW
BEGIN
INSERT INTO emp VALUES (:new.NO, :new.nom, :new.n_dept ,:new.age);
END ;
Duplication
La première option consiste à répliquer régulièrement les
données sur le serveur local.
Duplication synchrone: diffuser immédiatement les modifications apportées
aux données sources vers les copies
• Utilisation des TRIGGER ou TRIGGER INSTEAD OF
Duplication asynchrone: diffuser les modifications apportées aux données
sources vers les copies à des intervalles prédéfinis.
• utilisation de SNAPSHOT (clichés) ou Mateliarised view (vues matérialisées)
Duplication Asynchrone
Snapshots:
Un snapshot est une copie conforme d'une table (ou
plusieurs) située sur une base de donnée du système
distribué
Il permet de diminuer les coûts réseau, en rendant local les données
situées à distance
• Afin d'assurer la cohérence de données, une mise à jour régulière
et automatique est effectuée à partir du site d'origine ou
MASTER
2 types: en lecture seule (read-only) ou mis à jour
(updateable)
Duplication
Asynchrone (suite)
Les read-only Snapshots: non modifiables à partir du site
esclave.
Syntaxe:
CREATE SNAPSHOT nom_snapshot
[REFRESH FAST | COMPLETE | FORCE]
START WITH date_de_debut_de_synchronisation
NEXT date_de_la_prochaine_synchronisation
AS requéte_select;
FAST: Le mode rapide permet de faire un rafraîchissement en tenant compte seulement des
mises à jour effectuées sur le site Maître.
Un SNAPSHOT LOG doit être crée pour la table Maître afin de noter les différents changements
subvenus qui seront répercutés sur le snapshot:
CREATE SNAPSHOT LOG ON nom_de_la_table;
Duplication
Asynchrone (suite)
Les read-only Snapshots: non modifiables à partir du site
esclave.
Syntaxe:
CREATE SNAPSHOT nom_snapshot
[REFRESH FAST | COMPLETE | FORCE]
START WITH date_de_debut_de_synchronisation
NEXT date_de_la_prochaine_synchronisation
AS requéte_select;
FORCE: Un rafraîchissement rapide est d'abords tenté; s'il ne marche pas le rafraîchissement
complet est effectué.
Duplication
Asynchrone (suite)
Les read-only Snapshots: non modifiables à partir du site
esclave.
Syntaxe:
CREATE SNAPSHOT nom_snapshot
[REFRESH FAST | COMPLETE | FORCE]
START WITH date_de_debut_de_synchronisation
NEXT date_de_la_prochaine_synchronisation
AS requéte_select;
Exemple:
CREATE SNAPSHOT emp_snap_fast
REFRESH FAST START WITHSysdate NEXT Systdate + 1
AS SELECT * FROM emp@site1tosite2 WHERE n_dept = 10 ;