Ecrire dans les fichiers log Oracle

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”

  1. 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.