Ecrire dans les différents logs Oracle est une de ces idées qui peut sembler géniale à priori et s’avère source d’ennuis dans l’immense majorité des cas. N’utilisez pas les packages ci-dessous… et surtout pas dans le but d’effrayer vos collègues. N’oubliez pas que le stress est source d’erreur.
Ecrire dans l’alert.log
Le package dbms_system.ksdwrt
permet d’écrire dans les alert.log ou les fichiers de traces :
exec sys.dbms_system.ksdwrt(2, -
'ORA-00600: You are fucking screwed up !!!')
Ecrire dans le log data pump
Notez que la commande ci-dessous préfixe la ligne envoyée par les caractères « ;;; » :
accept owner prompt 'Entrez le propriétaire du Job DataPump: '
accept dpname prompt 'Entrez le nom du du Job DataPump : '
set serveroutput on
declare
ind number;
h1 number;
begin
h1 := dbms_datapump.attach('&&owner',
'&&dpname');
dbms_datapump.log_entry(h1, 'OutOfMemory ;;; Starting Random Kill In 60 Seconds',0);
dbms_datapump.detach(h1);
end;
/
D’autres mauvaises idées ?
2 réflexions sur “Ecrire dans les fichiers log Oracle”
Merci Grégory,
Avec ça je suis prêt pour le 1er Avril.
😉
Jusqu’en V10, j’ai toujours trouvé dbms_system.ksdwrt bien pratique pour insérer des messages d’erreur volontaires dans l’alert.log, lorsqu’on souhaitait vérifier leur bonne détection par un outil de supervision.
En V11, il y a un bémol : KSDWRT n’agit que sur l’alert.log, mais pas dans son équivalent XML, donc on ne peut pas retrouver ces erreurs volontaires par ADRCI.
Finalement, la méthode appropriée semble bien être un bête bout de PL/SQL dans lequel on déclenche l’exception souhaitée.
On en verra le résultat aussi bien dans l’alert.log que par ADRCI.
declare
ORA600 exception;
pragma exception_init(ORA600, -600);
begin
raise ORA600;
end;
/
Les commentaires sont fermés.