Trace File Analyzer (TFA)

05.
Oktober
2015
Veröffentlicht von: Stefan Hartsberger

Es stand bestimmt jeder schon mal vor der Aufgabe, die Logfiles einer Datenbank (und alle dazugehörigen OS Logfiles) zu einem Vorfall zu analysieren, der bereits ein paar Stunden zurück liegt.

Es stand bestimmt jeder schon mal vor der Aufgabe, die Logfiles einer Datenbank (und alle dazugehörigen OS Logfiles) zu einem Vorfall zu analysieren, der bereits ein paar Stunden zurück liegt. Je weiter dieser Vorfall in der Vergangenheit liegt, desto aufwändiger gestaltet es sich alle relevanten Logfiles zusammenzutragen. Handelt es sich nicht um eine Single Instanz, sondern um eine Clusterware, muss man aufgrund der Anzahl der Logfiles den Ablauf automatisieren.

Bisher kam hierzu das Skript "diagcollection.pl" zum Einsatz. Es hatte jedoch vor allem den Nachteil, dass es auf jedem RAC Knoten separat ausgeführt werden musste.

Der Trace File Analyzer (TFA) schafft Abhilfe und bietet darüber hinaus weitere hilfreiche Funktionen. Hier eine kleine Auflistung:

  • Clusterweites Sammeln von Logfiles
  • Zeitraum der zu sammelnden Informationen definierbar
  • Sammeln von einzelnen Komponenten (DB, Clusterware, OS, ...)
  • Generieren von AWR Reports
  • Sammeln von OSWatcher Daten
  • Rechtevergabe an non-root User
  • Analysieren und Durchsuchen der Logfiles
  • etc.

Des Weiteren bringt der TFA auch noch folgende Tools mit, welche detailliert im User Guide erklärt sind:
alertsummary, ls, pstack, orachk, sqlt, grep, summary, prw, vi, tail, param, dbglevel, darda, history, oratop, oswbb, changes, events, ps

Im MOS Dokument Opens external link in new window1513912.2 (TFA Collector - Tool for Enhanced Diagnostic Gathering) sind alle relevanten Informationen zum TFA zusammengefasst. Dort kann man den TFA und den User Guide herunterladen.

1. Installation

In diesem Monatstipp wird folgende Single Instanz Testumgebung verwendet:
OS: CentOS 5.5
DB: 11.2.0.4
TFA: 12.1.2.5.0

Nachdem der Download abgeschlossen ist, kopieren wir das Zip File auf unsere Test VM.

Entpacken

[root@server01 stage]# unzip TFALite_121250.zip
Archive:  TFALite_121250.zip
  inflating: installTFALite
  inflating: TFACollectorDocV121250.pdf

Installieren

Mit folgendem Befehl werden die möglichen Aufruf-Optionen angezeigt.

[root@server01 stage]# ./installTFALite -h

   Usage for ./installTFALite

   ./installTFALite [-local][-deferdiscovery][-tfabase <install dir>][-javahome <path to JRE>][-silent][-receiver]

        -local            -    Only install on the local node
        -deferdiscovery   -    Discover Oracle trace directories after installation completes
        -tfabase          -    Install into the directory supplied
        -javahome         -    Use this directory for the JRE
        -silent           -    Do not ask any install questions
        -receiver         -    TFA runs in receiver mode.  Otherwise run in full mode
        -debug            -    Print debug tracing and do not remove TFA_HOME on install failure


   Note: Without parameters TFA will take you through an interview process for installation
         /tfa will be appended to -tfabase if it is not already there.

Wir passen den Aufruf unserer Umgebung an (TFA_BASE = ORACLE_BASE = /u03/app/oracle | JAVA_HOME = ORACLE_HOME/jdk) und lassen die restlichen Parameter dynamisch abfragen.

[root@server01 stage]# ./installTFALite -tfabase /u03/app/oracle -javahome /u03/app/oracle/product/11.2.0.4/dbhome_1/jdk

Starting TFA installation

Using JAVA_HOME : /u03/app/oracle/product/11.2.0.4/dbhome_1/jdk

Running Auto Setup for TFA as user root...

Would you like to do a [L]ocal only or [C]lusterwide installation ? [L|l|C|c] [C] : l
Installing TFA now...

Discovering Nodes and Oracle resources

Checking whether CRS is up and running

List of nodes in cluster
1. server01

Checking Status of Oracle Software Stack - Clusterware, ASM, RDBMS

. . . . . . . . .


TFA Will be Installed on server01...

TFA will scan the following Directories
++++++++++++++++++++++++++++++++++++++++++++

.-------------------------------------------------------------------.
|                              server01                             |
+-------------------------------------------------------+-----------+
| Trace Directory                                       | Resource  |
+-------------------------------------------------------+-----------+
| /dbfs_obdbfs/OSB/backup/admin/log                     | ZDLRA     |
| /dbfs_obdbfs/OSB/tmp                                  | ZDLRA     |
| /radump                                               | ZDLRA     |
| /u01/app/oraInventory/ContentsXML                     | INSTALL   |
| /u01/app/oraInventory/logs                            | INSTALL   |
| /u02/app/oracle/agent/agent_inst/install/logs         | EMPLUGINS |
| /u02/app/oracle/agent/agent_inst/sysman/log           | EMAGENT   |
| /u02/app/oracle/agent/core/12.1.0.2.0/cfgtoollogs     | EMAGENT   |
| /u02/app/oracle/agent/sbin/cfgtoollogs                | EMAGENT   |
| /u03/app/oracle/cfgtoollogs                           | CFGTOOLS  |
| /u03/app/oracle/diag/rdbms/testdb/testdb/cdump        | RDBMS     |
| /u03/app/oracle/diag/rdbms/testdb/testdb/trace        | RDBMS     |
| /u03/app/oracle/diag/tnslsnr/server01/listener/cdump  | TNS       |
| /u03/app/oracle/diag/tnslsnr/server01/listener/trace  | TNS       |
| /u03/app/oracle/product/11.2.0.4/dbhome_1/cfgtoollogs | CFGTOOLS  |
| /u03/app/oracle/product/11.2.0.4/dbhome_1/install     | INSTALL   |
| /usr/tmp                                              | ZDLRA     |
'-------------------------------------------------------+-----------'


Installing TFA on server01:
HOST: server01  TFA_HOME: /u03/app/oracle/tfa/server01/tfa_home

.-----------------------------------------------------------------------------.
| Host     | Status of TFA | PID   | Port | Version    | Build ID             |
+----------+---------------+-------+------+------------+----------------------+
| server01 | RUNNING       | 23537 | 5000 | 12.1.2.5.0 | 12125020150615061618 |
'----------+---------------+-------+------+------------+----------------------'

Running Inventory in All Nodes...

Enabling Access for Non-root Users on server01...

Sucessfully added 'oracle' to TFA Access list.

.---------------------------------.
|            TFA Users            |
+-----------+-----------+---------+
| User Name | User Type | Status  |
+-----------+-----------+---------+
| oracle    | USER      | Allowed |
'-----------+-----------+---------'


Summary of TFA Installation:
.-------------------------------------------------------------.
|                           server01                          |
+---------------------+---------------------------------------+
| Parameter           | Value                                 |
+---------------------+---------------------------------------+
| Install location    | /u03/app/oracle/tfa/server01/tfa_home |
| Repository location | /u03/app/oracle/tfa/repository        |
| Repository usage    | 0 MB out of 1968 MB                   |
'---------------------+---------------------------------------'


TFA is successfully installed...


Usage : /u03/app/oracle/tfa/bin/tfactl <command> [options]
<command> =
          start        Starts TFA
          stop         Stops TFA
          enable       Enable TFA Auto restart
          disable      Disable TFA Auto restart
          print        Print requested details
          access       Add or Remove or List TFA Users and Groups
          purge        Delete collections from TFA repository
          directory    Add or Remove or Modify directory in TFA
          host         Add or Remove host in TFA
          diagcollect  Collect logs from across nodes in cluster
          collection   Manage TFA Collections
          analyze      List events summary and search strings in alert logs.
          set          Turn ON/OFF or Modify various TFA features
          toolstatus     Prints the status of TFA Support Tools
          run <tool>     Run the desired support tool
          start <tool>   Starts the desired support tool
          stop <tool>    Stops the desired support tool
          restart <tool> Restarts the desired support tool
          uninstall      Uninstall TFA from this node
          diagnosetfa    Collect TFA Diagnostics

For help with a command: /u03/app/oracle/tfa/bin/tfactl <command> -help

Wie man sieht, wurde die Installation erfolgreich beendet. Es werden verschiedene Einstellungen wie z. B. die Directories, die gescannt werden sollen, aufgelistet. Abschließend werden die Aufrufoptionen von tfactl aufgelistet.

2. Überprüfung der Einstellungen

Um einen Überblick der Einstellungen zu erhalten, führen wir die folgenden Befehle aus:

Status

[root@server01 stage]# cd /u03/app/oracle/tfa/bin
[root@server01 bin]# ./tfactl print status

.-------------------------------------------------------------------------.
| Host     | Status of TFA | PID   | Port | Version    | Inventory Status |
+----------+---------------+-------+------+------------+------------------+
| server01 | RUNNING       | 23537 | 5000 | 12.1.2.5.0 | COMPLETE         |
'----------+---------------+-------+------+------------+------------------'

Konfiguration

[root@server01 bin]# ./tfactl print config
.----------------------------------------------------------.
|                         server01                         |
+---------------------------------------------+------------+
| Configuration Parameter                     | Value      |
+---------------------------------------------+------------+
| TFA version                                 | 12.1.2.5.0 |
| Automatic diagnostic collection             | OFF        |
| Trimming of files during diagcollection     | ON         |
| Repository current size (MB)                | 0          |
| Repository maximum size (MB)                | 1968       |
| Inventory Trace level                       | 1          |
| Collection Trace level                      | 1          |
| Scan Trace level                            | 1          |
| Other Trace level                           | 1          |
| Max Size of TFA Log (MB)                    | 50         |
| Max Number of TFA Logs                      | 10         |
| Max Size of Core File (MB)                  | 20         |
| Max Collection Size of Core Files (MB)      | 200        |
| Automatic Purging                           | ON         |
| Minimum Age of Collections to Purge (Hours) | 12         |
'---------------------------------------------+------------'

Die einzelnen Parameter sind im User Guide detailliert erklärt.

Repository

[root@server01 bin]# ./tfactl print repository
.-------------------------------------------------------.
|                        server01                       |
+----------------------+--------------------------------+
| Repository Parameter | Value                          |
+----------------------+--------------------------------+
| Location             | /u03/app/oracle/tfa/repository |
| Maximum Size (MB)    | 1968                           |
| Current Size (MB)    | 0                              |
| Free Size (MB)       | 1968                           |
| Status               | OPEN                           |
'----------------------+--------------------------------'

Wir sehen, wo das Repository liegt und wie groß es maximal werden kann.

Tool Status

[root@server01 bin]# ./tfactl toolstatus
.---------------------------------------.
|         External Support Tools        |
+----------+--------------+-------------+
| Host     | Tool         | Status      |
+----------+--------------+-------------+
| server01 | alertsummary | DEPLOYED    |
| server01 | exachk       | DEPLOYED    |
| server01 | ls           | DEPLOYED    |
| server01 | pstack       | DEPLOYED    |
| server01 | orachk       | DEPLOYED    |
| server01 | sqlt         | DEPLOYED    |
| server01 | grep         | DEPLOYED    |
| server01 | summary      | DEPLOYED    |
| server01 | prw          | NOT RUNNING |
| server01 | vi           | DEPLOYED    |
| server01 | tail         | DEPLOYED    |
| server01 | param        | DEPLOYED    |
| server01 | dbglevel     | DEPLOYED    |
| server01 | darda        | DEPLOYED    |
| server01 | history      | DEPLOYED    |
| server01 | oratop       | DEPLOYED    |
| server01 | oswbb        | RUNNING     |
| server01 | changes      | DEPLOYED    |
| server01 | events       | DEPLOYED    |
| server01 | ps           | DEPLOYED    |
'----------+--------------+-------------'

Es wurde erkannt, dass mein vorhandener OSWatcher (oswbb) bereits läuft.
Zur Erinnerung: TFA liefert selbst auch den OSWatcher mit.

3. Starten und Stoppen des TFA

Um den TFA später manuell zu stoppen/starten oder den automatischen Start zu deaktivieren, gibt es zwei Möglichkeiten. Nach der Installation sollte er bereits laufen.

Entweder direkt über den TFA:

[root@server01 bin]# ./tfactl {start|stop|enable|disable|...}

Oder über die init Datei:

[root@server01 bin]# /etc/init.d/init.tfa -h
Usage: /etc/init.d/init.tfa {start|stop|enable|disable}

4. Informationen sammeln

Um einen Überblick der möglichen Optionen zu erhalten, setzen wir folgenden Befehl ab (Output wurde stark verkürzt):

[root@server01 bin]# ./tfactl diagcollect -h

Usage: /u03/app/oracle/tfa/bin/tfactl diagcollect
[-all | -database <all|d1,d2..> | -asm | -dbwlm | -tns | -crs | -wls | -emagent | -oms | -ocm | -emplugins | -em | -acfs | -install | -cfgtools | -os | -awrhtml | -awrtext | -exadom0 | -chmos ]
[-node <all | local | n1,n2,..>]
[-tag <description>]
[-z <filename>]
[-since <n><h|d>| -from <time> -to <time> | -for <time>]
[-nocopy]
[-notrim]
[-nomonitor]
[-collectalldirs]

Es folgen ein paar Beispiele:

Alle Komponenten der letzten 24 Stunden

[root@server01 bin]# ./tfactl diagcollect -all -since 1d

Collecting data for all components using above parameters...
Collecting data for all nodes

Collection Id : 20150807083146server01

Repository Location in server01 : /u03/app/oracle/tfa/repository
2015/08/07 08:31:54 CEST : Collection Name : tfa_Fri_Aug_7_08_31_46_CEST_2015.zip
2015/08/07 08:31:54 CEST : Scanning of files for Collection in progress...
2015/08/07 08:31:54 CEST : Collecting extra files...
2015/08/07 08:31:59 CEST : Getting list of files satisfying time range [08/06/2015 08:31:54 CEST, 08/07/2015 08:31:59 CEST]
2015/08/07 08:31:59 CEST : Starting Thread to identify stored files to collect
2015/08/07 08:31:59 CEST : Getting List of Files to Collect
2015/08/07 08:31:59 CEST : Finshed Getting List of Files to Collect
2015/08/07 08:32:10 CEST : Trimming file : server01/u03/app/oracle/cfgtoollogs/catbundle/
catbundle_PSU_TESTDB_APPLY_2015Aug06_12_10_56.log with original file size : 1.4MB
2015/08/07 08:32:12 CEST : server01: Zipped 100 Files so Far
2015/08/07 08:32:14 CEST : Collecting ADR incident files...
2015/08/07 08:32:14 CEST : Waiting for collection of extra files
2015/08/07 08:32:19 CEST : Completed collection of extra files...
2015/08/07 08:32:24 CEST : Completed Zipping of all files
2015/08/07 08:32:24 CEST : Cleaning up temporary files
2015/08/07 08:32:24 CEST : Finished Cleaning up temporary files
2015/08/07 08:32:24 CEST : Finalizing the Collection Zip File
2015/08/07 08:32:24 CEST : Finished Finalizing the Collection Zip File
2015/08/07 08:32:24 CEST : Total Number of Files checked : 178
2015/08/07 08:32:24 CEST : Total Size of all Files Checked : 89MB
2015/08/07 08:32:24 CEST : Number of files containing required range : 161
2015/08/07 08:32:24 CEST : Total Size of Files containing required range : 20MB
2015/08/07 08:32:24 CEST : Number of files trimmed : 1
2015/08/07 08:32:24 CEST : Total Size of data prior to zip : 19MB
2015/08/07 08:32:24 CEST : Saved 1MB by trimming files
2015/08/07 08:32:24 CEST : Zip file size : 1.5MB
2015/08/07 08:32:24 CEST : Total time taken : 30s
2015/08/07 08:32:24 CEST : Completed collection of zip files.

Logs are being collected to: /u03/app/oracle/tfa/repository/collection_Fri_Aug_7_08_31_46_CEST_2015_node_all
/u03/app/oracle/tfa/repository/
collection_Fri_Aug_7_08_31_46_CEST_2015_node_all/
server01.tfa_Fri_Aug_7_08_31_46_CEST_2015.zip

 Der Befehl ist sehr informativ, so sieht man zum Beispiel die Größe der Files in den verschiedenen Stufen:

  • Alle relevanten Files = 89 MB
  • Innerhalb des Zeitraums (24h) = 20 MB
  • Nach "Trimmen" der Files = 19 MB
  • Nach Zippen der Files = 1,5 MB

Am Ende wird noch der Speicherpfad der Zip Datei angezeigt.
Schauen wir uns diesen an, sehen wir noch ein log und ein txt File. Diese sind Protokolldateien des Aufrufs und im Normalfall nicht relevant.

[root@server01 bin]# ls -la /u03/app/oracle/tfa/repository/collection_Fri_Aug_7_08_31_46_CEST_2015_node_all/
insgesamt 1536
drwx------ 2 root root    4096  7. Aug 08:31 .
drwxrwxrwx 4 root root    4096  7. Aug 08:32 ..
-rwx------ 1 root root    2002  7. Aug 08:32 diagcollect_20150807083146_server01.log
-rwx------ 1 root root 1552127  7. Aug 08:32 server01.tfa_Fri_Aug_7_08_31_46_CEST_2015.zip
-rwx------ 1 root root    1111  7. Aug 08:32 server01.tfa_Fri_Aug_7_08_31_46_CEST_2015.zip.txt

Mit folgendem Befehl können wir uns anzeigen lassen, welche Files gesammelt wurden.

[root@server01 bin]# unzip -l /u03/app/oracle/tfa/repository
/collection_Fri_Aug_7_08_31_46_CEST_2015_node_all
/server01.tfa_Fri_Aug_7_08_31_46_CEST_2015.zip

Zur besseren Lesbarkeit kann der Output des Befehls Leitet Herunterladen der Datei einhier angesehen werden.

Alle Datenbanken, TNS und OS Komponenten der letzten 24 Stunden

[root@server01 bin]# ./tfactl diagcollect -database all -tns -os -last 1d
Collecting data for all nodes

Collection Id : 20150807093306server01

Repository Location in server01 : /u03/app/oracle/tfa/repository
2015/08/07 09:33:14 CEST : Collection Name : tfa_Fri_Aug_7_09_33_06_CEST_2015.zip
2015/08/07 09:33:14 CEST : Scanning of files for Collection in progress...
2015/08/07 09:33:14 CEST : Collecting extra files...
2015/08/07 09:33:19 CEST : Getting list of files satisfying time range [08/06/2015 09:33:14 CEST, 08/07/2015 09:33:19 CEST]
2015/08/07 09:33:19 CEST : Starting Thread to identify stored files to collect
2015/08/07 09:33:19 CEST : Getting List of Files to Collect
2015/08/07 09:33:19 CEST : server01: Zipped 100 Files so Far
2015/08/07 09:33:19 CEST : Finshed Getting List of Files to Collect
2015/08/07 09:33:20 CEST : Collecting ADR incident files...
2015/08/07 09:33:20 CEST : Waiting for collection of extra files
2015/08/07 09:33:24 CEST : Completed collection of extra files...
2015/08/07 09:33:25 CEST : Completed Zipping of all files
2015/08/07 09:33:25 CEST : Cleaning up temporary files
2015/08/07 09:33:25 CEST : Finished Cleaning up temporary files
2015/08/07 09:33:25 CEST : Finalizing the Collection Zip File
2015/08/07 09:33:25 CEST : Finished Finalizing the Collection Zip File
2015/08/07 09:33:25 CEST : Total Number of Files checked : 180
2015/08/07 09:33:25 CEST : Total Size of all Files Checked : 89MB
2015/08/07 09:33:25 CEST : Number of files containing required range : 110
2015/08/07 09:33:25 CEST : Total Size of Files containing required range : 2MB
2015/08/07 09:33:25 CEST : Number of files trimmed : 0
2015/08/07 09:33:25 CEST : Total Size of data prior to zip : 2.1MB
2015/08/07 09:33:25 CEST : Saved 0kB by trimming files
2015/08/07 09:33:25 CEST : Zip file size : 238kB
2015/08/07 09:33:25 CEST : Total time taken : 11s
2015/08/07 09:33:25 CEST : Completed collection of zip files.

Logs are being collected to: /u03/app/oracle/tfa/repository/collection_Fri_Aug_7_09_33_06_CEST_2015_node_all
/u03/app/oracle/tfa/repository/
collection_Fri_Aug_7_09_33_06_CEST_2015_node_all/
server01.tfa_Fri_Aug_7_09_33_06_CEST_2015.zip

Auch hier kontrollieren wir, welche Files (im Gegensatz zum vorherigen Befehl) gesammelt wurden.

[root@server01 bin]# unzip -l /u03/app/oracle/tfa/repository
/collection_Fri_Aug_7_09_33_06_CEST_2015_node_all
/server01.tfa_Fri_Aug_7_09_33_06_CEST_2015.zip

Zur besseren Lesbarkeit kann der Output des Befehls Leitet Herunterladen der Datei einhier angesehen werden.

Alle Komponenten vom 06.08.2015 21 Uhr bis 07.08.2015 09 Uhr mit "Tag-Name"-Vergabe (Beispiel mit Service Request Nummer)

[root@server01 bin]# ./tfactl diagcollect -all -from "Aug/06/2015 21:00:00" -to "Aug/07/2015 09:00:00" -tag sr3_1234567890

Collecting data for all components using above parameters...
Collecting data for all nodes

Tag already exists. Using a new tag: sr3_1234567890_1

Collection Id : 20150807094111server01

Repository Location in server01 : /u03/app/oracle/tfa/repository
2015/08/07 09:41:20 CEST : Collection Name : tfa_Fri_Aug_7_09_41_10_CEST_2015.zip
2015/08/07 09:41:20 CEST : Scanning of files for Collection in progress...
2015/08/07 09:41:20 CEST : Collecting extra files...
2015/08/07 09:41:25 CEST : Getting list of files satisfying time range [08/06/2015 21:00:00 CEST, 08/07/2015 09:00:00 CEST]
2015/08/07 09:41:25 CEST : Starting Thread to identify stored files to collect
2015/08/07 09:41:25 CEST : Getting List of Files to Collect
2015/08/07 09:41:26 CEST : Finshed Getting List of Files to Collect
2015/08/07 09:41:27 CEST : Collecting ADR incident files...
2015/08/07 09:41:27 CEST : Waiting for collection of extra files
2015/08/07 09:41:35 CEST : Completed collection of extra files...
2015/08/07 09:41:37 CEST : Completed Zipping of all files
2015/08/07 09:41:37 CEST : Cleaning up temporary files
2015/08/07 09:41:37 CEST : Finished Cleaning up temporary files
2015/08/07 09:41:37 CEST : Finalizing the Collection Zip File
2015/08/07 09:41:37 CEST : Finished Finalizing the Collection Zip File
2015/08/07 09:41:37 CEST : Total Number of Files checked : 188
2015/08/07 09:41:37 CEST : Total Size of all Files Checked : 89MB
2015/08/07 09:41:37 CEST : Number of files containing required range : 34
2015/08/07 09:41:37 CEST : Total Size of Files containing required range : 6MB
2015/08/07 09:41:37 CEST : Number of files trimmed : 0
2015/08/07 09:41:37 CEST : Total Size of data prior to zip : 6.1MB
2015/08/07 09:41:37 CEST : Saved 0kB by trimming files
2015/08/07 09:41:37 CEST : Zip file size : 441kB
2015/08/07 09:41:37 CEST : Total time taken : 17s
2015/08/07 09:41:37 CEST : Completed collection of zip files.

Logs are being collected to: /u03/app/oracle/tfa/repository/sr3_1234567890_1
/u03/app/oracle/tfa/repository/sr3_1234567890_1/
server01.tfa_Fri_Aug_7_09_41_10_CEST_2015.zip

AWR Reports der Datenbank "testdb" der letzten 12 Stunden

[root@server01 bin]# ./tfactl diagcollect -awrhtml -database testdb -last 12h
Collecting data for all nodes

Collection Id : 20150807095835server01

Repository Location in server01 : /u03/app/oracle/tfa/repository
2015/08/07 09:58:42 CEST : Collection Name : tfa_Fri_Aug_7_09_58_35_CEST_2015.zip
2015/08/07 09:58:42 CEST : Scanning of files for Collection in progress...
2015/08/07 09:58:42 CEST : Collecting extra files...
2015/08/07 09:58:47 CEST : Getting list of files satisfying time range [08/06/2015 21:58:42 CEST, 08/07/2015 09:58:47 CEST]
2015/08/07 09:58:47 CEST : Starting Thread to identify stored files to collect
2015/08/07 09:58:47 CEST : Getting List of Files to Collect
2015/08/07 09:58:47 CEST : Finshed Getting List of Files to Collect
2015/08/07 09:58:48 CEST : Collecting ADR incident files...
2015/08/07 09:58:48 CEST : Waiting for collection of extra files
2015/08/07 09:59:17 CEST : Completed collection of extra files...
2015/08/07 09:59:18 CEST : Completed Zipping of all files
2015/08/07 09:59:18 CEST : Cleaning up temporary files
2015/08/07 09:59:18 CEST : Finished Cleaning up temporary files
2015/08/07 09:59:18 CEST : Finalizing the Collection Zip File
2015/08/07 09:59:18 CEST : Finished Finalizing the Collection Zip File
2015/08/07 09:59:18 CEST : Total Number of Files checked : 190
2015/08/07 09:59:18 CEST : Total Size of all Files Checked : 89MB
2015/08/07 09:59:18 CEST : Number of files containing required range : 18
2015/08/07 09:59:18 CEST : Total Size of Files containing required range : 152kB
2015/08/07 09:59:18 CEST : Number of files trimmed : 0
2015/08/07 09:59:18 CEST : Total Size of data prior to zip : 960kB
2015/08/07 09:59:18 CEST : Saved 0kB by trimming files
2015/08/07 09:59:18 CEST : Zip file size : 106kB
2015/08/07 09:59:18 CEST : Total time taken : 36s
2015/08/07 09:59:18 CEST : Completed collection of zip files.

Logs are being collected to: /u03/app/oracle/tfa/repository/collection_Fri_Aug_7_09_58_35_CEST_2015_node_all
/u03/app/oracle/tfa/repository/
collection_Fri_Aug_7_09_58_35_CEST_2015_node_all/
server01.tfa_Fri_Aug_7_09_58_35_CEST_2015.zip

Die gesammelten AWR Files lassen wir uns anzeigen: 

[root@server01 bin]# unzip -l /u03/app/oracle/tfa/repository/
collection_Fri_Aug_7_09_58_35_CEST_2015_node_all/
server01.tfa_Fri_Aug_7_09_58_35_CEST_2015.zip


Archive:  /u03/app/oracle/tfa/repository/
collection_Fri_Aug_7_09_58_35_CEST_2015_node_all/
server01.tfa_Fri_Aug_7_09_58_35_CEST_2015.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
    59616  08-07-15 09:00   server01/rdbms/testdb/testdb/trace/alert_testdb.log
      837  08-07-15 01:13   server01/rdbms/testdb/testdb/trace/testdb_arc3_15447.trc
     1089  08-07-15 02:00   server01/rdbms/testdb/testdb/trace/testdb_cjq0_15573.trc
     1927  08-06-15 22:30   server01/rdbms/testdb/testdb/trace/testdb_ckpt_15421.trc
    49071  08-07-15 02:00   server01/rdbms/testdb/testdb/trace/testdb_dbrm_15411.trc
      916  08-07-15 03:00   server01/rdbms/testdb/testdb/trace/testdb_j000_13852.trc
     1106  08-07-15 09:00   server01/rdbms/testdb/testdb/trace/testdb_j000_2132.trc
     1108  08-07-15 09:00   server01/rdbms/testdb/testdb/trace/testdb_j000_2383.trc
    28659  08-07-15 09:40   server01/rdbms/testdb/testdb/trace/testdb_mmon_15427.trc
     1000  08-07-15 04:00   server01/rdbms/testdb/testdb/trace/testdb_ora_1012.trc
      895  08-07-15 08:00   server01/rdbms/testdb/testdb/trace/testdb_ora_14607.trc
     1003  08-07-15 08:00   server01/rdbms/testdb/testdb/trace/testdb_ora_14695.trc
      894  08-06-15 22:00   server01/rdbms/testdb/testdb/trace/testdb_ora_15063.trc
     1001  08-06-15 22:02   server01/rdbms/testdb/testdb/trace/testdb_ora_15083.trc
      893  08-07-15 00:00   server01/rdbms/testdb/testdb/trace/testdb_ora_21027.trc
     1001  08-07-15 00:00   server01/rdbms/testdb/testdb/trace/testdb_ora_21099.trc
      891  08-07-15 04:00   server01/rdbms/testdb/testdb/trace/testdb_ora_968.trc
      983  08-07-15 02:00   server01/rdbms/testdb/testdb/trace/testdb_vkrm_14957.trc
    15579  08-07-15 09:58   server01.zip_inventory.xml
      669  08-07-15 09:58   server01.tfa_Fri_Aug_7_09_58_35_CEST_2015.zip.txt
       26  08-07-15 09:58   TFA.txt
     4920  08-07-15 09:59   server01/server01_awrcollect.log
    68475  08-07-15 09:59   server01/awr_inst_1_29114_29115.html
      839  08-07-15 09:59   server01/server01_oratab
    71018  08-07-15 09:58   server01/awr_inst_1_29110_29111.html
        0  08-07-15 09:58   server01/server01_awrcollect.err
    68255  08-07-15 09:59   server01/awr_inst_1_29115_29116.html
    68334  08-07-15 09:59   server01/awr_inst_1_29116_29117.html
    67363  08-07-15 09:58   server01/awr_inst_1_29107_29108.html
      960  08-07-15 09:59   server01/server01_VARTMPORACLE
    10957  08-07-15 09:59   server01/server01_RPMQA
    19962  08-07-15 09:59   server01/server01_PROCDIRINFO
    73107  08-07-15 09:58   server01/awr_inst_1_29111_29112.html
    72106  08-07-15 09:58   server01/awr_inst_1_29108_29109.html
    46103  08-07-15 09:59   server01/server01_OPATCH_DBHOMES
    71450  08-07-15 09:59   server01/awr_inst_1_29113_29114.html
      645  08-07-15 09:59   server01/server01_awrcollect.out
     3209  08-07-15 09:59   server01/server01_collection.log
    72482  08-07-15 09:58   server01/awr_inst_1_29109_29110.html
     2603  08-07-15 09:59   server01/server01_LSMOD
    68468  08-07-15 09:58   server01/awr_inst_1_29112_29113.html
 --------                   -------
   960420                   41 files

Wie man sehen kann, werden zusätzlich zu den stündlichen AWR Reports auch die Trace Files der Datenbank gesammelt.

5. Analysieren der Logfiles

Um einen Überblick der möglichen Optionen zu erhalten, setzen wir folgenden Befehl ab (Output wurde stark verkürzt):

[root@s-tl-022 bin]# ./tfactl analyze -h

Usage : /u03/app/oracle/tfa/bin/tfactl analyze
[-search "pattern"]
[-comp <db|asm|crs|acfs|os|osw|oswslabinfo|oratop|all>]
[-type <error|warning|generic>]
[-since <n>[h|d]]
[-from "MMM/DD/YYYY HH24:MI:SS"]
[-to "MMM/DD/YYYY HH24:MI:SS"]
[-for "MMM/DD/YYYY HH24:MI:SS"]
[-node <all | local | n1,n2,..>]
[-verbose]
[-o <file>]

Interessant wäre zum Beispiel:

Auflisten aller "ALTER SYSTEM SET" + "ALTER SYSTEM RESET" Befehle der letzten 7 Tage.

[root@server01 bin]# ./tfactl analyze -comp db -search "'alter system.*set.*'" -since 7d
INFO: analyzing db (DB Alert Logs) logs for the last 10080 minutes...  Please wait...
INFO: analyzing host: server01

                    Report title: DB Alert Logs
               Report date range: last ~7 day(s)
      Report (default) time zone: CET - Central European Time
             Analysis started at: 07-Aug-2015 01:25:20 PM CEST
           Elapsed analysis time: 0 second(s).
              Configuration file: /u03/app/oracle/tfa/server01/tfa_home/ext/tnt/conf/tnt.prop
             Configuration group: db
                       Parameter: alter system.*set.*
             Total message count:            298, from 06-Aug-2015 02:18:26 PM CEST to 07-Aug-2015 01:12:06 PM CEST
Messages matching last ~7 day(s):            298, from 06-Aug-2015 02:18:26 PM CEST to 07-Aug-2015 01:12:06 PM CEST
                  Matching regex: alter system.*set.*
                  Case sensitive: false
                     Match count: 3

[Source: /u03/app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log, Line: 687]
Aug 06 14:32:59 2015
ALTER SYSTEM RESET user_dump_dest SCOPE=SPFILE;

[Source: /u03/app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log, Line: 689]
Aug 06 14:33:32 2015
ALTER SYSTEM RESET background_dump_dest SCOPE=SPFILE;

[Source: /u03/app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log, Line: 1106]
Aug 06 14:39:09 2015
ALTER SYSTEM SET db_recovery_file_dest_size='9G' SCOPE=SPFILE;

Ansonsten kann natürlich auch ohne explizitem Pattern gesucht werden. Dann greifen die hinterlegten Warnings und Error Messages. Detaillierte Informationen hierzu sind im User Guide beschrieben.

6. OSWatcher

Hierzu gibt es zwei unterschiedliche Verhaltensweisen.

Im ersten Test mit Version 12.1.2.5.0 gab es folgendes Verhalten:

Auf meinem System ist bereits der OSWatcher installiert und konfiguriert. Im TFA User Guide wird gesagt, dass bestehende OSWatcher Installationen nicht verändert werden.
Das kann ich bestätigen, denn meine Version von oswbb läuft weiterhin und sammelt Daten.
Es wird zwar empfohlen, die eigene Version abzuschalten und die mitgelieferte zu verwenden, in meinen Tests wurden allerdings die Parameter (Snapshot Intervall, Retention, Zip-Tool) nach einem Neustart des Servers nicht übernommen.
Darum ist diese Option für meine Umgebung leider nicht zu gebrauchen.

Ich hatte Anfang August dem Entwickler vom TFA dieses Fehlverhalten mitgeteilt.

Des Weiteren wäre es sehr schön gewesen, wenn die OSWatcher Daten mit dem Befehl tfactl diagcollect -os auch mit in das Zip File kopiert worden wären. Leider funktioniert auch das noch nicht.


Im zweiten Test mit Version 12.1.2.5.2 (Upgrade siehe nächstes Kapitel) gab es folgendes Verhalten:

Auf meinem System ist weiterhin der OSWatcher installiert und konfiguriert. Im TFA User Guide wird gesagt, dass bestehende OSWatcher Installationen nicht verändert werden.
Wenn man nur die Dateien meines bestehenden OSWatchers betrachtet stimmt das auch. Doch zum Zeitpunkt des Upgrades auf 12.1.2.5.2 wurden die Prozesse beendet und der mitgelieferte OSWatcher wurde mit den default Werten gestartet. Zwar besteht keine Gefahr für die bereits gesammelten Daten, da vom mitgelieferten oswbb ein anderes Repository Verzeichnis verwendet wird, doch dass der alte oswbb ohne Nachfrage oder Hinweis beendet wird, ist ärgerlich.

Um die Defaultwerte des neuen oswbb zu ändern, gehen wir wie folgt vor:

[root@server01 bin]# ./tfactl

tfactl> stop oswbb
Stopped OSWatcher

tfactl> start oswbb 60 240 gzip
Starting OSWatcher

Mit diesen Werten werden alle 60 Sekunden Daten gesammelt. Diese werden 240 Stunden (10 Tage) aufgehoben und stündlich gezippt. Die Werte werden nun auch nach einem Neustart des Server beibehalten.

Und auch das Mitaufnehmen der oswbb Daten in den Befehl tfactl diagcollect -os funktioniert nun.

Es lohnt sich also Bugs zu melden :)

7. Upgrade

Um eine neue Version zu installieren, geht man wie folgt vor.
In diesem Beispiel wechseln wir von Version 12.1.2.5.0 auf 12.1.2.5.2

Entpacken

[root@server01 stage]# unzip TFALite_121252.zip
Archive:  TFALite_121252.zip
  inflating: installTFALite
  inflating: TFACollectorDocV121252.pdf

Upgraden

[root@server01 stage]# ./installTFALite

Starting TFA installation

TFA Build Version: 121252 Build Date: 201508110452
Installed Build Version: 121250 Build Date: 201506150616

TFA is already installed. Patching /u03/app/oracle/tfa/server01/tfa_home...

TFA will be Patched on Node server01:

Do you want to continue with patching TFA? [Y|N] [Y]: Y

Applying Patch on server01:

Stopping TFA Support Tools...

Shutting down TFA for Patching...

Shutting down TFA
TFA-00002 : Oracle Trace File Analyzer (TFA) is not running
TFAmain Force Stopped Successfully
. . . . .
. . .
Successfully shutdown TFA..

Current version of Berkeley DB is 5.0.84, so no upgrade required

Copying TFA Certificates...

Running commands to fix init.tfa and tfactl in localhost

Starting TFA in server01...

Starting TFA..
Waiting up to 100 seconds for TFA to be started..
. . . . .
Successfully started TFA Process..
. . . . .
TFA Started and listening for commands

Enabling Access for Non-root Users on server01...

.----------------------------------------------------------------.
| Host     | TFA Version | TFA Build ID         | Upgrade Status |
+----------+-------------+----------------------+----------------+
| server01 |  12.1.2.5.2 | 12125220150811045228 | UPGRADED       |
'----------+-------------+----------------------+----------------'

8. Fazit

Spätestens seit Version 12.1.2.5.2 ist der TFA mit seinen Optionen zum Sammeln von Daten zu empfehlen, denn es ist sehr praktisch, wenn man dafür nur noch ein einziges Tool benötigt.

Wird der TFA in einem Cluster eingesetzt, gibt es noch ein paar extra Punkte zu beachten. Diese auch zu erläutern, würde allerdings den Rahmen dieses Monatstipps sprengen.

Sollten Sie bei der Fehleranalyse einer Datenbank Unterstützung benötigen, helfen Ihnen Opens window for sending emailunsere Experten gerne weiter.

Jede Menge Know-how für Sie!

In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.