Académique Documents
Professionnel Documents
Culture Documents
1. Introduction
2
L’administrateur d’une base de données, a toujours besoin de savoir ce qui se passe dans la bas
données qu’il administre, surtout lorsqu’il y a perte de données suspecte ou effacement de
table index etc. …
Pour cela Oracle donne deux possibilités d’auditer une base de données :
Exemple pour auditer les accès à la base de données, un déclencheur système ON LOGO
nécessaire et ce déclencheur peut être de niveau base de données (pour tous les
utilisateurs comme il peut être au niveau schéma (seulement pour l’utilisateur
propriétaire).
Les system triggers pour les ( LOGON, STARTUP, CREATE, DROP …) et les DML
triggers pour toutes requêtes (update, select, delete …).
L’avantage de ce type d’audit est que c’est l’administrateur qui décide de tout, et pour
les triggers de type DML, il peut aussi auditer les valeurs de la base de données, -
exemple les lignes effacées, ou les colonnes modifiées par les références (OLD) pour
les ancienne valeurs et (NEW) pour les nouvelles valeurs.
Démarrage de la base
CREATE OR REPLACE TRIGGER TRACE_BD1 3
AFTER STARTUP ON DATABASE
DECLARE
a constant varchar2(50):='DEMMARAGE DE LA BASE :';
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO TRACE
VALUES('''||A||TO_CHAR(SYSDATE,'yyyymmdd_hh24mi')||''
')';
EXCEPTION
WHEN others THEN NULL;
END;
Arrêt de la base
CREATE OR REPLACE TRIGGER TRACE_BD2
BEFORE SHUTDOWN ON DATABASE
DECLARE
a constant varchar2(50):='ARRET DE LA BASE :';
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO TRACE
VALUES('''||A||TO_CHAR(SYSDATE,'yyyymmdd_hh24mi')||''
')';
EXCEPTION
WHEN others THEN NULL;
END;
END IF;
END ;
SELECT upper(name)
INTO v_db
from v$database;
/* Utilisation à proscrire */
THEN
RAISE_APPLICATION_ERROR(-20000, 'ORACLE n''est pas autorisé à connecté puisque
vous ete etranger' ||' sur l''environnement'||v_db);
Question :
Une table peut comporter plusieurs déclencheurs d'un type donné ?
Oui, à condition que chacun possède un nom différent. Cependant, un
déclencheur donné ne peut être assigné qu'à une seule et unique table tout
en s'appliquant à la fois, à l'insertion, la mise à jour et la suppression
d'enregistrements sur la table en question.
Trigger created.
Auditer une base de données oracle avec les triggers (déclencheurs)
NB : Les variables spéciales NEW et OLD sont disponibles pour
se référer respectivement à des nouveaux ou d'anciens
enregistrements. Les deux points (:) précédent NEW et OLD 6
dans VALUES sont dans ce cas obligatoires
utilisateur VARCHAR2(50);
BEGIN
BEGIN
v_ChangeType := 'I';
END ;
BEGIN
v_ChangeType := 'U';
END ;
ELSE
BEGIN
v_ChangeType := 'D';
END ;
END IF;
END;
Auditer une base de données oracle avec les triggers (déclencheurs)