
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 ;