6f429244e498457b8400e72e4af683b0 Alberto Blog: dbms_support.start_trace

mercoledì 22 agosto 2012

dbms_support.start_trace

Eseguendo un'operazione con un applicativo di archiviazione dati, mi sono imbattuto in un errore software molto generico che tratterò nel prossimo post.
Questo software per archiviare i dati utilizza l'utility export di Oracle (non Datapump) in modo ciclico, infatti, prima esegue delle query per identificare tramite i parametri dati dall'utente che cosa effettivamente archiviare e poi lancia export di Oracle.
Per la quantità di dati presenti e per le capacità del server impiega circa 48 ore per eseguire l'archiviazione desiderata lanciando così l'export di Oracle circa 6 volte, eseguendo di fatto l'export a trance. Visto la durata e la modalita dell’operazione  dovevo mettere il tutto  in trace.
Parlando con il supporto del software mi è stato detto che il problema era del tool di export Oracle e di verificare quale fosse il problema, ovviamente l'errore poteva manifestarsi sia nella prima ma come nella quarta o sesta trance cioè in modo casuale, quindi non potendo essere presente e attivo per tutto questo tempo davanti ad un monitor ho creato una procedura la quale esegue il trace dell'export quando è lanciato
La procedura identifica tramite la V$SESSION la sessione da monitorare con il trace lancia il package dbms_support.start_trace. Questo package lanciato senza parametri abilita a level 1 il trace altrimenti:

Event 10046 level 4:
dbms_support.start_trace (binds=>true);

Event 10046 level 8:
dbms_support.start_trace (waits=>true);

Event 10046 level 12:
dbms_support.start_trace (binds=>true,waits=>true);

E' da ricordare inoltre che questo package non è installato di default da Oracle e per utilizzarlo bisogna lanciare lo script ..../rdbms/admin/dbmssupp.sql.
Consiglierei inoltre di verificare il valore del parametro max_dump_file_size perchè altrimenti una volta arrivato a 100MB non scrive più il file di trace, bisogna impostarlo a UNLIMITED con ALTER SYSTEM SET max_dump_file_size = UNLIMITED;


Facendo così ho trovato nella solita cartella udump i miei traces files.

Aggiornamento 23/08/2012

Ho dovuto togliere la procedura principalmente per 2 motivi:

  1. Non era completa visto che, alcuni parametri gli venivano passati da un package che non posso postare perchè proprietario del software in questione.
  2. Questa procedura viene lanciata proprio da questo package che ho parzialmente modificato.
Ho preferito tenere questo post, sperando a breve di poter inserire la mia procedura in modo diverso così da non creare ambiguità non violando proprietà software.

2 commenti:

Roberto ha detto...

Alberto, scusa ma non ho capito come usi la procedura exp_mon.

Alberto ha detto...

Ciao Roberto, hai ragione, questa procedura viene lanciata da un altro package che gestisce una parte del programma di archiviazione.Non posso pubblicare la parte mancante (appena avuto comunicazione) perchè proprietaria del software. A questo punto sto pensando di rimuovere il post momentaneamente per poterlo completare magari più avanti.

Posta un commento