You are on page 1of 5

Bases de donnes relationnelles Textes des Travaux pratiques Utilisation avance dOracle (Optimisation, administration, transactions, intgrit, etc.

)
1 2 Objectifs et organisation des TP -------------------------------------------------------2 Vues, optimisation et administration -------------------------------------------------2 2.1 2.2 2.3 3 Cration et interrogation de vues------------------------------------------- 2 Mthodes daccs et optimisation ------------------------------------------ 2 Administration ------------------------------------------------------------------- 3

Mises jour : transaction et intgrit-------------------------------------------------3 3.1 3.2 3.3 Premires transactions sur une base de donnes --------------------- 3 Mises jour travers les vues---------------------------------------------- 3 Contrle dintgrit ------------------------------------------------------------- 4

Annexes -----------------------------------------------------------------------------------------4 4.1 4.2 4.3 Accs au serveur Oracle ----------------------------------------------------- 4 Premier contact avec SQLPlus --------------------------------------------- 4 Documentation standard ORACLE.---------------------------------------- 5

Merci de communiquer toute correction ou remarque sur ce document : Philippe.Picouet@enst-bretagne.fr.

Philippe Picouet LUSSI ENST Bretagne

Objectifs et organisation des TP Les diffrentes parties de ce document reprennent lessentiel du cours de bases de donnes sur les points suivants :

1. Vues, 2. administration (droits daccs) 3. Mise jour et intgrit smantique, 4. optimisation.


La dure indicative pour chacune des deux parties est de 1h30. La section 4 donne les informations de base concernant laccs linterprteur SQL dOracle, et quelques autres informations dusage. En cas de difficults, en particulier lies la syntaxe des commandes, vous avez accs : Un mmento SQL ( Philippe.Tanguy@enst-bretagne.fr) http://perso.enst-bretagne.fr/~picouet/french/supports/notices/sql.pdf Aides / corrections sous http://perso.enst-bretagne.fr/~picouet/sgbd/oracle/ La documentation Oracle en ligne 2 2.1 Vues, optimisation et administration Cration et interrogation de vues 1. Crez les vues suivantes a. la vue sales_emp (ename, job) des employs qui sont des SALESMAN. b. la vue count_job (job, nbemp) qui donne pour chaque emploi le nombre demploys occupant cet emploi. 2. Rpondez requte Trouvez le nombre de SALESMAN en utilisant : a. La vue sales_emp b. La vue count_job Mthodes daccs et optimisation Lobjectif de cette section est de rflchir loptimisation de requtes relationnelles, et de sinterroger sur lutilisation des mthodes daccs choisies par lutilisateur ou ladministrateur du systme. Sous SQL Plus, il est possible de visualiser le plan dexcution excut par le systme en rponse une requte. La procdure suivre pour examiner le plan dexcution fait lobjet dune description particulire dans la sous-section ci-dessous. Le principe de lexercice consiste examiner successivement les plans gnrs pour une requte sur une seule relation (mono-relation) puis une requte sur plusieurs relations (multi-relations) avant et aprs lajout dune mthode daccs. La requte mono-relation consiste rechercher les employs qui sont CLERK. Une fois trouve la requte correspondant, vous regarderez le plan dexcution propos pour cette requte ? Dclarez ensuite un index sur lattribut job de la relation. Puis faites rvaluer le plan dexcution. Que constatez vous ? Est-ce logique ? Que se passe-t-il si votre requte cherche les employs dont le travail est dans la liste (MANAGER, CLERK, ANALYST, PRESIDENT, SALESMAN) ? Quen pensez vous ? La requte multi-relation consiste rechercher les noms des employs qui sont manager dun autre employ. Proposez une requte dclarative et une requte procdurale pour rpondre
Philippe Picouet LUSSI ENST Bretagne 2

2.2

cette question et examinez leurs plans dexcution respectifs. Crez ensuite un index sur lattribut empno et regardez lvolution des plans dexcution proposs.
2.2.1 Accder aux plans dexcution sous SQLPlus

Lexamen du plan dexcution dune requte relationnelle ( explain plan ) se fait en deux phases. La premire phase consiste en une initialisation des structures ad-hoc dans la BD tandis que la deuxime permet vraiment dexaminer le plan dexcution. Les deux phases sont ralises respectivement via lexcution des scripts init.sql & eval.sql, tous deux disponibles sur le web ladresse http://perso.enst-bretagne.fr/~picouet/sgbd/oracle/explain. En particulier, le script eval.sql ralise les trois oprations suivantes initialisation de la structure cre par init.sql (relation PLAN_TABLE), laquelle est destine contenir les donnes dcrivant le plan dexcution lancement de la commande de gnration du plan dexcution sur la requte crite dans le fichier ( select * from emp ; dans le fichier-exemple fourni). Affichage des donnes dexcution

Pour examiner le plan dexcution pour une requte de votre choix, il vous suffit dditer le fichier eval.sql et de remplacer la requte select * from emp ; par la requte de votre choix, puis dexcuter le script partir de linterface SQL : > @eval ; 2.3
2.3.1

Administration
Dictionnaire de donnes

1. Maintenant que vous tes familier de SQL, examinez les tables du dictionnaire de donnes (on parle aussi de mtabase), et en particulier les tables USER_TABLES et COLS. 2. Quen dduisez vous quand lutilit de ces tables ?
2.3.2 Confidentialit

Donnez successivement les droits (help grant) de lecture (SELECT), avec ou sans droit de transmission (WITH GRANT OPTION) votre voisin qui les cdera son tour un troisime collgue. Testez les accs correspondant ces nouveaux droits. Vous pouvez ensuite tester la rcursivit de la suppression de ces droits sur une table. 3 3.1 Mises jour : transaction et intgrit Premires transactions sur une base de donnes 1. Supprimer tous les employs qui travaillent dans le dpartement RESEARCH. Aprs avoir examin le contenu de votre relation EMP, abandonner la transaction (commande rollback ; ) puis examinez nouveau le contenu de EMP 2. Insrer dans la relation emp tous les tuples de cette mme relation emp en diminuant leur empno de 1000. Valider la transaction. Vrifier le contenu des vues que vous avez cres. 3. Insrer dans la relation emp un nouveau tuple ayant pour travail SALESMAN (attention aux majuscules). Vrifier que linsertion a bien t ralise en visualisant la relation. Quel est limpact de cette insertion sur les vues sales_emp et count_job? 4. Mme question avec un tuple qui a pour emploi CLERK ? Abandonner la transaction et examiner ltat de la base. 3.2 Mises jour travers les vues

Philippe Picouet LUSSI ENST Bretagne

1. Insrez maintenant dans la vue sales_emp un employ qui est SALESMAN. Comment expliquez vous la raction du systme ? Dtruisez puis recrez la vue pour que linsertion soit possible. 2. Insrez donc dans votre nouvelle vue sales_emp un employ qui est SALESMAN. Que constatez vous en examinant le contenu de la relation emp et des vues sales_emp et count_job ? 3. Refaites la mme opration (insertion dans sales_emp) avec un autre employ qui est CLERK. Que constatez vous ? Commentez laction du systme. 4. Recrez la vue sales_emp avec la clause with check option et tentez nouveau linsertion dun clerk. Que constatez vous ? 5. Modifiez la vue count_job en diminuant de 1 le nombre demploys CLERK. Comment expliquez vous la raction du systme ? 6. Affecter au dpartement SALES tous les employs qui sont SALESMAN Examiner les rsultats, puis annulez la transaction (rollback ;). Que constatez vous ? 3.3 Contrle dintgrit On souhaite dclarer les contraintes suivantes : 1. Un employ est identifi par son numro demploy empno (contrainte de cl). 2. Le dpartement dans lequel est affect un employ doit tre rfrenc dans la relation dpartement (contrainte de cl rfrentielle) 3. La liste des job est comprise dans les valeurs SALESMAN, PRESIDENT, MANAGER, ANALYST, CLERK. 4. Est il possible de dclarer une cl rfrentielle entre les attributs mgr et empno ? Pour chacune de ces contraintes, vous devez les dclarer au systme et vrifier quelles sont prises en compte en ralisant des mises jour susceptibles de les tester. Quel est le comportement du mcanisme transactionnel dans le cadre de la vrification des contraintes dintgrit ? 4 4.1 Annexes Accs au serveur Oracle

Le serveur Oracle est localis sur une machine de Brest, et identifi par ENSEIG (serveur de dpannage PICOUET0). Les comptes disponibles sur ces serveurs sont les comptes bdd01 bdd15 (mot de passe bdd). Votre compte vous sera affect en dbut de session. 4.1.1 Accs sous Windows Vous pouvez accder Oracle via linterprteur SQLPlus fourni par lditeur. Pour le lancer, accdez au menu Dmarrer de windows, puis slectionnez successivement les items Programmes , Oracle pour windows NT , SQL Plus 8.0 Rentrez alors votre login, password et serveur oracle Vous tes sous linterprteur en ligne dOracle. 4.1.2 Accs sous Unix Chargez lenvironnement dOracle par la commande SETUP ORACLE excuter sous votre C-shell. Puis accdez Oracle en tapant la commande sqlplus. Vous devez alors vous identifier en indiquant votre login et votre password Oracle. 4.2 Premier contact avec SQLPlus Votre schma est constitu dune table EMP (pour employ) et DEPT (pour dpartement).
Philippe Picouet LUSSI ENST Bretagne 4

Pour connatre le schma de vos tables, vous pouvez utiliser la commande desc nom_de_la_table . Par exemple, pour connatre le schma de la relation employ, taper : desc emp Pour connatre le contenu dune table, vous pouvez utiliser les commandes du langage SQL, par exemple : Select * from emp ; Vous tes maintenant capable dattaquer la section suivante : 4.3 Documentation standard ORACLE. Une documentation en ligne est mise votre disposition. Pour accder une aide sur le langage SQL, choisir Oracle8 Server, Release 8.0.5, puis Oracle8 SQL Reference qui vous liste les commandes et leur syntaxe. SQL*Plus User's Guide and Reference propose une explication pour dbuter avec le langage SQL.

Philippe Picouet LUSSI ENST Bretagne