PL/Sql et Sécurité des bases de données

download PL/Sql et Sécurité des bases de données

of 93

  • date post

    15-Feb-2017
  • Category

    Technology

  • view

    432
  • download

    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