Conception Et Réalisation (Oracle) by Grare Stéphane - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

Verrouillage interne

Ce troisième type de verrouillage concerne la mémoire utilisée par Oracle pour l'exécution du

noyau et des applications. Il est complètement transparent aux utilisateurs. Il existe un type

particulier de verrous internes appelés loquets (Latches). Ce sont des mécanismes internes

d'Oracle permettant la protection des structures partagées de la SGA telles que la liste des

utilisateurs actuels de la base. Ce type de verrouillage est activé et désactivé par les

différents processus internes d'Oracle (processus serveurs ou d'arrière-plan).

Les déclencheurs

Les déclencheurs LDD

Sur les événements système, il est possible d’utiliser les triggers pour suivre les changements

d’état du système, tel que l’arrêt ou le démarrage. Les triggers d’arrêt et de démarrage ont

comme porté l’ensemble de l’instance Oracle.

Sur les événements utilisateur, ils s'exécutent essentiellement en réponse aux instructions

LDD (Data Definition Language).

Il s'agit des instructions CREATE, ALTER, DROP, GRANT, DENY, REVOKE et UPDATE

STATISTICS.

Les déclencheurs LDD, tout comme les déclencheurs LMD, exécutent des instructions PL/SQL

en réponse à un événement.

CREATE TRIGGER nom_trigger {AFTER|BEFORE} evenement_systeme

ON {DATABASE|SCHEMA}

Bloc PL/SQL

……..

Ou

CREATE TRIGGER nom_trigger {AFTER|BEFORE} evenement_utilisateur

ON {DATABASE|SCHEMA}

Bloc PL/SQL

……..

Selon l’option définie, le trigger va s’appliquer sur l’ensemble des bases de données définies

sur le serveur, ou sur le schéma actif.

Utilisation des déclencheurs LDD

Utilisez des déclencheurs LDD dans les cas suivants :

· Vous voulez empêcher certaines modifications sur votre schéma de base de données.

144

· Vous voulez qu'un événement se produise dans la base de données en réponse à une

modification du schéma.

· Vous voulez enregistrer des modifications ou des événements dans le schéma de la base de

données.

Les déclencheurs LDD ne s'activent qu'après l'exécution des instructions LDD de

déclenchement. Les déclencheurs LDD ne peuvent pas être utilisés comme déclencheurs

INSTEAD OF.

Par exemple, un déclencheur LDD créé pour être activé en réponse à un événement ALTER

TABLE se déclenchera à chaque fois qu'un événement ALTER TABLE se produit dans la base

de données. Un déclencheur LDD créé pour être activé en réponse à un événement CREATE

LOGIN se déclenchera à chaque fois qu'un événement CREATE LOGIN se produit sur le

serveur.

Exemple 1 : Création d’un trigger qui se déclenche à la modification / suppression de lignes

d’une table.

CREATE TRIGGER securite_trigger

FOR DROP_TABLE, ALTER_TABLE

ON DATABASE

BEGIN

RAISERROR(‘Modification / Suppression impossible’,16,1)

ROLLBACK ;

End ;