TP8 - Gestion Transactionnelle



Documents pareils
Cours Bases de données 2ème année IUT

Bases de données et sites WEB Licence d informatique LI345

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

TP Contraintes - Triggers

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Notes de cours : bases de données distribuées et repliquées

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Cours Bases de données 2ème année IUT

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Bases de données avancées

TP11 - Administration/Tuning

Devoir Data WareHouse

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Année Universitaire 2009/2010 Session 2 de Printemps

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Bases de Données relationnelles et leurs systèmes de Gestion

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Cours de Base de Données Cours n.12

//////////////////////////////////////////////////////////////////// Administration bases de données

TP Administration Oracle

Corrigés détaillés des exercices

A QUOI SERVENT LES BASES DE DONNÉES?

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Implémentation des SGBD

Administration des bases de données. Jean-Yves Antoine

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Bases de Données Avancées PL/SQL

A QUOI SERVENT LES BASES DE DONNÉES?

Attaques applicatives

Le Langage SQL version Oracle

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Auto-évaluation Oracle: cours de base

Bases de données et sites WEB

Bases de données relationnelles

Chapitre 5 : Les procédures stockées PL/SQL

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Gestion des utilisateurs et de leurs droits

Présentation du module Base de données spatio-temporelles

TP Bases de données réparties

Bases de Données Réparties

Réplication des données

Master Exploration Informatique des données DataWareHouse

Administration des bases de données

Eléments de base de la sécurité des bases de données

Historisation des données

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

OpenPaaS Le réseau social d'entreprise

UNION INTERCEPT SELECT WHERE JOINT FROM ACID

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Intégrité sémantique dans les bases de données relationnelles

CREATION WEB DYNAMIQUE

Bases de données avancées Concurrence d'accès et reprise

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

Sécurité Oracle Gérard Schaller Grifes 28 Octobre 2003

Cours Bases de données

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Base de données II Module 3b

420-PK6-SL Banques de données Avancées. UTILISATEURS (suite)

L objet de cet article est de présenter succinctement ces possibilités.

Oracle 11g Optimisez vos bases de données en production (ressources matérielles, stockage, mémoire, requêtes)

TP Programmation Java / JDBC / Oracle

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Le langage SQL Rappels

Vincent Augusto

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Structure fonctionnelle d un SGBD

PHP 4 PARTIE : BASE DE DONNEES

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

SQL Historique

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

I/ Présentation. On considère une BD CIRQUE dont le schema conceptuel : PERSONNEL _CIRQUE (NOM, ROLE) ;

Gestion de base de données

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Introduction au PL/SQL Oracle. Alexandre Meslé

Module BDR Master d Informatique (SAR)

Mysql. Les requêtes préparées Prepared statements

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

Configurer la supervision pour une base MS SQL Server Viadéis Services

1 Position du problème

Introduction aux bases de données

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Pratique et administration des systèmes

Création et Gestion des tables

MariaDB/MySQL Avancé. Pierre Mavro Creative Commons License

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Secteur Tertiaire Informatique Filière étude - développement. Accueil. Apprentissage. Période en entreprise. Evaluation.

VIII- Circuits séquentiels. Mémoires

Comprendre les bases de données

Transcription:

TP8 - Gestion Transactionnelle MIAGE #3-2006/2007 November 29, 2006 1 Transactions sous Oracle Il est nécéssaire pour ce T.P. de travailler par binômes connectés simultanement (sous SQL*PLUS) sur deux machines voisines. Les manipulations qui suivent attaqueront une table Donnees(nom char(5), valeur number(3)). Vous devez donc créer cette table, et la rendre accessible (tout privilège) aux deux expérimentateurs 1. Vous initierez cette table de façon à ce qu elle contienne les tuples: (A, 0), (B,0), (C, 0). Par la suite, lorsqu on écrira:, il faut comprendre select nom, valeur from donnees where nom= A ;, il faut comprendre update donnees set valeur = valeur +1 where nom = A. Avousdecréer les scripts sql appropriés. Réaliser les manipulations suivantes et surtout analyser leur comportement. Avant chaque nouvelle manipulation, on terminera les transactions en cours (si ce n est pas fait) dans chaque des sessions. 1.1 Transactions Standards 1.1.1 Manip. 1à moins que les deux expérimentateurs se connectent sous le même nom de user Oracle 1

Montrer que cet exemple suffit à montrer qu en mode standard, les transactions sous øne sont pas (toujours) sérialisables. 1.1.2 Manip. select B select B Commentez les situations aux instants t 1 et t 2. 1.1.3 Manip. for update update C(+1) -- Commentez les situations aux instants t 1 et t 2. 1.2 Transaction Read Only (ne pas traîter) 1.2.1 Manip. set transaction read only 2

t -- A l instant t combien de valeurs de A sont présentes dans le système, àquoi correspondent-elles? 1.3 Verrouillage Explicite 1.3.1 Manip. lock table donnees in share mode select B for update select B -- Comment expliquez-vous ce qui s est passé auxinstantst 1,t 2? 1.3.2 Manip. lock table donnees in exclusive mode for update Comment expliquez-vous ce qui s est passé auxinstantst 1 et t 2? 1.3.3 Manip. lock table donnees in share mode lock table donnees in share mode Comment expliquez-vous ce qui s est passé auxinstantst 1 et t 2? 3

1.3.4 Manip. Au travers d une form ADF Développer une form (dans le cadre ADF) réalisant un interfacage graphique de la table haras. Lancer (sur un même poste, ou sur des postes différents) deux executions de celle-ci. Observez et reportez ce qu il se passe lorsque : - on modifie dans l une et l autre des lignes distinctes - on modifie dans l une et l autre les mêmes lignes et que l on effectue des opérations de, rollback. 2 Capture de l exception deadlock Créer la procedure suivante qui a pour effet de verrouiller une ligne donnée de la table donnees et qui intercepte l exception levéelorsquelesystème détecte et corrige un deadlock. create or replace procedure lock_ligne(x char) is deadlock exception ; pragma exception_init(deadlock, -00060); begin update donnees set valeur=valeur+1 where nom = x ; exception when deadlock then dbms_output.put_line( detection deadlock ); when others then dbms_output.put_line( autres ); end Soit l ordonnancement transactionnel suivant : T1 T2 --------------------------------------+------------------------------------- t0 select * from donnes select * from donnes; lock_ligne( A ) lock_ligne( B ) lock_ligne( B ) lock_ligne( A ) select * from donnees ; select * from donnees ; ; Question 1 Expliquer le résultat des select en t 0,t 1,t 2, dire en quoi cette expérience démontre que l action entreprise par le système lors de la détection d un deadlock est bien différente d un rollback. 4

3 Simulation Exclusion Mutuelle On souhaite exploiter le verrou exclusif détenu par une transaction sur les lignes qu elle met à jour pour simuler un mécanisme d exlusion mutuelle. Ainsi, on constituera une table pieces(idpiece number,...) dont les lignes correspondront à un lot de pièces devant subir divers traitements. On supposera qu une pièce ne peut subir à un même moment qu un seul traitement (exclusion mutuelle/ processus effectuant les traitements). Chaque traitement de pièce s effectuera selon une certaine durée qui pourra être fixe ou aléatoire 2 Ainsi d un traitement λ de durée d sur la pièce d identifiant x s apparentera à la transaction suivante: -- verrouillage de la "pièce" par la transaction (traitement) update piece set.. =... where idpiece = x; dbms_lock.sleep(d); -- libération de la "pièce" ; Afin de suivre la sequence d événements (traitements d une pièce), on met en place une table trace(heure 3, traitement, piece, duree) dans laquelle on mémorisera, au fur et àmesuredeleurdéclenchement, les differents traitements que subissent les pièces. Question 2 Ecrire une procédure stockée appliquertraitementdf(nomtraitement varchar2, df number) qui fait subir le traitement nomtraitement de durée fixe df àtouteslespièces. Question 3 Ecrire une procédure stockée appliquertraitementda(nomtraitement varchar2, dmax number) qui fait subir le traitement nomtraitement de durée aléaloire limitée à dmax à toutes les pièces. Question 4 Tester seule chacune de ces procédures. Comparer en exploitant les traces, la durée totale du traitement (entre le début du traitement de la première pièce et la fin du traitement de la dernière) et le temps effectif de traitement (somme des durées de chacun des traitements élémentaires de pièce). Ouvrez deux sessions sous le même compte (concurrentes) d Oracle (par exemple sous Sql/Plus depuis vos deux postes). Lancer au même moment depuis ces deux sessions des appels de procédures appliquertraitement[df/af](). On pourra traîter les questions suivantes 2 dbms random.value renvoit un nombre alétoire compris entre 0 et 1; dbms lock.sleep(n) provoque une temporisation de n secondes. 3 l heure peut être obtenue à partir de la variable d environnement sysdate, en ne retenant que les informations concernant l heure. Revoir les fonctions de date sous Oracle 5

sur plusieurs expériences de ce type. Question 5 Vérifier sur la trace qu il n y a pas eu de traitements simultanés sur la même pièce. Constater sur la trace qu il peut y avoir des traitements concurrents au même moment sur des pièces distinctes. Question 6 Comparer en exploitant les traces, la durée totale des 2 traitements parallèles (entre le début du traitement de la première pièce et la fin du traitement de la dernière) et le temps effectif de ces 2 traitements (somme des durées de chacun des traitements sur chacune des pièce). Que déduire de la comparaison de ces deux valeurs? 6