Les différents modes de verrous sous Oracle

Dimension: px
Commencer à balayer dès la page:

Download "Les différents modes de verrous sous Oracle"

Transcription

1 Les différents modes de verrous sous Oracle Les verrous sont indispensable dès qu on manipule des données par plusieurs sessions en parallèle. Sous Oracle, leur implémentation est assez performante, mais leur compréhension est assez complexe. Essayons d éclaircir cela. Cet article explique : Les modes de verrous et leur nommage. Comment comprendre la matrice de compatibilité des verrous. Quelles opérations posent quels verrous. Comment voir les verrous posés à partir des vues du dictionnaire. Ce qu il faut savoir : Le fonctionnement des insert, delete, update, select et select for update. Les problématiques de modification concurrentes. Les verrous sous Oracle La pose de verrous (locks) sous Oracle paraît simple au premier abord. La plupart du temps, on n a pas à utiliser de verrouillage explicite (lock table). Le verrouillage implicite des ordres DML (insert, update, delete, merge, select for update) est transparent et efficace. Un select (sans le for update) ne pose aucun verrou. Les verrous inter-bloquants (deadlocks) sont rares et les attentes sur les wait events enqueue ne sont pas si fréquentes. Mais lorsqu on veut aller plus loin, pour comprendre une situation de deadlock, ou pourquoi une session est bloquée, ou pour éviter les problèmes de performance sur la vérification de l intégrité référentielle, alors les choses deviennent plus complexes. Le mécanisme d Oracle n est pas facile à comprendre et les différents nommage des modes de verrous rendent les choses plus difficiles. Un exemple: le mode 3 par exemple peut s appeler Row Exclusive aussi bien que Sub Exclusive, abrégé en Row-X, Sub-X, RX ou SX. Et il ne vérouille pas une ligne (row) - d ailleurs les verrous au niveau ligne ne s appellent pas row mais TX comme transaction - et il n est pas si exclusif que ça puisque plusieurs session peuvent l acquérir sur la même ressource... Pas de panique, on va tout expliquer. La signification des modes de verrouillage, leurs nommage, et leur matrice de compatibilité. Un verrou a un type, un mode et un identifiant de la ressource verrouillée. Types de verrous Un verrou (lock ou enqueue) est un mécanisme qui sert à sérialiser l accès à une ressource. Oracle utilise des verrous pour protéger soit des données de la base (tables, lignes, index,...), soit des meta-données (verrous dictionnaire Data Dictionary Lock), soit des structures internes en mémoire (ce sont les latches). Ici, nous parlerons seulement des données. Les verrous sur les données s appellent aussi DML locks car ils sont souvent utilisés par le langage de manipulation de donnée (DML Data Manipulation Language), mais ils sont aussi utilisés par le langage de définition de donnée (DDL Data Definition Language) lorsque celui-ci doit accéder aux données. Il y a 3 types de verrous sur les données: les verrous de niveau ligne (row) sont appelés transaction locks (TX) car ils sont posés lorsqu il y a un accès concurrent sur une ligne, et la ressource verrouillée est la transaction : les verrous TX n attendent pas sur une ligne mais sur la fin de la transaction qui a mis à jour la ligne. les verrous au niveau table sont appelés table locks (ou TM locks) et la ressource verrouillée est un ob- 1 phpsolmag.org/fr

2 jet de la base de données : une table, un index, une partition de table,... Ces verrous TM peuvent être posés de manière implicite par le DML ou le DDL, et ils peuvent aussi être acquis explicitement par l instruction LOCK TABLE Les verrous définis par l utilisateur (user defined lock UL) pour lesquels la ressource n est pas un objet de la base de données, mais un simple identifiant qui n a de signification que pour l application. Ils sont gérés par le package dbms_lock. Dans ce document, je vais surtout parler des verrous table (TM) mais j expliquerai aussi rapidement les verrous TX, pour clarifier la confusion qu il y a souvent entre les verrous de niveau table et de niveau ligne. Modes de verrous On pense souvent à deux modes de verrouillage: exclusif (exclusive) pour empêcher tout accès concurrent, partagé (shared) pour n empêcher que les accès exclusifs. Mais Oracle définit six modes de verrous. Ils ont chacun un numéro, et différents noms, que l on va retrouver dans les vues V$, dans la documentation, dans des fichiers de trace, dans Entreprise Manager,... Table 1. Modes de verrous et leurs noms et abréviations mode Différents noms 1 Null 2 Row Share, Sub-Share, Intended Share, SS, RS, Row-S 3 Row Exclusive, Sub-Exclusive, Intended Exclusive, SX, RX, Row-X 4 Share, S 5 S/Row-X, Share Row, Exclusive, Share-SubExclusive, SSX, SRX 6 Exclusive Ce n est donc vraiment pas facile de s y retrouver et de retenir les noms et abréviations des modes de verrous. Je vais vous expliquer la signification de chacun de ces noms, afin d en comprendre leur sens. Et il y a pire. Pour les événements d attentes (enqueue wait events) associés aux verrous table ( enq: TM ) on devra consulter le paramètre P1 pour retrouver le type de verrou et son mode (Table 2). Comment se souvenir de ces numéros, et ces noms sans les confondre? Et deviner les ordres DML qui peuvent les causer? Et la matrice de compatibilité qui montre ce qui est permis ou bloqué par un verrou donné? C est pourtant possible: je vais vous expliquer la signification de Share et Exclusive, et celle de Row ou Sub ou Intended, et tout va devenir clair. Share et Exclusive Un verrou exclusif (X Exclusive Lock) empêche de partager une ressource: il empêche toute autre session de poser un verrou partagé (S Share Lock). Un verrou partagé(s Share Lock) permet de partager une ressource: plusieurs session peuvent poser un verrou partagé (S) sur la même ressource. Mais il empêche par contre une autre session de poser un verrou exclusif (X) sur la même ressource. Nous avons donc les premiers éléments pour construire la matrice de compatibilité. Pour les verrous X et S, la matrice montre que la combinaison S/S est compatible mais S/X, et X/X sont incompatibles. L idée générale, c est que pour modifier une donnée, on pose un verrou exclusif (Exclusive Lock). Et pour seulement lire une donnée on pose un verrou partagé (Share Lock) si on veut s assurer que personne ne la modifie en même temps. Si quelqu un est déjà en train de la modifier (et donc a acquis un verrou X) alors il faudra attendre de savoir si sa modification concurrente est validée (commit) ou non (rollback). Sub et Row On a vu qu il y a parfois deux noms et deux abréviations: Sub(S) et Row(R). Ils veulent dire la même chose mais dans un contexte différent. Prenons le cas des verrous de tables (TM locks). La ressource qui est verrouillée par Share (S) et Exclusive (X) est une table. Table 2. Types et modes de verrous dans les paramètres des wait event Type et mode P1TEXT P1 P1RAW TM mode 1 name/mode D0001 TM mode 2 name/mode D0002 TM mode 3 name/mode D0003 TM mode 4 name/mode D0004 TM mode 5 name/mode D0005 TM mode 6 name/mode D0006 TX mode 4 name/mode TX mode 6 name/mode phpsolmag.org/fr 2

3 Mais Oracle a aussi la possibilité de poser un verrou qui concerne un sous-ensemble (subpart) de la ressource verrouillée. Lorsqu il s agit d une table, le sous-ensemble, c est un ensemble de lignes de la table (Row). Par exemple, si on modifie un ou plusieurs lignes d une table (insert, update, merge ou delete) - donc une écriture - ce n est pas un verrou X qui est posé, car celui-ci verrouillerait toute la table, mais un verrou Row-X (Row Exclusive - RX) pour dire qu on modifie des lignes de la table. De même, si l on veut poser un verrou en lecture sur quelques lignes, comme avec un select for update, ce n est pas un verrou S qui est posé sur la table, mais un verrou Row-S (Row Share - RS). En réalité, sur les versions récentes d Oracle, un select for update est traité comme une modification, et pose un Row-X, mais nous verrons ça plus loin. Nous sommes sur une table, et nous posons un verrou RX ou RS pour la modification ou la lecture de lignes. Voilà la raison du double nommage Sub et Row: dans le cas d un verrou TM, verrou au niveau table, puisque le sous ensemble concerne des lignes (Row), on peut parler de Row-S (RS) et Row-X (RX). Mais dans le cas général, pour un verrou posé sur un sous-ensemble (Subpart) d une ressource, s appelle Sub-Share (SS) et Sub-eXclusive (SX). Et même pour pour une table, si elle est partitionée, alors un verrou X peut être posé sur une partition seulement, et un Sub-X sera posé sur la table (le sous-ensemble étant une partition, il n y a pas lieu d utiliser le nommage ligne Row-X ici). Tout cela, c est seulement une question de nommage. Le comportement du verrou est le même pour un mode donné. Mais ces explications sont indispensables pour comprendre ces différents modes de verrous. Dans cet article, je vais continuer en raisonnant sur une table, et donc utiliser le nommage Row plutôt que Sub. Pourtant Sub serait plus général. Mais la vrai raison, c est que je préfère d éviter Sub car elle a la même abréviation que Share, et ça rajoute une source de confusion... Verrou table et verrou ligne Attention, j ai parlé ici de verrou TM posé sur une table (table lock) pour dire que toute une table, ou qu un ensemble de lignes est modifié. En plus de cela, le DML (insert, update, delete, merge ou select for update) doit poser un verrou sur chaque ligne modifiée. Deux sessions peuvent chacune modifier une ligne de la table tant qu il ne s agit pas de la même ligne. Par contre, chaque session va aussi poser un verrou sur la ligne: dans le bloc de donnée, la ligne aura un pointeur sur l entrée ITL, qui elle même pointe sur la transaction (c est à dire sur son entrée de la table des transactions du tablespace undo). C est un verrou au niveau ligne (row lock) mais la ressource verrouillée est en fait la transaction complète, et c est pour cela qu il s appelle TX: une transaction qui voit une ligne verrouillée va demander un verrou sur la transaction qui a modifié la ligne, et c est la fin de cette transaction qu il va attendre. Et ce verrou est toujours exclusif: Oracle n a pas de verrou partagé au niveau ligne (d autres SGBD les utilisent pour l isolation des transactions, mais Oracle n en a pas besoin puisque, grâce aux undo, il fait des lectures consistantes sans devoir poser de verrous). Alors, nous avons des verrous TM qui concernent toute la table (en mode S et X), et des verrous ligne qui concernent une ligne. Alors pourquoi avoir besoin des des verrous table concernant des lignes (TM en mode RS et RX)? Une table peut avoir un grand nombre de lignes. Si nous avons besoin de verrouiller la table en mode partagé (TM en mode S), ce ne serait pas très performant d aller voir tous les lignes de la table dans le but de savoir si il y en a un qui est verrouillé. Et dans l autre sens, poser un verrou exclusif sur toute la table lorsque modifie seulement quelques lignes poserait de gros problèmes de concurrence d accès et de scalabilité. C est là que sont utilisés les verrous Sub: une transaction qui a l intention de modifier quelques lignes va commencer par poser un verrou Row-X sur la table, et il n y a plus besoin d aller voir toutes les lignes pour vérifier la compatibilité avec S ou X. Cette intention explique le troisième synonyme que l on trouve moins souvent pour les Sub/Row: Intended Share (IS) et Intended exclusive (IX). Lecture ou écriture Nous avons vu que dans l idée générale un verrou exclusif (X ou RX) correspond à une écriture et un verrou partagé (S ou RS) correspond à une lecture qui veut empêcher des écritures concurrentes. Mais avec Oracle, je dois préciser un peu cela. Oracle effectue par défaut des lectures non bloquantes, où on peut lire des données de manière cohérente sans avoir à bloquer les écritures concurrentes. Oracle utilise les undo (rollback segments) pour avoir une image cohérente des données telles qu elles étaient au moment où on a exécuté la requête. Et il n a rien besoin de verrouiller dans ce cas : on laisse les autres modifier puisqu on ne verra pas ces modifications. Ce principe peut même aller très loin : il est possible de lire les données d une table qu on vient de supprimer (drop table) du moment que le select ait démarré avant le drop. Lorsque on veut faire une lecture bloquante, on utilise un select for update, qui verrouille sans modifier (même 3 phpsolmag.org/fr

4 si c est souvent dans le but de modifier ultérieurement comme son nom l indique). Jusqu à la 9i, Oracle posait un verrou partagé (RS), ce qui correspond bien à l idée de lecture bloquante. Mais depuis la 9i, suite à la correction d un bug en RAC, c est un verrou exclusif qui est posé, exactement comme un update. D ailleurs au niveau ligne (TX) le select for update a toujours été un verrou exclusif. On peut donc rester sur l idée que shared est pour la lecture et exclusive pour l écriture. Mais il faut alors garder à l esprit que sous Oracle les lectures non bloquantes ne posent pas de verrous, et que le select for udpate ressemble plutôt à une écriture (d ailleurs vous ne pouvez pas le faire sur une base en read-only). Le DDL aussi peut poser des verrous table (TM). Un alter table va poser un verrou X sur la table: il écrit et doit empêcher les lectures bloquantes (S,RS) et les écritures (X,RX). Un create index, par contre ne modifie pas la table, mais il doit lire des données stables. Il pose un verrou S de lecture bloquante pour qu il n y ait pas d écriture dans la table durant la création de l index. L intégrité référentielle aussi pose des verrous TM. Par exemple, le problème connu des foreign key non indexées se traduit par un verrou S sur la table fille lorsque la table parent subit un delete ou un update de la clé. Pourquoi? Parce que pour d empêcher un insert qui violerait l intégrité référentielle, sans index Oracle n a pas une ressource de plus bas niveau à verrouiller. Lorsque la clé étrangère est au début d un index, alors la première entrée d index avec la valeur du parent peut être utilisée comme ressource unique à verrouiller avec un verrou TX. Et maintenant si l intégrité référentielle s accompagne d un delete cascade? en plus du mode S, il y a l intention de modifier des lignes dans la table fille, comme avec un Row-X. C est là qu intervient le mode share row exclusive (SRX). C est finalement simple: S+RX=SRX. Opérations sur les tables Un SELECT simple, sans for update, est une lecture non-bloquante, qui n a besoin d aucun verrou sous Oracle. Vous pouvez même supprimer une table pendant que vous êtes en train de la lire. INSERT, UPDATE, DELETE, MERGE écrivent des lignes, donc ils posent un verrou TM en mode Row- X (en plus du verrouillage ligne TX des lignes effectivement modifiées). C est un verrou d intention, avant même d aller voir les lignes, même si la requête ne touche aucune ligne. SELECT FOR UPDATE fait des lectures non bloquantes sur des lignes, donc il posait un Row-S avant la 9i. Mais maintenant, il a le même comportement qu un update : Row-X aussi. L intégrité référentielle a besoin de plus de verrous. Par exemple pour faire un insert dans une table fille, il faut vérifier l existence du parent avec une lecture bloquante (si ce n était pas le cas, l enregistrement parent pourrait être supprimé avant notre commit, et l intégrité serait violée). Cette vérification est identique à un select for update et elle pose donc un Row-X (c était un Row- S avant la 9i). Dans l autre sens, lorsqu on supprime un enregistrement parent, ou lorsqu on modifie la valeur référencée (sa clé), il faut empêcher des insert dans la table fille. C est un Row-X (Row-S avant la 9i) s il y a un index qui peut supporter le verrou ligne pour la valeur de l enregistrement parent, mais sinon, c est un verrou TM en mode S pour bloquer tous les insert. Pour éviter ces verrous TM-Share, il faut soit que les colonnes de la foreign key soient indexées ou en tête d un index. Soit qu il n y ait pas d intentions de delete sur la table mère ou de update des colonnes référencées. Un insert en mode direct (direct-path) doit empêcher les modifications concurrentes car il écrit directement sur disque sans passer par les buffers partagés, donc il doit poser un verrou X sur la table pour empêcher toute modification concurrente. Si une partition spécifique est précisée avec le nom de la table, alors il pose un seulement un Sub-X sur la table car il a l intention décrire dans une sous-partie, et un verrou X sur la partition en question. Ces verrous sont acquis jusqu à la fin de la transaction. Sauf le TM-Share des foreign key non indexées qui est relâché au plus vite. Le DDL peut aussi poser des verrous, pour toute l opération, ou pour un court instant (et l opération peut alors être considérée comme online). Si vous voulez faire des lectures répétables (repeatable reads) pour éviter le problème des lignes fantômes (phantom reads) lorsque un insert concurrent a changé votre résultat, alors on ne peut pas compter sur les verrous lignes pour la simple raison qu on ne peut pas verrouiller une ligne qui n existe pas encore (il n y a pas de range lock sous Oracle). Alors il faut verrouiller la table et cela se fait avec un verrou S. Par exemple, la création ou la reconstruction offline d un index pose un verrou S sur la table. Lorsqu un DLL doit avoir un accès exclusif pour écrire dans la table, comme un ALTER TABLE MOVE, c est un verrou X qui est posé. J ai seulement donné des exemples. il y a de nombreuses situations que je ne peux pas expliquer ici (réfléchissez à ce qui ce doit se passer lors d un MERGE avec intégrité référentielle, ou un trigger before row insert, ou un update restart. Et le comportement change avec les versions d Oracle. Mais en réfléchissant à ce qui est modifié et ce qui a besoin d être lu avec des lectures bloquantes, on peut arriver à comprendre ce qu il phpsolmag.org/fr 4

5 se passe. Et il y a aussi la possibilité de le tester nous le verrons plus loin. En plus de ces opérations, vous pouvez poser des verrous avec l instruction LOCK TABLE avec les modes suivants: ROW SHARE, ROW EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE Et vous vous trouvez qu il n y a pas assez de synonmes pou Row-S? Et bien vous pouvez en poser un avec LOCK TABLE IN SHARE UPDATE MODE aussi... Matrice de compatibilité La raison d être de tous ces modes, c est de permettre ou bloquer des accès concurrents. La table 3 montre ce qu on trouve dans la documentation Oracle (je n ai pas mis le verrou null qui est compatible avec tout). Table 3. Compatibilité des modes de verrou modes SS,RS SX,RX S SSX,SRX X compatible? SS,RS oui oui oui oui non SX,RX oui oui non non non S oui non oui non non SSX, SRX oui non non non non X non non non non non Avez-vous déjà essayé de retenir cette table? Après avoir compris la signification de chaque mode, voyons si c est toujours aussi difficile. On l a vu pour X et S, par définition, la matrice donne: S/S compatible mais S/X et X/X incompatible. Pour les sous-ensembles (Sub/Row), c est différent. Modifier quelques lignes d une table n empêche pas une autre session de modifier quelques (autres) lignes de la même table. Le conflit ligne à ligne est géré par les verrous au niveau ligne (TX). Ici, nous parlons ici de verrous table (TM). On rajoute donc dans la matrice: RS/RS, RX/RX, RS/ RX possibles. Par contre, entre une ressources et ses sous-ressources, il peut y avoir conflit. Si toute la table a un verrou exclusif (X) posé par une autre session, alors il est impossible de poser un verrou même sur quelques lignes (RX). Et si il y a un verrou exclusif sur quelques lignes (RX) alors cela empêche de poser un verrou partagé sur toute la table (S). On rajoute donc à la matrice: X/RX et S/RX incompatibles. Mais, S/RS sont partagés, donc compatibles. Il nous reste Share Row exclusive (SRX). en fait c est un S+RX: la table a un verrou partagé mais un sous ensemble de lignes a un verrou exclusif. Comme X ou RX n est pas compatible avec le S de SRX, alors X/SRX et RX/SRX ne sont pas compatibles. Et comme S (et le S de SRX) n est pas compatible avec le RX de SRX, alors S/SRX et SRX/SRX se sont pas compatible non plus. Par contre, il n y a pas d incompatibilité avec RS/SRX On a donc retrouvé la matrice facilement. Pas besoin de la retenir. Vues du dictionnaire On a vu assez de théorie pour passer maintenant à la pratique. Comment voir ces verrous. Je vais faire une opération DML et voir tous les informations qu on a dans les vues du dictionnaire. SESSION1> select sid from v$mystat where rownum=1; SID SESSION1> update test set dummy= Y ; 1 row updated. Donc je suis dans la session 1 (SID=13) et j ai fait un update d une ligne de la table TEST. DBA_LOCKS montre tous les types de verrous SESSION1> select * from dba_locks where session_ id=13; SESSION_ID LOCK_TYPE MODE_HELD MODE_REQUESTED LOCK_ID1 LOCK_ID2 LAST_CONVERT BLOCKING_OTHERS DML Row-X (SX) None Not Blocking 13 Transaction Exclusive None Not Blocking Ma transaction a acquis 2 types de verrous: un verrou transaction (TX) en mode exclusif posé lorsque notre transaction a démarré. LOCK_ ID1 and LOCK_ID2 identifient la transaction (USN/ SLOT/SQN sont codés en 2 entiers) in verrou table (DML) en mode Row-X posé par l ordre update vu qu il a l intention de verrouiller des lignes. LOCK_ID1 est l object_id de la table. 5 phpsolmag.org/fr

6 DBA_DML_LOCKS ne montre que les verrous TM SESSION1> select * from dba_dml_locks where session_ id=13; SESSION_ID OWNER NAME MODE_HELD MODE_REQUESTED LAST_CONVERT BLOCKING_OTHERS E_FRANCK TEST Row-X (SX) None 1 Not Blocking Ici object_id a été traduit en owner et object_name. Si l on va voir la vue ALL_OBJECTS, le OBJECT_ID de la table E_FRANCK.TEST est ce qui correspond au LOCK_ID1 donné par DBA_LOCKS. LAST_CONVERT montre que la transaction a démarré il y a 1 seconde et que l UPDATE a démarré il y a une seconde aussi. Nous verrons plus loin le moment exact où les verrous sont posés. V$LOCKED_OBJECTS montre aussi les verrous TM SESSION1> select * from v$locked_object where session_id=13; XIDUSN XIDSLOT XIDSQN OBJECT_ID SESSION_ID ORACLE_USERNAME OS_USER_NAME PROCESS LOCKED_MODE E_ FRANCK e_franck Il y a ici de nouvelles informations Commençons par l identifiant de transaction (XIDUSN,XIDSLOT,XIDSQN). Regardons les LOCK_ID1 and LOCK_ID2 que nous avions pour le verrou TX: LOCK_ID1= XIDUSN*65536+XIDSLOT and LOCK_ ID2=XIDSQN Ce qui veut dire que les verrous TX et TM sont posés par la même transaction. Nous aussi avons le username Oracle ainsi que le username et PID de l OS Le mode de verrou est ici identifié par son numéro. Le mode 3 correspond à Row-X. Voilà les verrous posés par ma session. Maintenant j ouvre une autre session et j essaie de verrouiller la table TEST en mode partagé: SESSION1> select sid from v$mystat where rownum=1; SID SESSION2> lock table test in share mode; Cette deuxième session (SID=47) est en attente et j ouvre une autre session pour voir le blocage. SQL> select * from dba_locks where session_id=13; SESSION_ID LOCK_TYPE MODE_HELD MODE_REQUESTED LOCK_ID1 LOCK_ID2 LAST_CONVERT BLOCKING_OTHERS DML Row-X (SX) None Blocking 13 Transaction Exclusive None Not Blocking La première session (SID=13) a toujours les mêmes verrous, mais maintenant le verrou DML bloque une autre session. SQL> select * from dba_locks where session_id=47; SESSION_ID LOCK_TYPE MODE_HELD MODE_REQUESTED LOCK_ID1 LOCK_ID2 LAST_CONVERT BLOCKING_OTHERS DML None Share Not Blocking La deuxième session (SID=47 qui a fait le lock table) n a pas encore acquis (HELD) de verrou. Elle est en attente (REQUESTED) pour pouvoir poser le verrou en mode Share sur la table (object_id ). DBA_BLOCKERS donne les sessions qui en bloquent d autres SESSION1> select * from dba_blockers; HOLDING_SESSION phpsolmag.org/fr 6

7 DBA_WAITERS donne plus d information sur les sessions qui sont bloquées V$SESSION_EVENT donne les statistiques cumulées des wait events sur une session SESSION1> select * from dba_waiters; WAITING_SESSION HOLDING_SESSION LOCK_TYPE MODE_HELD MODE_REQUESTED LOCK_ID1 LOCK_ID DML Row-X (SX) Share SQL> select * from v$session_event where sid=47 and event like enq% ; SID EVENT TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT MAX_WAIT enq: TM - contention La deuxième session (SID=47) qui a demandé le verrou TM en mode Share sur la table TEST (object_id ) est bloquée, en attente de la session 13 qui a acquis le verrou sur la table en mode Row-X. UTLLOCKT.SQL fournit la même information (script disponible dans ORACLE_HOME/rdbms/admin) SQL>@?/rdbms/admin/utllockt.sql WAITING_SESSION LOCK_TYPE MODE_REQUESTED MODE_HELD LOCK_ID1 LOCK_ID None 47 DML Share Row-X(SX) Ici, on a la même information, mais formatée avec la hiérarchie des sessions qui attendent. V$SESSION_WAITS donne tous les wait events Nous sommes intéressés par les enqueues. On voit mon verrou TM sur lequel ma session a attendu centisecondes (865 seconds, j ai lancé cette requête une minute après la précédente). Je sais qu il n y a eu qu une seule demande pour ce verrou, mais on voit 296 attentes sur le wait event enqueue. C est parce que l attente sur un verrou n est pas faite avec un seul wait event. L attente a un timeout au bout de 3 secondes (et l on voit ça dans AVERAGE_WAIT la durée moyenne de chaque wait est de 3 secondes environ et par le nombre de timeouts qui atteint presque le nombre de waits). C est le mode de fonctionnement: après avoir attendu 3 secondes, le process reprends la main, vérifie que l on est pas dans une situation de deadlock, puis attends à nouveau 3 secondes. Les verrous ligne une fois de plus, les intentions et les transactions On a vu dans DBA_LOCKS que les verrous TM et TX sont arrivés en même temps parce que notre transaction a démarré avec l update. En vérité, c est le TM qui a été posé en premier pour la raison suivante: SQL> select * from v$session_wait where event like enq% ; SID EVENT P1TEXT P1RAW P2TEXT P2SECONDS_IN_WAIT enq: TM - contention name mode D0004 object # le verrou TM est au niveau table, il est posé dès que l update est exécuté et avant qu il commence à lire des lignes. le verrou TX et au niveau ligne, Même si la ressource est la transaction, il est posé lorsqu on lit une ligne. Je vais prouver cela. Je lance à nouveau un update, mais cette fois il ne va modifier aucune ligne. Ici la deuxième session (SID=47) est en train d attendre sur un verrou TM. Elle attend depuis 802 secondes (j ai lancé cette requête un peu plus tard). P2 est le object_ id (object #) et P1 donne le type et le mode du verrou (name mode) en hexadecimal: 544D est le code ascii de TM and 4 is the lock mode (Share). Donc on a toute les informations à partir des wait events: la session 47 attends depuis 802 seconds pour poser un verrou TM en mode S sur la table TEST. SESSION1> select sid from v$mystat where rownum=1; SID SESSION1> update test set dummy= Y where 0 = 1; 0 row updated. 7 phpsolmag.org/fr

8 Je suis dans la session 18, j ai lancé un update qui n a modifié aucune ligne. SESSION1> select * from dba_locks where session_ id=18; SESSION_ID LOCK_TYPE MODE_HELD MODE_REQUESTED LOCK_ID1 LOCK_ID2 LAST_CONVERT BLOCKING_OTHERS DML Row-X (SX) None Not Blocking Même si je n ai modifié aucune ligne, j ai acquis un Row-X en exécutant l update, seulement par mon intention de modifier des lignes. Mais en fait, aucune ligne n a été modifiée, et il n y a donc pas encore de verrou TX. Je n ai pas encore de verrou TX, mais je sais que je suis dans une transaction parce que mon verrou TM est lié à une transaction (et il sera relâché lorsque je ferais un commit ou un rollback). Un doute là dessus? Je vais vérifier dans V$LOCKED_OBJECT puisqu il y a l information de transaction (USN/SLOT/SQN) de mon verrou TM. SESSION1> select * from v$locked_object where session_id=13; XIDUSN XIDSLOT XIDSQN OBJECT_ID SESSION_ID ORACLE_USERNAME OS_USER_NAME PROCESS LOCKED_MODE E_FRANCK e_franck Ma transaction n a pas de USN/SLOT/SQL ils sont tous à zéro - parce qu il n y a pas encore d entrée dans la table de transaction du tablespace undo (vu qu aucune modification de donnée n a encore eu lieu). Et si je regarde V$TRANSACTION je ne verrais rien non plus. Par contre, dans V$SESSION il y a l adresse de ma transaction dans TADDR. Qu est-ce que cela veut dire? Je suis dans une transaction (je n ai aucun doute là dessus parce que j ai fait un update et c est une opération qui se fait dans une transaction). Ma transaction a une adresse, mais aucune entrée dans la table des transactions. Donc, la ressource verrouillée par le verrou TX est une entrée de la table des transactions plutôt qu une transaction, et V$TRANSACTION montre les entrées de la table des transactions plutôt que des transactions. Je n ai rien écrit encore, mais mon intention d écrire dans la table TEST est restée marquée par le verrou en mode Row-X, et elle restera jusqu à la fin de ma transaction. Conclusion Cet article a pour but de clarifier la logique et la signification qu il y a derrière les verrous sous Oracle afin de mieux comprendre pourquoi des verrous sont posés, et ce qu ils bloquent ou non. Le but est de prévoir, dès le développement, les problèmes qu on peut rencontrer en production avec de multiples sessions concurrentes. Car les problèmes peuvent avoir de grosses conséquences : utilisateurs bloqués, deadlocks, etc. Franck Pachot Franck Pachot est DBA, consultant pour Trivadis en Suisse Romande. Après plus de 15 ans à travailler sur différents SGBD, aussi bien en développement /modélisation qu en exploitation, il est aujourd hui expert en performance Oracle. Contact : franck.pachot@trivadis.com phpsolmag.org/fr 8

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

Bases de données et sites WEB Licence d informatique LI345 Bases de données et sites WEB Licence d informatique LI345 Anne Doucet Anne.Doucet@lip6.fr http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage

Plus en détail

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

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 1/46 2/46 Pourquoi? Anne-Cécile Caron Master MAGE - SGBD 1er trimestre 2014-2015 Le concept de transaction va permettre de définir des processus garantissant que l état de la base est toujours cohérent

Plus en détail

Bases de données et sites WEB

Bases de données et sites WEB Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues

Plus en détail

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

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

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

Gestion des transactions et accès concurrents dans les bases de données relationnelles Gestion des transactions et accès concurrents dans les bases de données relationnelles Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Fev.

Plus en détail

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

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

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

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Gestion des utilisateurs et de leurs droits

Gestion des utilisateurs et de leurs droits Gestion des utilisateurs et de leurs droits Chap. 12, page 323 à 360 Lors de la création d'un utilisateur vous devez indiquer son nom, ses attributs, son profil, la méthode d'authentification (par le SE

Plus en détail

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

Oracle 11g Optimisez vos bases de données en production (ressources matérielles, stockage, mémoire, requêtes) Avant-propos 1. Lectorat 11 2. Pré-requis 12 3. Objectifs 12 4. Environnement technique 13 Choisir la bonne architecture matérielle 1. Introduction 15 2. Architecture disque 16 2.1 La problématique de

Plus en détail

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

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 13 : Organisation d une base de données, ou comment soulever (un peu) le voile Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Les clusters de table

Plus en détail

Cours de Base de Données Cours n.12

Cours de Base de Données Cours n.12 Cours de Base de Données Cours n.12 Gestion des transactions : contrôle de concurrence Elisabetta De Maria - http://www.i3s.unice.fr/ edemaria/ UFR Sciences et Laboratoire I3S, CNRS 2013-2014 Université

Plus en détail

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.

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. Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique CHAPITRE 4 ADMINISTRATION ET TUNING DE BASES DE DONNÉES RESPONSABLE DR K. BOUKHALFA POLITIQUES DE CONTRÔLES

Plus en détail

UNION INTERCEPT SELECT WHERE JOINT FROM ACID

UNION INTERCEPT SELECT WHERE JOINT FROM ACID STOCKAGE TRANSACTION, SÉRIALISABILITÉ, NIVEAUX D'ISOLATION 1 BASE RELATIONNELLE Un serveur de données relationnel : Rend compte de la «réalité» sous forme de table Met en relation la perception logique

Plus en détail

Implémentation des SGBD

Implémentation des SGBD Implémentation des SGBD Structure générale des applications Application utilisateur accédant à des données d'une base Les programmes sous-jacents contiennent du code SQL Exécution : pendant l'exécution

Plus en détail

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

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

Plus en détail

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation

Plus en détail

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

CHAPITRE 1 ARCHITECTURE

CHAPITRE 1 ARCHITECTURE 07/04/2014 Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique ADMINISTRATION ET TUNING DE BASES DE DONNÉES CHAPITRE 1 ARCHITECTURE RESPONSABLE DR K. BOUKHALFA

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes. Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger

Plus en détail

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing Présentation d Oracle 10g Chapitre VII Présentation d ORACLE 10g 7.1 Nouvelles fonctionnalités 7.2 Architecture d Oracle 10g 7.3 Outils annexes 7.4 Conclusions 7.1 Nouvelles fonctionnalités Gestion des

Plus en détail

TP11 - Administration/Tuning

TP11 - Administration/Tuning TP11 - Administration/Tuning MIAGE #3-2006/2007 January 9, 2007 1 Architecture physique d une base Oracle 1.1 La structure physique Une base de données Oracle est composé de fichiers (au sens du système

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

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

Bases de données avancées Concurrence d'accès et reprise Bases de données avancées Concurrence d'accès et reprise Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours BDA Plan La notion de transaction Les problèmes de la concurrence Problèmes

Plus en détail

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

//////////////////////////////////////////////////////////////////// Administration bases de données ////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données

Plus en détail

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

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers Programme détaillé Objectifs de la formation Les systèmes de gestion de bases de données prennent aujourd'hui une importance considérable au regard des données qu'ils hébergent. Véritable épine dorsale

Plus en détail

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA DEFINITION D UNE BIBLIOTHEQUE D ACCES A UNE BASE DE DONNEES Cet article s adresse aux administrateurs SAS en charge de la mise à disposition des

Plus en détail

Cours 6. Sécurisation d un SGBD. DBA - M1ASR - Université Evry 1

Cours 6. Sécurisation d un SGBD. DBA - M1ASR - Université Evry 1 Cours 6 Sécurisation d un SGBD DBA - M1ASR - Université Evry 1 Sécurisation? Recette d une application Vérification des fonctionnalités Vérification de l impact sur le SI existant Gestion du changement

Plus en détail

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

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

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

420-PK6-SL Banques de données Avancées. UTILISATEURS (suite) 420-PK6-SL Banques de données Avancées Gestion des UTILISATEURS (suite) RÉCAPITULATIF Un UTILISATEUR ORACLE est donc une combinaison de deux concepts usuels des banques de données. Un objet de contrôle

Plus en détail

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

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Du 10 Fév. au 14 Mars 2014

Du 10 Fév. au 14 Mars 2014 Interconnexion des Sites - Design et Implémentation des Réseaux informatiques - Sécurité et Audit des systèmes - IT CATALOGUE DE FORMATION SIS 2014 1 FORMATION ORACLE 10G 11G 10 FEV 2014 DOUALA CAMEROUN

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

Les BASES de DONNEES dans WampServer

Les BASES de DONNEES dans WampServer Les BASES de DONNEES dans WampServer 1 Définitions Générales Une base de données (BDD) permet d'enregistrer, de stocker, de ranger des données de façon organisée et hiérarchisée. SQL est le langage qui

Plus en détail

Le langage SQL (première partie) c Olivier Caron

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

Historisation des données

Historisation des données Historisation des données Partie 1 : mode colonne par Frédéric Brouard, alias SQLpro MVP SQL Server Expert langage SQL, SGBDR, modélisation de données Auteur de : SQLpro http://sqlpro.developpez.com/ "SQL",

Plus en détail

Les déclencheurs. Version 1.0. Grégory CASANOVA

Les déclencheurs. Version 1.0. Grégory CASANOVA Les déclencheurs Version 1.0 Grégory CASANOVA 2 Les déclencheurs [09/07/09] Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les déclencheurs du DML... 5 3.1 Introduction... 5 3.2 Création d un déclencheur

Plus en détail

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

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

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

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry Cours 3 Développement d une application BD 1 Plan du cours Gestion de la sécurité des données Optimisation des schémas de bases via la dénormalisation Utilisation de vues Placement du code applicatif dans

Plus en détail

1. Qu'est qu'un tablespace?

1. Qu'est qu'un tablespace? 1/14 1. Qu'est qu'un tablespace? Un tablespace est un espace logique qui contient les objets stockés dans la base de données comme les tables ou les indexes. Un tablespace est composé d'au moins un datafile,

Plus en détail

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

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

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

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste Christian Soutou Avec la participation d Olivier Teste SQL pour Oracle 4 e édition Groupe eyrolles, 2004, 2005, 2008, 2010, is BN : 978-2-212-12794-2 Partie III SQL avancé La table suivante organisée en

Plus en détail

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

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007 Bases de Données Réparties Concepts et Techniques Matthieu Exbrayat ULP Strasbourg - Décembre 2007 1 Définition Une base de données répartie (distribuée) est une base de données logique dont les données

Plus en détail

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

Eléments de base de la sécurité des bases de données Eléments de base de la sécurité des bases de données N. Boudjlida UHP Nancy 1, LORIA, Campus scientifique, BP 239 54506 Vandœuvre Lès Nancy CEDEX (F) Nacer.Boudjlida@loria.fr, http://www.loria.fr/ nacer

Plus en détail

COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1

COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1 1 COMPOSANTS DE L ARCHITECTURE D UN SGBD Chapitre 1 Généralité 2 Les composants principaux de l architecture d un SGBD Sont: Les processus Les structures mémoires Les fichiers P1 P2 Pn SGA Fichiers Oracle

Plus en détail

PERFORMANCE BASE DE DONNÉES

PERFORMANCE BASE DE DONNÉES PERFORMANCE BASE DE DONNÉES Abel Afonso Avant Vente abel.afonso@oracle.com The following is intended to outline our general product direction. It is intended for information purposes only, and may not

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Partie 0 : Gestion des tablespace et des utilisateurs... 3 Sommaire Partie 0 : Gestion des tablespace et des utilisateurs... 3 1- Créer deux TableSpaces votre_nom-tbs et Votre_nom-TempTBS :... 3 2. Créer un utilisateur qui porte votre nom :... 3 3. Attribuer à

Plus en détail

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

Audit activité base Oracle / SAP

Audit activité base Oracle / SAP Audit activité base Oracle / SAP Version : 1.0 Date : 04/02/2009 Auteur : xxxxxxxxxxx SOMMAIRE 1 OBJECTIFS DE CE DOCUMENT...3 2 Résultats de l étude...4 2.1. Bref exposé des constatations...4 2.1.1 Le

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Un modèle de données définit un mode de représentation de l information selon trois composantes : 1. Des structures de données. 2. Des contraintes qui permettent

Plus en détail

Cours: Administration d'une Base de Données

Cours: Administration d'une Base de Données Bases de Données Avancées Module A IUT Lumière, License CE-STAT 2006-2007 Pierre Parrend Cours: Administration d'une Base de Données Table of Contents Principes...1 Structure d'un Base de Données...1 Architecture...1

Plus en détail

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

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

Pratique et administration des systèmes

Pratique et administration des systèmes Université Louis Pasteur Licence Informatique (L2) UFR de Mathématiques et Informatique Année 2007/2008 1 But du TP Pratique et administration des systèmes TP10 : Technologie LAMP Le but de ce TP est de

Plus en détail

Introduction aux SGBDR

Introduction aux SGBDR 1 Introduction aux SGBDR Pour optimiser une base Oracle, il est important d avoir une idée de la manière dont elle fonctionne. La connaissance des éléments sous-jacents à son fonctionnement permet de mieux

Plus en détail

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

Secteur Tertiaire Informatique Filière étude - développement. Accueil. Apprentissage. Période en entreprise. Evaluation. Secteur Tertiaire Informatique Filière étude - développement Activité «Développer la persistance des» Sauvegarde et restauration Oracle 11g Accueil Apprentissage Période en entreprise Evaluation Code barre

Plus en détail

Modélisation et Gestion des bases de données avec mysql workbench

Modélisation et Gestion des bases de données avec mysql workbench Modélisation et Gestion des bases de données avec mysql workbench par novembre 2011 Table des matières 1 Installation 3 1.1 Ecran de chargement 3 1.2 Page d accueil 3 2 Réalisation d une base de données

Plus en détail

Administration des bases de données relationnelles Part I

Administration des bases de données relationnelles Part I Administration des bases de données relationnelles Part I L administration des bases de données requiert une bonne connaissance - de l organisation et du fonctionnement interne du SGBDR : structures logiques

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/116 Bases de Données Avancées Implantation d une BD Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue

Plus en détail

Notion de base de données

Notion de base de données Notion de base de données Collection de données opérationnelles enregistrées sur un support adressable et utilisées par les systèmes et les applications Les données doivent être structurées indépendamment

Plus en détail

Oracle Maximum Availability Architecture

Oracle Maximum Availability Architecture Oracle Maximum Availability Architecture Disponibilité des systèmes d informations Technologies et recommandations 1 Qu est-ce que Oracle Maximum Availability Architecture (MAA)? 1. Objectif : Disponibilité

Plus en détail

Gestion de base de données

Gestion de base de données Université Libre de Bruxelles Faculté de Philosophie et Lettres Département des Sciences de l Information et de la Communication Gestion de base de données Projet : Take Off ASBL Cours de M. A. Clève STIC-B-505

Plus en détail

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

Intégrité sémantique dans les bases de données relationnelles Intégrité sémantique dans les bases de données relationnelles 1 - Intégrité sémantique Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU Ecole Polytechnique Universitaire de Marseille Fev. 2013

Plus en détail

VIII- Circuits séquentiels. Mémoires

VIII- Circuits séquentiels. Mémoires 1 VIII- Circuits séquentiels. Mémoires Maintenant le temps va intervenir. Nous avions déjà indiqué que la traversée d une porte ne se faisait pas instantanément et qu il fallait en tenir compte, notamment

Plus en détail

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

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications P.-A. Sunier, HEG-Arc Neuchâtel avec le concours de J. Greub pierre-andre.sunier@he-arc.ch http://lgl.isnetne.ch/

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

Nœud Suisse du Projet International GBIF (Global Biodiversity Information Facility)

Nœud Suisse du Projet International GBIF (Global Biodiversity Information Facility) Nœud Suisse du Projet International GBIF (Global Biodiversity Information Facility) Présentation de la solution de backup Oracle de la base de données test GBIF et déploiement de la solution en production

Plus en détail

Administration des Bases de Données Oracle

Administration des Bases de Données Oracle Administration des Bases de Données Oracle Plan Introduction à l administration de données Structure d une base de données Architecture interne d Oracle Sécurité des données Utilitaires Administration

Plus en détail

Bases de données avancées

Bases de données avancées Bases de données avancées Jean-Yves Antoine LI - Université François Rabelais de Tours Jean-Yves.Antoine@univ-tours.fr UFR Sciences et Techniques IUP SIR Blois Master 1 Bases de Données avancées IUP Blois,

Plus en détail

Données Réparties. Thibault BERNARD. thibault.bernard@univ-reims.fr

Données Réparties. Thibault BERNARD. thibault.bernard@univ-reims.fr Données Réparties Thibault BERNARD thibault.bernard@univ-reims.fr Sommaire Introduction Gestion de la concurrence Reprise après panne Gestion des données dupliquées Sommaire Introduction Gestion de la

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

Architectures, modèles et langages de données

Architectures, modèles et langages de données Architectures, modèles et langages de données OLAP Hypercube Ingénierie des bases de données Fascicule 3 c,d Volume I Langage SQL, indexation et vue relationnelle André Gamache 2005 Architectures, Modèles

Plus en détail

Master Exploration Informatique des données DataWareHouse

Master Exploration Informatique des données DataWareHouse Master Exploration Informatique des données DataWareHouse Binôme Ahmed BENSI Enseignant tahar ARIB SOMMAIRE I. Conception...1 1. Contexte des contrats...1 2. Contexte des factures...1 II. Modèle physique...2

Plus en détail

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

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW Groupe : 322 Exploitation des Banques de données 420-PK6-SL (1-2-1) Étape : 3 Professeur Nom: Marcel Aubin Courriel : maubin@cegep-st-laurent.qc.ca

Plus en détail

TP Administration Oracle

TP Administration Oracle Ingénieurs 2000 Informatique et Réseaux TP Administration Oracle DIOP Ngoné ESSAIDI Abderrahim Février 2008 1 Sommaire Sommaire... 2 Introduction... 3 1. Déploiement d application... 4 1.1 Résumé du besoin...

Plus en détail

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL Jean-Marie Pécatte jean-marie.pecatte@iut-tlse3.fr 16 novembre 2006 ISIS - Jean-Marie PECATTE 1 Valeur de clé

Plus en détail

Comprendre les bases de données

Comprendre les bases de données Comprendre les bases de données Auteur : Hervé LEFEBVRE 9 mars 2002 Version compilée des articles parus sur , ce document reprends l introduction à Postgresql

Plus en détail

Bases de Données Réparties

Bases de Données Réparties Bases de Données Réparties Architecture Mise en œuvre Duplication et Réplication Michel Tuffery BDR : Définition Ensemble de bases de données gérées par des sites différents et apparaissant à l utilisateur

Plus en détail

Réplication des données

Réplication des données Réplication des données Christelle Pierkot FMIN 306 : Gestion de données distribuées Année 2009-2010 Echange d information distribuée Grâce à un serveur central Une seule copie cohérente Accès à distance

Plus en détail

La replication dans PostgreSQL

La replication dans PostgreSQL 10 mars 2011 Sommaire 1 Introduction 2 Les différents modes de réplication 3 La réplication par journaux Mise en place de la réplication en hot standby Limitations et critiques du hot standby Avenir du

Plus en détail

Intégrité des données

Intégrité des données . Contraintes d intégrité : Définition et objectif Intégrité des données Définition des contraintes Vérification des contraintes Contrainte d'intégrité : propriété sémantique que doivent respecter les

Plus en détail

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

PHP. Bertrand Estellon. 26 avril 2012. Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214 PHP Bertrand Estellon Aix-Marseille Université 26 avril 2012 Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214 SQLite et PDO Base de données SQLite et PDO SQLite écrit les données relatives à la base dans

Plus en détail

Développement de base de données Microsoft SQL Server 2012. Durée : 5 jours Référence : DPSQL12. Contenu

Développement de base de données Microsoft SQL Server 2012. Durée : 5 jours Référence : DPSQL12. Contenu Développement de base de données Microsoft SQL Server 2012 Durée : 5 jours Référence : DPSQL12 Cette formation permet aux participants de maîtriser les fonctionnalités de Microsoft SQL Server 2012 telles

Plus en détail

Architecture de la plateforme SBC

Architecture de la plateforme SBC Simple Business Connector Architecture de la plateforme SBC Titre Projet Description Architecture de la plateforme SBC Plateforme SBC Ce document reprend toutes les étapes de l'installation du serveur

Plus en détail

3. La SGA ou System global Area

3. La SGA ou System global Area 1/11 L'instance Oracle Oracle est une base de données composée de 3 parties différentes : L'instance Les fichiers de données Les fichiers de données facultatifs (fichier d'initialisation, fichier de mots

Plus en détail

Qui est Sybase ianywhere?

Qui est Sybase ianywhere? Sybase s ianywhere s Advantage Database Server Qui est Sybase ianywhere? Sybase ianywhere Sybase est la plus grande entreprise de logiciels et services exclusivement focalisée sur la gestion et la mobilisation

Plus en détail