Oracle Error Logging

Oracle possède des outils permettant la journalisation, dans des tables dédiées, des erreurs Oracle survenues lors d’opérations DML, sans pour autant interrompre l’exécution du programme.

La procédure en question s’appelle DBMS_ERRLOG et s’utilise de telle manière :

I – CREATION DES TABLES D’ERREURS

Voici le code PL/SQL a exécuter, permettant la création des tables erreurs. Il récupère l’ensemble des tables appartement à un certain utilisateur et applique pour chacune d’entre elle la fonction create_error_log de la procédure DBMS_ERRLOG. Il est possible de la modifier en fonction du besoin.

DECLARE
CURSOR allTables IS
SELECT table_name FROM all_tables WHERE owner = [owner_name];
BEGIN
FOR selectTable IN allTables LOOP
DBMS_ERRLOG.create_error_log (dml_table_name => selectTable.TABLE_NAME, skip_unsupported => TRUE);
END LOOP;
END;
/

Toutes les nouvelles tables seront préfixées du trigramme ERR suivi du symbole $. Afin de vérifier l’existence des nouvelles tables, exécuter la requête SQL suivante en remplaçant la variable [owner_name] par la valeur qui convient :

SELECT table_name 
FROM all_tables 
WHERE owner = [owner_name] 
AND table_name like 'ERR$%';

 

Pour supprimer les tables de journalisation des erreurs, il suffit d’exécuter le code PL/SQL suivant en remplaçant la variable [owner_name] par la valeur qui convient :

DECLARE
CURSOR allTables IS
SELECT table_name FROM all_tables WHERE owner = [owner_name] AND table_name like 'ERR$%';
BEGIN
FOR selectTable IN allTables LOOP
execute immediate 'DROP TABLE ' || selectTable.table_name;
END LOOP;
END;
/

 

II – MISE EN PLACE

Afin que les erreurs soient tracées dans les nouvelles tables, il faut modifier les instructions DELETE, UPDATE ou INSERT en les terminant par le bout de code suivant :

LOG ERRORS REJECT LIMIT UNLIMITED;

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *