Diagnose Daten einfach sammeln mit dem Oracle Trace File Analyzer
von Sebastian Solbach ORACLE Deutschland B.V. & Co.KG
Die Prozesse im Umfeld einer Oracle Datenbank schreiben sehr viele Log- und Traceinformationen. Die wichtigsten Informationen finden sich auch im alert.log der Datenbank wieder.
Solange eine Datenbank einwandfrei funktioniert, sind die aufgezeichneten Informationen für den normalen Betrieb eher uninteressant, ausser vielleicht beim Housekeeping.
Wenn allerdings doch mal im Zuge einer Analyse diese Informationen zum Beispiel vom Oracle Support angefordert werden, steht man nicht selten vor dem Problem alle relevanten
Informationen zusammenzutragen. Dies bedeutet aber nicht selten einen immensen Zeitaufwand beim Zusammensuchen und Hochladen der Informationen.
Genau hier setzt der Oracle Trace File Analyzer (TFA) an und automatisiert das Suchen und Verpacken aller relevanten Informationen.
Oracle Trace File Analyzer (TFA)
Eine weitere Neuerung gegenüber den bisherigen Methoden ist, dass TFA auch automatisch die relevanten Daten packetieren kann. Dies ist besonders wichtig, da immer mehr Oracle Logdateien
rollierend sind und damit nach einiger Zeit überschrieben werden. Hat man also nicht darauf geachtet, gleich alle relevanten Informationen zu sichern, besteht die Gefahr das
wichtigste Log nicht mehr zu besitzen. Daher kann TFA auch automatisch beim Auftreten eines sogenannten Incidents (wie diese auch im Umfeld vom Automatic Diagnostic Repository kurz ADRCI bekannt sind)
angestartet werden und die Informationen sichern, damit auch später darauf zugegriffen werden kann.
TFA Installation
Die Grid Infrastruktur 11.2.0.4 beinhaltet TFA bereits. TFA und muss nicht separat installiert werden.
[root@sccloud005 tmp]# unzip TFALite_3202.zip Archive: TFALite_3202.zip inflating: installTFALite inflating: TFACollectorDocV3202.pdf [root@sccloud005 tmp]# ./installTFALite Starting TFA installation Enter a location for installing TFA (/tfa will be appended if not supplied) [/tmp/tfa]: /u01/app Enter a Java Home that contains Java 1.5 or later : /opt/oracle/product/11.2.0/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. sccloud005 Checking Status of Oracle Software Stack - Clusterware, ASM, RDBMS . . . . . . . . . TFA Will be Installed on sccloud005... TFA will scan the following Directories ++++++++++++++++++++++++++++++++++++++++++++ .---------------------------------------------------------------. | sccloud005 | +----------------------------------------------------+----------+ | Trace Directory | Resource | +----------------------------------------------------+----------+ | /opt/oracle/cfgtoollogs | CFGTOOLS | | /opt/oracle/diag/rdbms/orcl/orcl/trace | RDBMS | | /opt/oracle/diag/tnslsnr/sccloud005/listener/trace | TNS | | /opt/oracle/oraInventory/ContentsXML | INSTALL | | /opt/oracle/oraInventory/logs | INSTALL | | /opt/oracle/product/11.2.0/dbhome_1/cfgtoollogs | CFGTOOLS | | /opt/oracle/product/11.2.0/dbhome_1/install | INSTALL | '----------------------------------------------------+----------' Installing TFA on sccloud005: HOST: sccloud005 TFA_HOME: /u01/app/tfa/sccloud005/tfa_home .--------------------------------------------------------------------------. | Host | Status of TFA | PID | Port | Version | Build ID | +------------+---------------+-------+------+---------+--------------------+ | sccloud005 | RUNNING | 30158 | 5000 | 3.2.0.2 | 320220140522043950 | '------------+---------------+-------+------+---------+--------------------' Running Inventory in All Nodes... Enabling Access for Non-root Users on sccloud005... Summary of TFA Installation: .--------------------------------------------------------. | sccloud005 | +---------------------+----------------------------------+ | Parameter | Value | +---------------------+----------------------------------+ | Install location | /u01/app/tfa/sccloud005/tfa_home | | Repository location | /u01/app/tfa/repository | | Repository usage | 0 MB out of 1627 MB | '---------------------+----------------------------------' TFA is successfully installed...Die Installation auf einem Knoten geht sehr schnell und ist in deutlich unter 5 Minuten zu erledigen. Wie man bei der Installation feststellt, gibt TFA auch gleich an, in welchen Oracle Logverzeichnissen der Oracle Installationen TFA in Zukunft nach Tracedateien suchen wird. Selbstverständlich kann TFA auch "silent" installiert werden, die Details stehen ebenfalls in TFA Collector - Tool for Enhanced Diagnostic Gathering (Doc ID 1513912.1) bezwiehungsweise in dem darin verknüpften PDF Dokument "TFA User Guide". TFA Administration Der Oracle Trace File Analyzer lässt sich über tfactl (TFA Control) steuern. Gibt man dabei tfactl ohne Befehl ein, erhält man die Hilfe: # /u01/app/tfa/bin/tfactl Usage : /u01/app/tfa/bin/tfactlDie Befehle "start"/"stop"/"enable" und "disable" steuern dabei den Hintergrundagenten von TFA. Der Befehl "print" gibt über den aktuellen Status und die aktuelle Konfiguration Auskunft, die über die Befehle "host", "directory" und "set" verändert werden können. Hier sieht man dann auch, dass direkt nach der Installation die automatische Erzeugung eines Logdatei-Archives im Falle eines Incidents nicht aktiviert ist. # /u01/app/tfa/bin/tfactl print config .------------------------------------------------------. | sccloud005 | +--------------------------------------------+---------+ | Configuration Parameter | Value | +--------------------------------------------+---------+ | TFA version | 3.2.0.2 | | Automatic diagnostic collection | OFF | | Trimming of files during diagcollection | ON | | Repository current size (MB) in sccloud005 | 0 | | Repository maximum size (MB) in sccloud005 | 1627 | | 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 | '--------------------------------------------+---------'Die Aktivierung der automatischen Generierung von Logdatei-Archiven würde dabei über den Befehl '/u01/app/tfa/bin/tfactl set autodiagcollect=ON' erfolgen. Im Unterscheid zur Installation gibt der Befehl 'print directories' nun auch die Betriebssystemverzeichnisse an, in denen nach Logfiles gesucht wird und wer Berechtigungen hat, diese Logfiles zu sammeln. # /u01/app/tfa/bin/tfactl print directories .---------------------------------------------------------------------------. | sccloud005 | +------------------------------------+--------------+------------+----------+ | Trace Directory | Component | Permission | Added By | +------------------------------------+--------------+------------+----------+ ... +------------------------------------+--------------+------------+----------+ | /opt/oracle/diag/rdbms/orcl/orcl/t | RDBMS : orcl | public | root | | race | | | | | Collection policy : Exclusions | | | | +------------------------------------+--------------+------------+----------+ ... +------------------------------------+--------------+------------+----------+ | /var/log | OS | public | root | | Collection policy : Exclusions | | | | +------------------------------------+--------------+------------+----------+ ..."Exclusions" gibt dabei an, ob in diesen Verzeichnissen und Logfiles mit Hilfe von Zeitstempeln nur Dateiausschnitte archiviert werden. Diese Informationen werden mit 'tfactl directories' verändert und erlauben so auch das Hinzufügen und Entfernen von Verzeichnissen, wobei der Default im Normalfall für Oracle Support am sinnvollsten ist. Wäre der OSWatcher auch auf dem System installiert, würden diese Verzeichnisse hier ebenfalls auftauchen. Anmerkung: Nach der Installation von TFA hat erst einmal nur der Administrationsbenutzer 'root' die Berechtigungen die Logfiles zu sammeln. Da in einer standard Datenbank Umgebung aber eher der Benutzer oracle beziehungsweise grid derjenige ist, der Oracle Logfiles an den Support hochladen sollte, empfiehlt es sich, diese Benutzer für die TFA Benutzung freizuschalten. Dies geschieht unter der Verwendung des Befehls 'tfactl access' : # /u01/app/tfa/bin/tfactl access add -user oracle Sucessfully added 'oracle' to TFA Access list. ---------------------------------. | TFA Users | +-----------+-----------+---------+ | User Name | User Type | Status | +-----------+-----------+---------+ | oracle | USER | Allowed | '-----------+-----------+---------' Daten sammeln Die Hauptaufgabe von TFA besteht darin, die wichtigen Log- und Trace-Dateien zu sammeln, zu filtern und zu packen. Dies geschieht manuell über den Befehl 'tfactl diagcollect' oder automatisch bei Auftreten eines Incidents, sofern konfiguriert. Wird der Befehl 'diagcollect' ohne Parameter aufgerufen, sammelt TFA nur die Daten der letzten 4 Stunden. # /u01/app/tfa/bin/tfactl diagcollect Collecting data for the last 4 hours for all components... Collecting data for all nodes Repository Location in sccloud005 : /u01/app/tfa/repository 2014/06/25 20:56:18 : Running an inventory clusterwide ... 2014/06/25 20:56:18 : Collection Name : tfa_Wed_Jun_25_22_56_14_CEST_2014.zip 2014/06/25 20:56:18 : Waiting for inventory to complete ... 2014/06/25 20:56:23 : Run inventory completed locally ... 2014/06/25 20:56:23 : Getting list of files satisfying time range [16:56:18 GMT, 20:56:23 GMT] 2014/06/25 20:56:23 : Collecting storage metrics... 2014/06/25 20:56:23 : sccloud005: Zipping File: /opt/oracle/diag/rdbms/orcl/orcl/trace/orcl_mmon_7622.trc 2014/06/25 20:56:23 : sccloud005: Zipping File: /opt/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log 2014/06/25 20:56:23 : sccloud005: Zipping File: /var/log/messages 2014/06/25 20:56:23 : sccloud005: Zipping File: /opt/oracle/diag/tnslsnr/sccloud005/listener/trace/listener.log 2014/06/25 20:56:23 : sccloud005: Zipping File: /opt/oracle/diag/rdbms/orcl/orcl/trace/orcl_dbrm_7606.trc 2014/06/25 20:56:23 : Collecting ADR incident files... 2014/06/25 20:56:23 : Waiting for collection of extra files 2014/06/25 20:56:27 : Completed collection of extra files... 2014/06/25 20:56:28 : Completed Zipping of all files 2014/06/25 20:56:28 : Total Number of Files checked : 34 2014/06/25 20:56:28 : Total Size of all Files Checked : 512kB 2014/06/25 20:56:28 : Number of files containing required range : 5 2014/06/25 20:56:28 : Total Size of Files containing required range : 295kB 2014/06/25 20:56:28 : Number of files trimmed : 0 2014/06/25 20:56:28 : Total Size of data prior to zip : 352kB 2014/06/25 20:56:28 : Saved 0kB by trimming files 2014/06/25 20:56:28 : Zip file size : 41kB 2014/06/25 20:56:28 : Total time taken : 10s 2014/06/25 20:56:28 : Completed collection of zip files on local node. Logs are being collected to: /u01/app/tfa/repository/collection_Wed_Jun_25_22_56_14_CEST_2014_node_all/ sccloud005.tfa_Wed_Jun_25_22_56_14_CEST_2014.zip Collection may still be processing : use 'tfactl print actions' to confirm completion.Dies kann natürlich auf bestimmte Logdateien und ein bestimmtes Zeitinterwall beschränkt werden: # ./tfactl diagcollect -h Options: -all Collect all logs (If no time is given for collection then files for the last 4 hours will be collected) -crs Collect CRS logs -dbwlm Collect DBWLM logs -acfs Collect ACFS logs -asm Collect ASM logs -database Collect database logs from databases specified -os Collect OS files such as /var/log/messages -install Collect Oracle Installation related files -cfgtools Collect CFGTOOLS logs -chmos Collect CHMOS files (Note that this data can be large for longer durations) -nochmos Do not collect CHMOS data when it would normally have been collected -sundiag Collect sundiag logs -node Specify comma separated list of host names for collection -nocopy Does not copy back the zip files to initiating node from all nodes -notrim Does not trim the files collected -nomonitor This option is used to submit the diagcollection as a background process -collectalldirs Collect all files from a directory marked "Collect All" flag to true -collectdir Specify comma separated list of directories and collection will include all files from these irrespective of type and time constraints in addition to components specified -sinceDas Sammeln der Daten kann bei einem Cluster länger dauern, da hier auf die Daten der anderen Knoten gewartet werden muss. Daher auch die Empfehlung, den aktuellen Status des Jobs mit dem Befehl 'print actions' abzufragen. Hierüber erfährt man auch den Dateinamen und das Verzeichnis, sofern dies nicht explizit angegeben war. ]# /u01/app/tfa/bin/tfactl print actions .-------------------------------------------------------------------------------------------------------------. | HOST | START TIME | END TIME | ACTION | STATUS | COMMENTS | +------------+-----------------+-----------------+----------------+---------------------+---------------------+ | sccloud005 | Jun 25 20:56:18 | Jun 25 20:56:18 | Run inventory | COMPLETE | -c:RDBMS | | | | | | | all:ASM:CRS:DBWLM:A | | | | | | | CFS:OS:INSTALL:CFGT | | | | | | | OOLS:TNS:CHMOS | +------------+-----------------+-----------------+----------------+---------------------+---------------------+ | sccloud005 | Jun 25 20:56:18 | Jun 25 20:56:28 | Collect traces | COMPLETE | Collection details: | | | | | & zip | | | | | | | | Zip file: | | | | | | | tfa_Wed_Jun_25_22_5 | | | | | | | 6_14_CEST_2014.zip | | | | | | | Tag: | | | | | | | collection_Wed_Jun_ | | | | | | | 25_22_56_14_CEST_20 | | | | | | | 14_node_all | | '------------+-----------------+-----------------+----------------+---------------------+---------------------'Im Zipfile sollten alle zur Verfügung stehenden Informationen für den Oracle Support vorhanden sein, und es reicht, dieses an einen SR hochzuladen. Einzig zusätzliche noch nicht vorhandene Logdateien (wie zum Beispiel durch die zusätzliche Installation von OSWatcher oder ein höheres Tracing) sind darin nicht enthalten. Ein Nachfordern bestimmer Logfiles sollte damit viel seltener notwendig sein. TFA weitere Funktionalitäten Ein paar weiterführende Funktionalitäten von TFA sollten noch erwähnt werden:
# ./tfactl purge -h Usage: /u01/app/oracle/tfa/bin/tfactl purge -older x[h|d] Remove file(s) from repository that are older than the time specified. <mask_strings> <mask_string> <original>sccloud005</original> <replacement>Node1</replacement> </mask_string> <mask_string> <original>10.165.244.154</original> <replacement>XX.XX.XX.154</replacement> </mask_string> </mask_strings>Damit das Masking greift, muss TFA mit dem Befehl 'tfactl stop' und 'tfactl start' neu gestartet werden! Dies sorgt nun dafür, dass sowohl der erzeugte Archivname als auch in den Logfiles die entsprechenden Zeichenfolgen durch die Alternativen ersetzt werden. # /u01/app/tfa/bin/tfactl analyze -comp db -type error -since 1d INFO: analyzing db (DB Alert Logs) logs for the last 1440 minutes... Please wait... INFO: analyzing host: sccloud005 Report title: DB Alert Logs Report date range: last ~1 day(s) Report (default) time zone: CET - Central European Time Analysis started at: 26-Jun-2014 10:47:54 AM CEST Elapsed analysis time: 0 second(s). Configuration file: /u01/app/tfa/sccloud005/tfa_home/ext/tnt/conf/tnt.prop Configuration group: db Total message count: 111, from 25-Jun-2014 02:31:47 PM CEST to 26-Jun-2014 04:44:25 AM Messages matching last ~1 day(s): 111, from 25-Jun-2014 02:31:47 PM CEST to 26-Jun-2014 04:44:25 AM last ~1 day(s) error count: 1, from 26-Jun-2014 12:18:50 AM CEST to 26-Jun-2014 12:18:50 AM last ~1 day(s) ignored error count: 0 last ~1 day(s) unique error count: 1 Message types for last ~1 day(s) Occurrences percent server name type ----------- ------- -------------------- ----- 110 99.1% sccloud005 generic 1 0.9% sccloud005 ERROR ----------- ------- 111 100.0% Unique error messages for last ~1 day(s) Occurrences percent server name error ----------- ------- -------------------- ----- 1 100.0% sccloud005 GEN0 (ospid: 7602): terminating the instance due to error 472 Dumping diagnostic data, summary=[abnormal instance termination]. Instance terminated by GEN0, pid = 7602 ----------- ------- 1 100.0%Die Details über den kompletten Funktionsumfang sind im TFA User Guide enthalten. Neu mit 12.1.0.2 ist auch die Integration von oratop in den TFA. Hierzu mehr im nächsten Tipp. Fazit
Die Einarbeitung in TFA lohnt sich nicht nur für Clusterumgebungen, sondern auch bei Single Instanz Datenbanken.
Alleine die Gewissheit, alle nötigen und vorallem nur relevanten Logdateien für eine Fehleranalyzs vorrätig zu haben, ohne Unmengen an Daten zu sichern, kann viel Wert sein.
Daneben bieten Funktionen wie Data Redaction eine einfache Gelegenheit, die Log- und Trace-Informationen zu anonymisieren und trotzdem die
Diagnosearbeit nicht unnötig zu erschweren. Auch die Suchfunktionen über alle Logfiles hinweg bieten interessante Möglichkeiten, seine eigenen Überwachungsmechanismen und Skripte
zu verbessern.
Nützliche Links und Referenzen
|