IT-Symposium 2007 19.04.2007 IT-Symposium 2007 www.ordix.de www.it-symposium2007.de 1 IT-Symposium 2007 19.04.2007 TRACING 007 Im Geheimdienst Ihrer Majestät www.it-symposium2007.de 2 IT-Symposium 2007 19.04.2007 Überblick V-Dollar jagt Dr. No Tracing, im Geheimdienst Ihrer Majestät dbms_application_info, Leben und sterben lassen Raw Traces, der Hauch des Todes TKProf, stirb an einem anderen Tag TRCA, Casino Royale 12 Zylinder 6l Hubraum 460 PS 0 - 100 Km/h in 5s www.it-symposium2007.de 3 IT-Symposium 2007 19.04.2007 Sir Sean Connery V-Dollar jagt Dr. No Tracing, im Geheimdienst Ihrer Majestät dbms_application_info, Leben und sterben lassen Raw Traces, der Hauch des Todes TKProf, stirb an einem anderen Tag TRCA, Casino Royale www.it-symposium2007.de 4 IT-Symposium 2007 19.04.2007 V$, jagt Do. No Kenntnis über einige V$-Tabellen notwendig für Tracing Gute Kenntnis wichtig bei Systemen mit vielen Session, Usern ... Sichtweise auf Sessions, Prozesse, SQL Befehle, Ausführungspläne, Wait-Events ... V$-Views Client Informationen Ausgangspunkt für Analysen v$session osuser machine terminal program username sid = Eindeutig zu einem Zeitpunkt sid, serial# = Eindeutig für Laufzeit der Instanz www.it-symposium2007.de 5 IT-Symposium 2007 19.04.2007 V$-Views Informationen über den Betriebssystemprozess PGA Informationen v$process addr=paddr v$session spid = Prozess-ID V$-Views aktuelle Wait Events - sehr hohe Fluktuation v$process v$session v$session_wait sid=sid v$session_wait_class Aggregiert nach Klassen www.it-symposium2007.de v$session_wait_history die letzten 10 Events 6 IT-Symposium 2007 19.04.2007 V$-Views Wait Events - kumuliert v$process v$session v$session_wait sid=sid v$session_event kumuliert über alle Sessions v$event_name v$event_histogram v$eventmetric V$-Views SQL-Befehle im Shared Pool Analyse der Top-Verbraucher sql_text executions disk_reads buffer_gets cpu_time elapsed_time v$process v$session v$session_wait v$session_event status = 'ACTIVE' v$sql Join sql_address = address sql_hash_value = hash_value www.it-symposium2007.de sql_id = sql_id 7 IT-Symposium 2007 19.04.2007 V$-Views Vollständiger SQL-Text Auswertung mit dbms_xplan v$process v$session v$session_wait Join & ID v$session_event v$sql cursor_number sql_id v$sql_plan v$sqltext v$sql_plan_statistics[_all] V$-Views SQL> SELECT * FROM 2> TABLE( DBMS_XPLAN.DISPLAY_CURSOR(sql_id, child_number)); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------SQL_ID cqgs1gmk0w26b, child number 0 ------------------------------------SELECT * FROM bla, test Plan hash value: 2400081574 -------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | dbms_xp -------------------------------------------------------------------------------lan | 0 | SELECT STATEMENT | | | | 301 (100)| | | 1 | MERGE JOIN CARTESIAN | | 1 | 106 | 301 (2)| 00:00:04 | | 2 | PARTITION RANGE SINGLE| | 1 | 13 | 2 (0)| 00:00:01 | | 3 | TABLE ACCESS FULL | TEST | 1 | 13 | 2 (0)| 00:00:01 | | 4 | BUFFER SORT | | 99927 | 9075K| 299 (3)| 00:00:03 | | 5 | TABLE ACCESS FULL | BLA | 99927 | 9075K| 299 (3)| 00:00:03 | -------------------------------------------------------------------------------- Dritter Parameter format = { BASIC, TYPICAL, ALL } www.it-symposium2007.de 8 IT-Symposium 2007 19.04.2007 V$-Views Session-Statistiken v$process v$session sid=sid v$sesstat v$session_wait v$session_event v$sql v$sqltext V$-Views Session-I/O (Statistiken und Wait Events) v$process v$sess_io v$session v$sesstat v$session_wait v$session_event sid=sid v$sql v$sqltext www.it-symposium2007.de 9 IT-Symposium 2007 19.04.2007 V$ - Pro und Contra Ausgangspunkt für Analysen alle notwendigen Informationen verfügbar Verständnis für die Arbeitsweise von Oracle keine Lesekonsistenz zu langsam für Detailanalysen aufwendig zu implementieren Georg Lazenby V-Dollar jagt Dr. No Tracing, im Geheimdienst Ihrer Majestät dbms_application_info, Leben und sterben lassen Raw Traces, der Hauch des Todes TKProf, stirb an einem anderen Tag TRCA, Casino Royale www.it-symposium2007.de 10 IT-Symposium 2007 19.04.2007 Tracing, im Geheimdienst Ihrer Majestät Protokollierung einer Session SQL Befehle, Wait-Events, Bind-Variablen INSERT ... Tracing aktivieren Tracing deaktivieren SELECT ... UPDATE ... INSERT ... SELECT ... UPDATE ... <db_name>_ora_<spid>.ora INSERT ... user_dump_dest Tracing - aktivieren (I) SQL> ALTER SESSION SET sql_trace = true; Session altered SQL> .... t e d SQL> ALTER SESSION SET sql_trace = false; Session altered d e p r e c a sql_trace={true|false} user_dump_dest=/udump init.ora EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION( <sid>,<serial#>,true|false); www.it-symposium2007.de 11 IT-Symposium 2007 19.04.2007 Tracing - aktivieren (II) e d SQL> ALTER SESSION SET EVENTS 2> '10046 trace name context forever, level <n>'; SQL> .... o r t SQL> ALTER SESSION SET EVENTS 2> '10046 trace name context off'; u n s u p p 11 wie wieSQL SQLTrace Trace 44 Bind BindVariablen Variablen 88 Wait WaitEvents Events 12 12 alles alles exec dbms_system.set_ev( <SID>,<SERIAL#>, 10046, <n>, '' ) Tracing - aktivieren (III) SQL> oradebug ... www.it-symposium2007.de rt d o te p p or u S pp su 12 IT-Symposium 2007 19.04.2007 Tracing - aktivieren (IV) SQL> exec dbms_support.start_trace_in_session( sid => 140 > serial => 566 - > waits => true - > binds => false ) -- Installation @?\rdbms\admin\dbmssupp.sql rt d o e p rt p u po S p su Tracing - aktivieren (V) SQL> exec dbms_monitor.session_trace_enable( > session_id => 135, > serial_num => 314, > waits => true, > binds => false ) PL/SQL procedure successfully completed. SQL> ... v$session (10gR2) dba_enabled_traces sql_trace sql_trace_waits sql_trace_binds www.it-symposium2007.de 13 IT-Symposium 2007 19.04.2007 Traces - beeinflussen SQL> ALTER SESSION SET max_dump_file_size = [nnn | unlimited]; SQL> ALTER SESSION SET tracefile_identifier = 'ORDIX'; SQL> ALTER SYSTEM SET user_dump_dest = '/tmp'; v$process.traceid <db_name>_ora_<spid>_ORDIX.ora /tmp Traces - identifizieren SELECT par1.value || '\' || inst.instance_name || '_ora_' || spid || decode( par2.value, NULL, NULL, '_' || par2.value ) || '.trc' AS "Trace Dateiname" FROM v$process p , v$session s , v$instance inst , v$parameter par1 , v$parameter par2 WHERE p.spid = '&PID_eines_server_prozesses' AND p.addr = s.paddr AND par1.name = 'user_dump_dest' AND par2.name = 'tracefile_identifier'; www.it-symposium2007.de 14 IT-Symposium 2007 19.04.2007 Traces - Pro und Contra einfach und flexibel sehr detaillierte Informationen Wait Events Bind Variablen Auswertung schwierig teilweise sehr große Tracedateien beeinflusst Performance Sir Roger Moore V-Dollar jagt Dr. No Tracing, im Geheimdienst Ihrer Majestät dbms_application_info, Leben und sterben lassen Raw Traces, der Hauch des Todes TKProf, stirb an einem anderen Tag TRCA, Casino Royale www.it-symposium2007.de 15 IT-Symposium 2007 19.04.2007 Sessions identifizieren? Client Client Client ora ora DB Client ora Client Webserver Dispatcher Server Tracing mit Oracle 9 sehr schwierig dbms_application_info SQL> dbms_application_info.set_module( 'Moonraker','Prepare'); SQL> ... SQL> dbms_application_info.set_module( 'Moonraker','Init'); SQL> ... SQL> dbms_application_info.set_module( 'Moonraker','Start'); SQL> ... www.it-symposium2007.de 16 IT-Symposium 2007 19.04.2007 dbms_monitor SQL> dbms_application_info.set_module( 'Moonraker','Init'); SQL> ?????? SQL> dbms_application_info.set_module( 'Moonraker','Start'); SQL> exec dbms_monitor.serv_mod_act_trace_enable ( service_name => 'majesty' , module_name => 'Moonraker' , action_name => 'Init' , waits => true , binds => false ) - dbms_monitor Parameter SERVICE MODULE ACTION majesty NULL NULL Alle Clients des Service majesty majesty sqlplus NULL Alle SQL*Plus Clients des Service majesty majesty Moonraker Init www.it-symposium2007.de Bedeutung Alle Clients des Service majesty mit Module=Moonraker und ACTION=Init 17 IT-Symposium 2007 19.04.2007 Begleitende CD ... gibt es an der ORDIX Infoinsel • mit allen ORDIX Vorträgen • Themenverwandten Fachartikeln • Nützlichen Zusatzinfos dbms_monitor SQL> exec dbms_monitor.serv_mod_act_trace_enable ( service_name => majesty , module_name => 'Moonraker' , action_name => 'Init' , waits => true , binds => false); Client Client ora DB Client Jede Session im Modul Moonraker.Init erzeugt eine Tracedatei www.it-symposium2007.de ora Webserver 18 IT-Symposium 2007 19.04.2007 trcsess trcsess erzeugt aus mehreren Trace-Dateien eine Neue Aufruf auf Betriebssystemebene $ trcsess output=moonraker.trc \ service_name=majesty module=Moonraker \ action=Init \ *.* ora DB ora trcsess tkprof moonraker.trc dbms_monitor Pro und Contra Traces für Teile einer Applikation für mehrschichtige Architekturen geeignet Statistiken Wait Events, Bind Variablen Anwendungsentwicklung Komplex www.it-symposium2007.de 19 IT-Symposium 2007 19.04.2007 Timothy Dalton V-Dollar jagt Dr. No Tracing, im Geheimdienst Ihrer Majestät dbms_application_info, Leben und sterben lassen Raw Traces, der Hauch des Todes TKProf, stirb an einem anderen Tag TRCA, Casino Royale Raw Traces, der Hauch des Todes Basis für tkprof Informationen nicht aufbereitet, also „raw“ Zeitlicher Verlauf sichtbar Sehr detaillierte Analysen möglich www.it-symposium2007.de 20 IT-Symposium 2007 19.04.2007 Raw Traces vs. tkprof call count ------- -----Parse 3 Execute 3 Fetch 5922 ------- -----total 5928 cpu elapsed disk query current -------- ---------- ---------- ---------- ---------0.00 0.00 0 0 0 0.00 0.00 0 0 0 6.71 6.72 0 264993 0 -------- ---------- ---------- ---------- ---------6.71 6.73 0 264993 0 rows ---------0 0 59220 ---------59220 Misses in library cache during parse: 1 Parsing user id: 41 Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------Waited ---------- -----------SQL*Net message to client 5926 0.00 0.00 SQL*Net more data to client 30006 0.00 0.80 SQL*Net message from client 5926 0.06 6.91 SQL*Net break/reset to client 2 0.01 0.01 ******************************************************************************** Tatsächliche Laufzeit 10 Minuten, warum? Raw Traces FETCH #35:c=0,e=1250,p=0,cr=47,cu=0,mis=0,r=10,dep=0,og=4,tim=.. WAIT #35: nam='SQL*Net message from client' ela= 1013 p1=... WAIT #0: nam='SQL*Net message to client' ela= 0 p1=... WAIT #0: nam='SQL*Net message from client' ela= 306 p1=... WAIT #0: nam='SQL*Net message to client' ela= 0 p1=... ... WAIT #0: nam='SQL*Net message from client' ela= 1014 p1=... WAIT #0: nam='SQL*Net message to client' ela= 0 p1=... WAIT #0: nam='SQL*Net message from client' ela= 559 p1=.... WAIT #0: nam='direct path read (lob) ' ela= 28 p1=.... 120 MB Tracedatei möglicherweise fehlte das Ende, max_dump_file_size? www.it-symposium2007.de 21 IT-Symposium 2007 19.04.2007 Raw Traces vs. Statspack Top 5 Timed Events Laufzeit = 3600s ~~~~~~~~~~~~~~~~~~ % Total Event Waits Time (s) DB Time Wait Class ------------------------------ ------------ ----------- --------- -------------enq: HW - contention 13,163 2,626 50.52 Configuration db file sequential read 104,888 1,444 27.77 User I/O CPU time 776 14.93 log file sync 16,505 143 2.74 Commit log file parallel write 17,942 116 2.24 System I/O ------------------------------------------------------------- Problem? Avg Total Wait wait Waits Event Waits Time (s) (ms) /txn --------------------------- ------------ ---------- ------- --------enq: HW - contention 13,163 2,626 200 0.9 Raw Traces vs. v$event_historgram EVENT# ---------423 423 423 423 423 423 423 423 423 423 423 423 423 EVENT WAIT_TIME_MILLI WAIT_COUNT ------------------------------ --------------- ---------enq: HW - contention 1 7471 enq: HW - contention 2 9044 enq: HW - contention 4 19950 enq: HW - contention 8 41759 enq: HW - contention 16 94489 enq: HW - contention 32 211894 enq: HW - contention 64 281753 enq: HW - contention 128 273350 enq: HW - contention 256 220828 enq: HW - contention 512 132596 enq: HW - contention 1024 67016 enq: HW - contention 2048 28693 enq: HW - contention 4096 9251 Seit Start der Datenbank wurde 9.251 mal zwischen 2 und 4 Sekunden gewartet ! www.it-symposium2007.de 22 IT-Symposium 2007 19.04.2007 Raw Traces - Details... PARSING IN CURSOR #11 len=76 dep=0 uid=37 oct=3 lid=37 tim=... SELECT xxx FROM xxx WHERE xxx = :1 FOR UPDATE END OF STMT EXEC #11:c=0,e=217,p=0,cr=17,cu=2,mis=0,r=0,dep=0,og=1,tim=1119934391667186 WAIT #11: nam='SQL*Net message to client' ela= 1 p1=1952673792 p2=1 p3=0 FETCH #11:c=0,e=66,p=0,cr=4,cu=0,mis=0,r=2,dep=0,og=1,tim=1119934391667375 WAIT #11: nam='SQL*Net message from client' ela= 141 p1=1952673792 p2=1 p3=0 WAIT #0: nam='SQL*Net message to client' ela= 2 p1=1952673792 p2=1 p3=0 WAIT #0: nam='SQL*Net message from client' ela= 96 p1=1952673792 p2=1 p3=0 WAIT #0: nam='SQL*Net message to client' ela= 1 p1=1952673792 p2=1 p3=0 WAIT #0: nam='SQL*Net message from client' ela= 228 p1=1952673792 p2=1 p3=0 WAIT #12: nam='enq: HW - contention' ela= 605003 p1=1213661190 p2=5 p3=37749523 WAIT #12: nam='db file sequential read' ela= 45040 p1=10 p2=229337 p3=1 'enq: HW - contention' ela= 605003 = 0,6 Sekunden Raw Traces Parameter p1, p2, p3 siehe v$session_wait p1 ... p3 ab Oracle 10g im Klartext WAIT: nam='db file...' ela=581 p1=4 p2=007 p3=1 ... WAIT: nam='db file...' ela=581 file#=4 block#=007 blocks=1.. www.it-symposium2007.de 23 IT-Symposium 2007 19.04.2007 Raw Traces sporadisch Zeitstempel Uhrzeit am Ende des darunter stehenden Events 09:30:10 - 09:30:59 Warten auf Client 49,2 Sekunden Warten *** 2006-10-04 09:30:59.237 WAIT #9: nam='SQL*Net message from client' ela=49222111 ... .... .... raw traces - Pro und Contra sehr detailliert zeitliche Reihenfolge Wait Events, Binds aufwendig zu analysieren www.it-symposium2007.de 24 IT-Symposium 2007 19.04.2007 Pierce Brosnan V-Dollar jagt Dr. No Tracing, im Geheimdienst Ihrer Majestät dbms_application_info, Leben und sterben lassen Raw Traces, der Hauch des Todes TKProf, stirb an einem anderen Tag TRCA, Casino Royale TKProf, stirb an einem anderen Tag Transient Kernel Profiler Erzeugt aus Raw-Traces Aggregationen und Zusammenfassung www.it-symposium2007.de 25 IT-Symposium 2007 19.04.2007 TKProf Syntax tkprof tracefile outputfile [explain= ] [table= ] [insert= ] [sys= ] [sort= ]... explain & table für Explain Plan Erstellung insert = SQL Befehle um TKProf Ergebnis in DB zu speichern sys = Rekursive SQL Befehle TKProf & trcsess Bei Verwendung von dbms_monitor W ie r e d l$ o h g n u trcsess output=moonraker.trc \ service_name=majesty module=Moonraker \ action=Init \ *.* ora DB ora trcsess tkprof moonraker.trc www.it-symposium2007.de 26 IT-Symposium 2007 19.04.2007 TKProf - Pro und Contra Guter Gesamtüberblick Einfach zu bedienen Wait Events Binds Zeitliche Reihenfolge geht verloren Daniel Craig V-Dollar jagt Dr. No Tracing, im Geheimdienst Ihrer Majestät dbms_application_info, Leben und sterben lassen Raw Traces, der Hauch des Todes TKProf, stirb an einem anderen Tag TRCA, Casino Royale www.it-symposium2007.de 27 IT-Symposium 2007 19.04.2007 m e v o N . 23 6 0 0 2 r e b Trace Analyzer (TRCA), Casino Royale Download je nach Oracle Version (siehe Note 224270.1) SQL> dbms_monitor... TRCA BOND SQL> connect / as sysdba SQL> @tacreate.sql bond_ora_87.trc exec trca$i.trace_analyzer('bond_ora_87.trc' ) trcanlzr_87_4.html www.it-symposium2007.de 28 IT-Symposium 2007 19.04.2007 TRCA Diverse Übersichten, z. B. Wait Events TRCA Hot Blocks: Segment, File-ID, Block-ID Wait I/O je Segment www.it-symposium2007.de 29 IT-Symposium 2007 19.04.2007 TRCA Top SQL Details je SQL: Ausführungsplan, Waits Details je SQL: Statistiken, Indizes ... TRCA Zeiten ohne Aktivität usw. usw. usw. www.it-symposium2007.de 30 IT-Symposium 2007 19.04.2007 TRCA - Pro und Contra Sehr guter Überblick detaillierte Informationen leicht zu bedienen Open Source (PL/SQL) Zeitliche Reihenfolge geht verloren muss installiert werden www.it-symposium2007.de 31 IT-Symposium 2007 19.04.2007 Weitere Vorträge Trainingskurs: • Oracle Hochverfügbarkeitslösungen Freitag, 20.04.07, 09:00 - 17:00 Uhr Referent: Herr Martin Hoermann, ORDIX AG, Münster V-Dollar 007 Jagt Do. No Sir Sean Connery ................................................................................. als James Bond Ursula Andress ..................................................................................... als Honey Ryder Do. No ............................................................................................ als Do. No www.it-symposium2007.de 32 IT-Symposium 2007 19.04.2007 Tracing 007 Im Geheimdienst Ihrer Majestät George Lazenby .................................................................................... als James Bond Diana Rigg ............................................................................................ als Tracy Telly Savalas ......................................................................... als Ernst Stavro Blofeld http://www.petefinnigan.com/ramblings/how_to_set_trace.htm http://www.oracle.com/technology/ pub/articles/10gdba/nanda_10gr2dba_part3.html dbms_application_info 007 Leben und Sterben lassen Sir Roger Moore ................................................................................... als James Bond Jane Seymour ..................................................................................... als Solitaire Yaphett Kotto ..................................................................................... als Kananga Metalink Note:281787.1 Oracle Database 10g Statistic Aggregation using DBMS_MONITOR www.it-symposium2007.de 33 IT-Symposium 2007 19.04.2007 Raw Traces 007 Der Hauch des Todes Timothy Dalton .................................................................................. als James Bond Maryam d‘Abo ........................................................................ als Kara Milovy Joe Don Baker ............................................................................. als Brad Whitaker Metalink-Note 39817.1 TKPROF 007 Stirb an einem anderen Tag Pierce Brosnan ....................................................................................... als James Bond Halle Berry ................................................................................................. als Jinx Toby Stephens ........................................................................... als Sir Gustav Graves www.it-symposium2007.de 34 IT-Symposium 2007 19.04.2007 TRCA 007 Casino Royale Daniel Craig ..................................................................................... als James Bond Caterina Mourino ................................................................................ als Solange Mads Mikkelsen ........................................................................................ als Le Chiffre TraceAnalyzer_IOUG.pdf (Note:224270.1) das war... ...007 mit der Lizenz zum Tracen www.it-symposium2007.de 35 IT-Symposium 2007 19.04.2007 Ihr Fragen beantworten wir gerne an unserem Stand... www.it-symposium2007.de 36