Analisi dei file di log db2diag mediante lo strumento db2diag

Il file di registro principale destinato agli amministratori del database e del sistema è il registro delle notifiche di amministrazione. I file di log db2diag sono destinati all'assistenza software IBM per la risoluzione dei problemi.

Anche i messaggi di log di notifica dell'amministrazione vengono registrati nei file di log di db2diag utilizzando un formato di messaggio standardizzato.

Lo strumento db2diag serve a filtrare e formattare la mole di informazioni disponibili nei file di log di db2diag. Il filtraggio dei record dei file di log di db2diag può ridurre il tempo necessario per individuare i record necessari alla risoluzione dei problemi.

Esempio 1: Filtrare i file di log di db2diag per nome del database

Se ci sono diversi database nell'istanza e si vogliono vedere solo i messaggi relativi al database "SAMPLE", si possono filtrare i file di log di db2diag come segue:
db2diag -g db=SAMPLE
In questo modo si vedrebbero solo i record del file di registro db2diag che contengono "DB: SAMPLE", come ad esempio:
2006-02-15-19.31.36.114000-300 E21432H406         LEVEL: Error
PID     : 940                  TID  : 660         PROC : db2syscs.exe
INSTANCE: DB2                  NODE : 000         DB   : SAMPLE
APPHDL  : 0-1056               APPID: *LOCAL.DB2.060216003103
FUNCTION: Db2, base sys utilities, sqleDatabaseQuiesce, probe:2
MESSAGE : ADM7507W  Database quiesce request has completed successfully.

Esempio 2: Filtrare i file di log di db2diag per ID di processo

Il comando seguente può essere usato per visualizzare tutti i messaggi di errore gravi prodotti dai processi in esecuzione sulle partizioni 0, 1, 2 o 3 con l'ID di processo (PID) 2200:
db2diag -g level=Severe,pid=2200 -n 0,1,2,3
Si noti che questo comando potrebbe essere stato scritto in un paio di modi diversi, tra cui db2diag -l severe -pid 2200 -n 0,1,2,3. Si noti inoltre che l'opzione -g specifica la ricerca sensibile alle maiuscole e alle minuscole, quindi in questo caso "Severe" funzionerà, ma fallirà se si usa "severe". Questi comandi recuperano con successo i record del file di registro db2diag che soddisfano questi requisiti, come ad esempio:
2006-02-13-14.34.36.027000-300 I18366H421         LEVEL: Severe
PID     : 2200                 TID  : 660         PROC : db2syscs.exe
INSTANCE: DB2                  NODE : 000         DB   : SAMPLE
APPHDL  : 0-1433               APPID: *LOCAL.DB2.060213193043
FUNCTION: Db2, data management, sqldPoolCreate, probe:273
RETCODE : ZRC=0x8002003C=-2147352516=SQLB_BAD_CONTAINER_PATH
          "Bad container path"

Esempio 3: Formattazione dell'output dello strumento db2diag

Il seguente comando filtra tutti i record successivi al 1° gennaio 2006 contenenti errori non gravi e gravi registrati sulle partizioni 0,1 o 2. I record corrispondenti vengono visualizzati in modo tale che la marca temporale, il numero di partizione e il livello appaiano sulla prima riga, il pid, il tid e il nome dell'istanza sulla seconda riga, mentre il messaggio di errore segue a ruota:
db2diag -time 2006-01-01 -node "0,1,2" -level "Severe, Error" | db2diag -fmt 
"Time: %{ts}
Partition: %node Message Level: %{level} \nPid: %{pid}  Tid: %{tid} 
Instance: %{instance}\nMessage: @{msg}\n"
Un esempio dell'output prodotto è il seguente:
Time: 2006-02-15-19.31.36.099000 Partition: 000 Message Level: Error
Pid: 940 Tid:940 Instance: DB2
Message: ADM7506W  Database quiesce has been requested.
Per ulteriori informazioni, eseguire i seguenti comandi:
  • db2diag -help fornisce una breve descrizione di tutte le opzioni disponibili
  • db2diag -h brief fornisce descrizioni per tutte le opzioni senza esempi
  • db2diag -h notes fornisce note e restrizioni d'uso
  • db2diag -h examples fornisce una piccola serie di esempi per iniziare
  • db2diag -h tutorial fornisce esempi per tutte le opzioni disponibili
  • db2diag -h all fornisce l'elenco più completo di opzioni

Esempio 4: filtrare i messaggi provenienti da strutture diverse

Gli esempi seguenti mostrano come visualizzare solo i messaggi di una struttura specifica (o di tutte) dal database manager. Le strutture supportate sono:
  • ALL che restituisce i record di tutte le strutture
  • MAIN che restituisce i record dei log di diagnostica generale Db2®, come i file di log db2diag e il log di notifica dell'amministrazione
  • OPTSTATS, che restituisce i record relativi alle statistiche dell'ottimizzatore
Per leggere i messaggi della struttura MAIN:
db2diag -facility MAIN
Per visualizzare i messaggi dello strumento OPTSTATS e filtrare i record con livello di gravità:
db2diag -fac OPTSTATS -level Severe
Per visualizzare i messaggi di tutte le strutture disponibili e filtrare i record con istanza=harmistr e livello=Errore:
db2diag -fac all -g instance=harmistr,level=Error
Per visualizzare tutti i messaggi della funzione OPTSTATS con un livello di Errore e che producono il campo Timestamp e PID in un formato specifico:
db2diag -fac optstats -level Error -fmt " Time :%{ts} Pid :%{pid}"

Esempio 5: unione di file e ordinamento dei record in base alla data e all'ora

Questo esempio mostra come unire due o più file di log db2diag e ordinare i record in base ai timestamp.

I due file di registro di db2diag da unire sono i seguenti:
  • db2diag.0.logcontiene i record di Livello:Errore con le seguenti date:
    • 2009-02-26-05.28.49.822637
    • 2009-02-26-05.28.49.835733
    • 2009-02-26-05.28.50.258887
    • 2009-02-26-05.28.50.259685
  • db2diag.1.logcontiene i record di Livello:Errore con le seguenti date:
    • 2009-02-26-05.28.11.480542
    • 2009-02-26-05.28.49.764762
    • 2009-02-26-05.29.11.872184
    • 2009-02-26-05.29.11.872968
Per unire i due file di registro diagnostico e ordinare i record in base alla data e all'ora, eseguire il comando seguente:
db2diag -merge db2diag.0.log db2diag.1.log -fmt %{ts} -level error
Il risultato dell'unione e dell'ordinamento dei record è il seguente:
  • 2009-02-26-05.28.11.480542
  • 2009-02-26-05.28.49.764762
  • 2009-02-26-05.28.49.822637
  • 2009-02-26-05.28.49.835733
  • 2009-02-26-05.28.50.258887
  • 2009-02-26-05.28.50.259685
  • 2009-02-26-05.29.11.872184
  • 2009-02-26-05.29.11.872968
dove i timestamp vengono uniti e ordinati cronologicamente.

Esempio 6: unione dei file di percorso delle directory diagnostiche da un singolo host e ordinamento dei record in base ai timestamp

Per impostazione predefinita, ogni membro e CF registra in un file di log db2diag diverso. Di seguito è riportato un elenco dei tre file di log db2diag da unire:
  • ~/sqllib/db2dump/DIAG0000/db2diag.log
  • ~/sqllib/db2dump/DIAG0001/db2diag.log
  • ~/sqllib/db2dump/DIAG0002/db2diag.log
Per unire i tre file di log diagnostici e ordinare i record in base alla data e all'ora, eseguire il seguente comando:
db2diag -merge

Esempio 7: Unione dei file di percorso delle directory diagnostiche da più host e partizioni di database

Questo esempio mostra come ottenere un output di tutti i record di tutti i registri diagnostici e unire i file dei registri diagnostici di tre partizioni del database su ciascuno dei due host, bower e horton. L'elenco seguente mostra i sei file di log di db2diag :
  • ~/sqllib/db2dump/HOST_bower/DIAG0000/db2diag.log
  • ~/sqllib/db2dump/HOST_bower/DIAG0001/db2diag.log
  • ~/sqllib/db2dump/HOST_bower/DIAG0002/db2diag.log
  • ~/sqllib/db2dump/HOST_horton/DIAG0003/db2diag.log
  • ~/sqllib/db2dump/HOST_horton/DIAG0004/db2diag.log
  • ~/sqllib/db2dump/HOST_horton/DIAG0005/db2diag.log
Per visualizzare i record di tutti e sei i file di log di db2diag, eseguire il seguente comando:
db2diag -global
Per unire tutti i sei file di log db2diag nel percorso della directory dei dati diagnostici da tutte e tre le partizioni del database su ciascuno degli host bower e horton e formattare l'output in base al timestamp, eseguire il seguente comando:
db2diag -global -merge -sdir /temp/keon -fmt %{ts}
dove /temp/keon è una directory condivisa, condivisa dagli host bower e horton, per memorizzare i file temporanei uniti da ciascun host durante l'elaborazione.

Esempio 8: filtrare e unire solo le voci recenti del registro di diagnostica

In questo esempio, i record del file di log db2diag vengono filtrati per visualizzare solo un numero specifico di voci recenti. Per visualizzare gli ultimi 5 record formattati per ciascuna delle 3 partizioni in un ambiente di database partizionato, uniti e formattati per data e ora, immettere:
db2diag -lastrecords 5 -global -merge -sdir /home/vbmithun -fmt %{ts}

2010-10-08-04.46.02.092192
2010-10-08-04.46.02.092821
2010-10-08-04.46.02.093497
2010-10-08-04.46.02.094431
2010-10-08-04.46.02.095317
2010-10-08-04.46.05.068648
2010-10-08-04.46.05.069212
2010-10-08-04.46.05.069900
2010-10-08-04.46.05.071008
2010-10-08-04.46.05.071831
2010-10-08-04.46.07.302051
2010-10-08-04.46.07.302727
2010-10-08-04.46.07.303544
2010-10-08-04.46.07.304647
2010-10-08-04.46.07.305391
È inoltre possibile filtrare ulteriormente i record di log diagnostici recenti per restituire solo i messaggi di un livello specifico. Ad esempio, per visualizzare solo i record degli ultimi 10 record che presentano un livello di messaggio grave, immettere:
$ db2diag db2diag.log -lastrecords 10 -level Severe -fmt %{ts}

2010-08-11-04.11.33.733807
2010-08-11-04.11.33.735398

Esempio 9: Archiviazione dei file di log db2diag

È possibile utilizzare l'opzione db2diag -archive (o -A ), disponibile con IBM® Data Server Driver Package e IBM Data Server for ODBC and CLI, per archiviare il file di registro diagnostico su un client senza istanza. Ad esempio:
$ db2diag -A
db2diag: Moving "/home/usr1/clidriver/db2dump/db2diag.log"
         to     "/home/usr1/clidriver/db2dump/db2diag.log_2010-09-14-01.16.26"
Nota: I seguenti comandi possono produrre gli stessi risultati su un client senza istanza.
Se si specificano opzioni diverse da -archive o -A, viene restituito un messaggio di errore. Ad esempio:
$ db2diag -x
db2diag: Unrecognized option: -x

$ db2diag -pid 1234
db2diag: Unrecognized option: -pid