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:
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 1513912.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.
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.
[root@server01 stage]# unzip TFALite_121250.zip
Archive: TFALite_121250.zip
inflating: installTFALite
inflating: TFACollectorDocV121250.pdf
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.
Um einen Überblick der Einstellungen zu erhalten, führen wir die folgenden Befehle aus:
[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 |
'----------+---------------+-------+------+------------+------------------'
[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.
[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.
[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.
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}
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:
[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:
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 hier angesehen werden.
[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 hier angesehen werden.
[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
[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.
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.
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 :)
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
[root@server01 stage]# unzip TFALite_121252.zip
Archive: TFALite_121252.zip
inflating: installTFALite
inflating: TFACollectorDocV121252.pdf
[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 |
'----------+-------------+----------------------+----------------'
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 unsere Experten gerne weiter.
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.