PL/Sql et Sécurité des bases de données
date post
15-Feb-2017Category
Technology
view
432download
0
Embed Size (px)
Transcript of PL/Sql et Sécurité des bases de données
PL/SQL etScurit de la base de donnes
Prpar par:Meryem MOUSSAMIWafaa HARKATISalma GHAOUTAEncadr par:M.HANOUNE
1
le langage PL/SQL Administration de base de donnes1
2
Plan Introduction Langage PL/SQLLes objets PL/SQLOptions de configuration PL/SQLconclusion
Le langage PL/SQL est un langage de programmation de quatrime gnration, propritaireOracle, qui fournit des extensions procdurales du langage SQL. Il offre un environnement deprogrammation commun pour les bases de donnes et applications Oracle, quel que soit lesystme d'exploitation ou la plate-forme matrielle.
Il permet de :
dfinir un ensemble de commandes contenues dans ce que l'on appelle un "bloc" PL/SQL. Un bloc PL/SQL peut lui-mme contenir des sous-blocs.
Le PL/SQL peut tre utilis sous 3 formes :
un bloc de code, excut comme une commande SQL.un fichier de commande PL/SQLun programme stock Dfinition : Procedural Language / Structured Query Language
4
Structure dun bloc PLComment crer un bloc PL/SQL
Syntaxe :
Partie DECLARE et EXCEPTION sont optionnel DECLARE
Variables, curseurs, exceptions dfinies
BEGIN
Instructions SQL & PL/SQL
EXCEPTION
Action raliser quand une exception est leve
END; /
5
Traitement dun bloc PL/SQL
6
Administrer les objets PL/SQL
Un DBA doit pouvoir:Identifier les Objets PL/SQL Recommander lutilisation approprie du langage PL/SQLCharger les objets PL/SQL dans la base de donnesAssister les dveloppeurs PL/SQL dans la rsolution des problmes
7
Objets PL/SQL
Il existe de nombreux types dobjet de base de donnes PL/SQL:FonctionProcdurePackageCorps de PackageDclencheur
8
Les fonctions
9
Une fonction est un bloc PL/SQL nomm qui renvoie obligatoirement une valeur.
Une fonction peut tre stocke dans la base de donnes, comme objet de base de donnes, en vue d'excutions rptes.
Une fonction peut tre appele en tant que partie d'une expression
Dfinition
10
Structure dune fonction Comment crer une fonction
Syntaxe :
CREATE [OR REPLACE] FUNCTION function_name(parameter1 [mode1] datatype1,parameter2 [mode2] datatype2,. . .)
RETURN datatype
IS
PL/SQL Bloc;
Le bloc PL/SQL doit y avoir au moins une instruction return
11
Exemple :
CREATE OR REPLACE FUNCTION get_sal (v_id IN emp.empno%TYPE)
RETURN NUMBER
IS v_salary emp.sal%TYPE :=0; BEGIN SELECT sal INTO v_salary FROM emp WHERE empno = v_id; RETURN (v_salary); END get_sal;
/
12
Une fonction peut comporter un ou plusieurs paramtres IN, mais ne doit retourner qu'une seule valeur.
Le code d'une fonction PL/SQL doit contenir une instruction RETURN.
A noter
13
Elle accepte des paramtres en entre (listes des arguments).
Une procdure est un bloc PL/SQL nomm qui effectue une action spcifique.
Dfinition Procdure
14
Syntaxe pour la cration dune procdureComment est ce quon peut crer une procdure?
La Syntaxe :
Une procdure est appele laide de la commande CALL .CREATE [OR REPLACE] PROCEDURE procedure_name(parameter1 [mode1] datatype1, parameter2 [mode2] datatype2, )IS | AS
Block PL/SQL;
15
CREATE OR REPLACE PROCEDURE Augmentation (v_Numemp IN numro de l'employ EMP.empno%Type , v_Pourcent IN NUMBER ) pourcentage daugmentationIs BEGIN -- augmentation de l'employ Update EMP Set sal = sal+ sal * v_Pourcent Where empno = v_Numemp ; END; /
Exemple
16
D'une faon gnrale, les procdures ne devraient pas excuter des instructions de fin de transaction (COMMIT, ROLLBACK, Ordre DDL).
La dcision d'enregistrer ou annuler la transaction en cours relve du programme appelant.A noter
17
Un paquetage/package est un ensemble de procdures et fonctions regroupes dans un objet nomm. Par exemple :
Le paquetage Oracle DBMS_LOB. Le paquetage UTL_FILE.
Dfinition Package
Detailler les 2 exemples de package18
Un paquetage est organis en deux parties distinctes :
Une partie spcificationqui permet de spcifier la fois les fonctions et procdures publiques ainsi que les dclarations des types, variables, constantes, exceptions et curseurs utiliss dans le paquetage et visibles par le programme appelant.Une partie corpsqui contient les blocs et les spcifications de tous les objets publics lists dans la partie spcification.Cette partie peut inclure des objets qui ne sont pas lists dans la partie spcification, et sont donc privs.Cette partie peut galement contenir du code qui sera excut chaque invocation du paquetage par l'utilisateur.
Dfinition
19
Package
20
Syntaxe pour la cration dun packageComment est ce quon peut crer un package?
La Syntaxe pour la spcification:
CREATE [OR REPLACE] PACKAGE nom_packageAs Dfinition des fonctions , procdure End nom_package ; /
Exemple :CREATE PACKAGE clients ASPROCEDURE insere_client (no INTEGER, nom VARCHAR2, ...);PROCEDURE supprime_client (no INTEGER);...END;
La dclaration de la partie spcification d'un paquetage s'effectue avec l'instructionCREATE [OR REPLACE] PACKAGE
Celle de la partie corps avec l'instructionCREATE [OR REPLACE] PACKAGE BODY
21
Package
22
Syntaxe pour la cration dun package(suite)Comment est ce quon peut crer un package?
La Syntaxe pour le corps:
CREATE [OR REPLACE] PACKAGE BODY nom_packageAs Dfinition des fonctions BEGIN END; Dfinition procdureBEGIN END;..
End nom_package ; /
La dclaration de la partie spcification d'un paquetage s'effectue avec l'instructionCREATE [OR REPLACE] PACKAGE
Celle de la partie corps avec l'instructionCREATE [OR REPLACE] PACKAGE BODY
23
Corps du package
24
Les avantages de pl/sql package
Une meilleur performanceInformation en cachette Une conception facile de lapplication La modularit
Les packages PL/SQL intgrs fournis avec Oracle Database 10g permettent l'accs des fonctionnalits de base de donnes .
Ils comprennent galement de nombreux utilitaires d'administration et de maintenance.Packages intgrs
Detailler les 2 exemples de package26
Les packages utiliss par un administrateur dpendent du type d'application que la base de donnes excute. Voici quelques-uns des packages d'administration et de maintenance les plus courants
Le package PL/SQL intgrs DBMS_STATSpermet de collecter, modifier, consulter, exporter et supprimer les statistiques relatives vos tables.
DBMS_TTS : validation des tablespaces transportables.
DBMS_SESSION : accs PL/SQL aux instructions ALTER SESSION et SET ROLE
Le package DBMS_OUTPUTGet_line (ligne out varchar2, statut out integer) : extrait une ligne du tampon de sortie. Get_lines (lignes out varchar2, n in out integer) : extrait partir du tampon de sortie un tableau de n lignes.New_line : place un marqueur de fin de ligne dans le tampon de sortie. Put (variable|conatante in {varchar2|number|date} : combinaison de put et new_line. Enable (taille tampon in integer default 2000) : permet de mettre en route le mode trace dans une procdure ou une fonction. Disable : permet de dsactiver le mode trace dans une procdure ou une fonction.
Ce package permet de stocker de linformation dans un tampon avec les procdures PUT ou PUT_LINE.Il est possible de rcuprer linformation grce aux procdures GET et GET_LINE
Les dclencheursUn dclencheur est un bloc PL/SQL associ une vue ou une table, qui s'excutera lorsqu'une instruction du langage de manipulation de donnes (DML) sera excute
Il est utilis pour implmenter des rgles de gestion complexes et pour tendre les rgles dintgrit rfrentielle associe table lors de leur cration de cette dernire
Caractristiques d'un Trigger
Le traitement est exprim en PL/SQL. Il peut lui-mme faire appel des procdures et des fonctions crites en PL ou Java.
Son code est stock dans la base de donnes.
Un dclencheur peut tre actif ou non
Si un dclencheur aboutit, la transaction qui l'a appel peut se poursuivre
Le dclenchement peut se propager en cascade, tout en respectant le principe d'atomicit d'une transaction OPEN_CURSORS
Un dclencheur s'excute dans le cadre d'une transaction. Il ne peut donc pas contenir d'instruction COMMIT ou ROLLBACK ou toute instruction gnrant une fin de transaction implicite (ordre DDL)
Syntaxe pour la cration dun trigger Create or replace trigger before/afterinsert or update of , , ...or deleteon [for each row [when ()]][declaretypes, constantes ou variables eventuelles]begintexte du triggerend; Comment est ce quon peut crer un trigger?
La dclaration de la partie spcification d'un paquetage s'effectue avec l'instructionCREATE [OR REPLACE] PACKAGE
Celle de la partie corps avec l'instructionCREATE [OR REPLACE] PACKAGE BODY
32
Exemple pour la cration dun trigger
Comment est ce quon peut crer un trigger?
BODY
33
Rsolution multi-vnementsUn Trigger peut rpondre plusieurs vnements.
Dans ce cas, il est possible d'utiliser les prdicats intgrs INSERTING, UPDATING ou DELETING pour excuter une squence particulire du traitement en fonction
Recommended