Die Ablaufverfolgung ist ein wichtiger Bestandteil der Oracle-Datenbankoptimierung. Dies hilft dabei, alle Problemaussagen und Warteereignisse zu erfassen, die für den langsamen Ablauf der Sitzung verantwortlich sind.
Die Oracle-Datenbank bietet viele schnellste Möglichkeiten, die lokale Sitzung und andere Benutzersitzungen zu verfolgen und die Ablaufverfolgung zu formatieren, um sie lesbar zu machen
Lassen Sie uns einen Blick darauf werfen, wie Sie den SQL-Trace, das 10046-Ereignis in der Oracle-Datenbank und das trcsess, tkprof-Dienstprogramm aktivieren
Inhaltsverzeichnis
SQL-Trace, 100046-Ereignis
Wenn Sie in einer lokalen Sitzung verfolgen möchten, gehen Sie wie folgt vor, um den SQL-Trace zu aktivieren
Normale Spur Sitzungssatz ändern sql_trace =true; -- Um einen Trace auf eine andere Sitzung zu setzen set sql_trace =false; -- Ablaufverfolgung ausschalten Volle Ebene mit Warteereignis und Ablaufverfolgung binden alter session set events ='10046 trace name context forever, level 12';Um die Ablaufverfolgung zu deaktivierenalter session set events ='10046 trace name context off';Dasselbe wie bei normaler Ablaufverfolgung exec DBMS_SESSION.set_sql_trace(sql_trace => TRUE);exec DBMS_SESSION.set_sql_trace(sql_trace => FALSE);
Wenn Sie in einer anderen laufenden Sitzung verfolgen möchten, folgen Sie den Schritten
Normale Spur Führen Sie dbms_system.set_sql_trace_in_session (‘sid’,’serial’,true) aus; -- Um die Ablaufverfolgung zu aktivieren, führen Sie dbms_system.set_sql_trace_in_session (‘sid’,’serial’,true) aus; -- Ablaufverfolgung ausschalten Volle Ebene mit Warteereignis und Ablaufverfolgung binden Ausführen von dbms_system.set_ev(‘sid’,’serial’,10046,12,’’);Um die Ablaufverfolgung zu deaktivieren Führen Sie dbms_system.set_ev(‘sid’,’serial’,10046,0,’’);aus
Sie müssen die Verwendung von 12,0 in verschiedenen obigen Anweisungen gesehen haben. Es handelt sich um Ablaufverfolgungsebenen. Oracle Tracing verfügt über Ablaufverfolgungsebenen. Hier sind die gültigen Werte
0 | Keine Spur. Wie das Ausschalten von sql_trace. |
2 | Das Äquivalent zum regulären sql_trace Er bietet Ausführungspfad, Zeilenanzahl, kleinste Flatfile Vorteile Bereitstellung eines Ausführungspfads Bereitstellung von Zeilenzahlen Erzeugt die kleinste flache Datei Nachteile Kann nicht feststellen, welche Werte zur Laufzeit an SQL geliefert wurden Wenn die Statistiken für die Abfrage niedrig sind, aber die Laufzeit lang ist, kann nicht festgestellt werden, welche Ereignisse die lange Wartezeit verursacht haben |
4 | Dasselbe wie 2, aber mit zusätzlichen Bind-Variablenwerten Vorteile Stellt den Ausführungspfad bereit Stellt die Zeilenanzahl bereit Erkennt, für welche Werte die Anweisung ausgeführt wurde Nachteile Wiederum, wenn die Laufzeit lang und die Statistik niedrig ist, ist es schwer zu sagen, warum bei dieser Art von Ablaufverfolgung. Erzeugt eine größere flache Datei als die reguläre Ablaufverfolgung, weil Bind-Variableninformationen gespeichert werden müssen. |
8 | Dasselbe wie 2, aber mit zusätzlichen Wait-Ereignissen Reguläre Ablaufverfolgung plus Zeitangaben für Datenbankoperationen, auf deren Ausführung die SQL gewartet hat, um abgeschlossen zu werden. Zum Beispiel:Festplattenzugriffszeiten. Vorteile Bereitstellung eines Ausführungspfads Bereitstellung von Zeilenzählungen Kann Zeitangaben für alle mit SQL verbundenen Ereignisse angeben. Nachteile Die Ablaufverfolgungsdatei kann aufgrund all der Informationen, die Oracle in die Ablaufverfolgungsdatei schreiben muss, leicht an ihre Grenzen stoßen, und dann sind nur Teilinformationen in der Ablaufverfolgungsdatei verfügbar. Bind-Variableninformationen sind nicht verfügbar |
12 | Dasselbe wie 2, aber mit Bind-Variablenwerten und Wait-Ereignissen Reguläre Ablaufverfolgung mit sowohl Wait- als auch Bind-Informationen. Enthält die vollständigsten Informationen und erzeugt die größte Ablaufverfolgungsdatei. Stellt den Ausführungspfad bereit. Stellt die Anzahl der Zeilen dar. Kann Zeitangaben für alle mit SQL verbundenen Ereignisse angeben. Kann feststellen, welche Werte die SQL wurde mit Vorteilen ausgeführt Stellt den Ausführungspfad bereit Stellt die Anzahl der Zeilen bereit Erkennt die Zeiten für alle mit SQL verbundenen Ereignisse. Erkennt, mit welchen Werten die SQL ausgeführt wurde Nachteile Die Ablaufverfolgungsdatei kann aufgrund all der Informationen, die Oracle in die Ablaufverfolgungsdatei schreiben muss, leicht an ihre Grenzen stoßen, und dann sind nur Teilinformationen in der Ablaufverfolgungsdatei verfügbar. |
Es gibt auch andere Möglichkeiten, die Verfolgung durchzuführen. Hier sind einige davon
(1) ORADEBUG
Dies erfordert eine Anmeldung als sysdba
oradebug setospid 1111 -- Debug-Sitzung mit dem angegebenen Oracle-Prozess idoradebug setorapid 1111 --- Debug-Sitzung mit dem angegebenen OS-Prozessoradebug-Ereignis 10046 Trace-Namenskontext für immer, Ebene 4; oradebug-Ereignis 10046 Trace-Namenskontext deaktiviert; --- Dies deaktiviert den Traceoradebug close_trace --- Dies schließt die Ablaufverfolgungsdatei Oradebug TRACEFILE_NAME;
(2) Mit Oracle 10g wurden die SQL-Tracing-Optionen mit dem DBMS_MONITOR-Paket erweitert
EXECUTE dbms_monitor.session_trace_enableWas ähnlich istALTER SESSION SET EVENTS '10046 Trace-Namenskontext für immer, Ebene 2';EXECUTE dbms_monitor.session_trace_enable (binds=>true);Was ähnlich istALTER SESSION SET EVENTS '10046 Trace-Namenskontext für immer, Ebene 4';EXECUTE dbms_monitor.session_trace_enable (waits=>true);Was ähnlich istALTER SESSION SET EVENTS '10046 Trace-Namenskontext für immer, Ebene 8';EXECUTE dbms_monitor.session_trace_enable('sid','serial#')Was ähnlich istexecute dbms_system.set_ev( 'sid','serial',10046,2,'');EXECUTE dbms_monitor.session_trace_enable ('sid','serial#',binds=>true);was ähnlich istexecute dbms_system.set_ev('sid','serial' ,10046,4,'');EXECUTE dbms_monitor.session_trace_enable ('sid','serial#',waits=>true);was ähnlich istexecute dbms_system.set_ev('sid','serial',10046,8,'' );
Es gibt viele andere Funktionen, die in dbms_monitor verfügbar sind. Wir können die Verfolgung basierend auf der Client-ID und auf mehrere Arten aktivieren
So identifizieren Sie die Trace-Dateien
Wir können die Ablaufverfolgungsdateien anhand der Spid der Sitzung identifizieren. Außerdem enthält die Ablaufverfolgungsdatei am Anfang der Ablaufverfolgungsdatei das Paar sid,seriennummer .
Die folgende Abfrage kann verwendet werden, um die Ablaufverfolgungsdatei der lokalen Sitzung zu finden
c.value auswählen || '/' || d.instance_name ||'_ora_' || a.spid || '.trc'-Tracefrom v$process a, v$session b, v$parameter c, v$instance dwhere a.addr =b.paddrand b.audsid =userenv('sessionid')and c.name ='user_dump_dest'/
Es gibt eine weitere einfache Möglichkeit, die Trace-Datei zu identifizieren, die als Trace-ID bezeichnet wird
Sitzungssatz ändern tracefile_identifer=’ORAC’; Dies ist die Kennung
Beispiel-Trace-Datei
Trace-Datei /app/oracle/TEST/diag/rdbms/test/TEST/trace/TEST_ora_13025_IDEN.trcOracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64-Bit-ProduktionMit Partitionierung, Real Application Clusters, OLAP, Data Mining und Real Application Testing optionsORACLE_HOME =/app/oracle/TEST/11.2.0/dbSystemname: SunOS12Knotenname:sun12Release: 5.10Version: Generic_144488-11Maschine: sun4uInstanzname:TESTRedo-Thread, der von dieser Instanz bereitgestellt wird:1Oracle-Prozessnummer:202Unix-Prozess-PID:13025 , Bild:[email protected] SunOS12*** 2013-10-21 12:28:56.461*** SESSION ID:(3875.17341) 2013-10-21 12:28:56.461*** CLIENT ID:() 2013 -10-21 12:28:56.461*** SERVICENAME:(TEST) 2013-10-21 12:28:56.461*** MODULNAME:([email protected](TNS V1-V3)) 2013-10 -21 12:28:56.461*** ACTION NAME:() 2013-10-21 12:28:56.461CLOSE #4:c=0,e=11,dep=1,type=1,tim=8866891135825=====================PARSING IN CURSOR #5 len=356 dep=1 uid=173 oct=3 lid=173 tim=8866891136821 hv=2468783182 ad='4c70e4398' sqlid='0wmwsjy9kd92f'SELECT PROFILE_OPTION_ID, APPLICATION_ID, SITE_ENABLED_FLAG , APP_ENABLED_FLAG , RESP_ENABLED_FLAG , USER_ENABLED_FLAG, ORG_ENABLED_FLAG , SERVER_ENABLED_FLAG, SERVERRESP_ENABLED_FLAG, HIERARCHY_TYPE, USER_CHANGEABLE_FLAG FROM FND_PROFILE_OPTIONS WHERE PROFILE_OPTION_NAME =:B1 AND START_DATE_ACTIVE <=SYSDATE AND NVL(END_DATE_ACTIVE, SYSDATE)>=SYSDATEEND OF STMTBINDS # 5:Bind#0oacdty=01 mxl=128(80) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=01 csi=871 siz=128 off=0kxsbbbfp=ffffffff7d677b48 bln=128 avl=21 flg=0value="PER_BUSINESS_GROUP_ID"EXEC #5:c=0,e=1474,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=1374985481 ,tim=8866891138224FETCH #5:c=0,e=61,p=0,cr=3,cu=0,mis=0,r=1,dep=1,og=1,plh=1374985481,tim=8866891138429CLOSE #5:c=0,e=5,dep=1,type=3,tim=8866891138503=====================PARSING IN CURSOR #4 len=230 dep=1 uid=173 oct=3 lid=173 tim=8866891138634 hv=3575592451 ad='3aeea3da0' sqlid='55dc767ajydh3'SELECT PROFILE_OPTION_VALUE FROM FND_PROFILE_OPTION_VALUES WH ERE PROFILE_OPTION_ID =:B4 AND APPLICATION_ID =:B3 AND LEVEL_ID =10003 AND LEVEL_VALUE =:B2 AND LEVEL_VALUE_APPLICATION_ID =:B1 AND PROFILE_OPTION_VALUE IS NOT NULLEND OF STMTBINDS #4:Bind#0oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=96 off=0kxsbbbfp=ffffffff7d677b68 bln=22 avl=03 flg=05value=1204Bind#1oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=0 off=24kxsbbbfp=ffffffff7d677b80 bln=22 avl=02 flg=01value=800Bind#2oacdty=02 mxl=22(21) mxlc =00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=0 off=48kxsbbbfp=ffffffff7d677b98 bln=22 avl=04 flg=01value=50334Bind#3oacdty=02 mxl=22(21 ) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=0 off=72kxsbbbfp=ffffffff7d677bb0 bln=22 avl=01 flg=01value=0EXEC #4:c=0, e=377,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=2802907561,tim=8866891138978FETCH #4:c=0,e=26, p=0,cr=3,cu=0,mis=0,r=0,dep=1,og=1,plh=2802907561,tim=886689113 9050CLOSE #4:c=0,e=2,dep=1,type=3,tim=8866891139116=====================PARSING IN CURSOR #5 len =191 dep=1 uid=173 oct=3 lid=173 tim=8866891139308 hv=303338305 ad='3bedf0e48' sqlid='7qs7fx89194u1'SELECT PROFILE_OPTION_VALUE FROM FND_PROFILE_OPTION_VALUES WHERE PROFILE_OPTION_ID =:B4 UND =EV_B3 UND L =EV:B2B3 UND L =EV:B2B3 LEVEL_VALUE =:B1 UND PROFILE_OPTION_VALUE IST NICHT NULLENDE VON STMTBINDS #5:Bind#0oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=96 off=0kxsbbbfp=ffffffff7d673b78 bln=22 avl=03 flg=05value=1204Bind#1oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=0 off=24kxsbbbfp=ffffffff7d673b90 bln=22 avl=02 flg=01value=800Bind#2oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi =00 siz=0 off=48kxsbbbfp=ffffffff7d673ba8 bln=22 avl=04 flg=01value=10001
Wie man prüft, ob Trace in Oracle aktiviert ist
Wenn Sie die Ablaufverfolgung mit dem DBMS_MONITOR-Paket aktiviert haben, können wir mit der folgenden Abfrage prüfen, ob die Ablaufverfolgung aktiviert ist
set lines 180col module for a45col sql_trace_waits for a20col sql_trace_binds for a20col sql_trace for a20select username,module,sid,sql_trace,sql_trace_waits,sql_trace_binds from v$session where sql_trace='ENABLED'/
Wenn es durch andere Methoden aktiviert ist, besteht die einzige Möglichkeit zur Überprüfung darin, sich den Trace-Speicherort anzusehen und die aktuellen Trace-Dateien herauszufinden und dann die SID und die Seriennummer darin zu finden, und dann können Sie v$session abfragen, um die zu finden Sitzung und Sie können die Ablaufverfolgung deaktivieren, wenn Sie möchten
Oracle tkprof-Dienstprogramm
Die mit der obigen Methode erhaltenen Trace-Dateien liegen in Rohform vor, die mit dem Dienstprogramm tkprof (Transient Kernel PROFile-Dienstprogramm) in ein besser lesbares Format konvertiert werden kann.
tkprofUsage:tkprof-Tracefile-Ausgabedatei [explain=] [table=][print=] [insert=] [sys=] [sort=]table=schema.tablename Verwenden Sie 'schema.tablename' mit der Option 'explain='. explain=user/password Mit ORACLE verbinden und EXPLAIN PLAN.print=integer ausgeben Nur die ersten "ganzzahligen" SQL-Anweisungen auflisten.aggregate=yes|noinsert=filename SQL-Anweisungen und Daten innerhalb von INSERT-Anweisungen auflisten.sys=no TKPROF listet SQL nicht auf Anweisungen werden als Benutzer SYS.record=Dateiname ausgeführt Nicht-rekursive Anweisungen in der Ablaufverfolgungsdatei aufzeichnen.waits=yes|no Zusammenfassung für alle in der Ablaufverfolgungsdatei gefundenen Warteereignisse aufzeichnen.sort=option Satz von null oder mehr der folgenden Sortieroptionen :prscnt Anzahl der Parsing-Aufrufe prscpu CPU-Zeit parsingprsela Verstrichene Zeit Parsing prsdsk Anzahl der Lesevorgänge auf der Festplatte während der Analyse prsqry Anzahl der Puffer für konsistentes Lesen während parseprscu Anzahl der Puffer für aktuelle Lesevorgänge während parseprsmis Anzahl der Fehler im Bibliothekscache während der Analyse execnt Anzahl von ex ecute hieß execpu CPU-Zeit, die für die Ausführung von exeela aufgewendet wurde verstrichene Zeit für die Ausführung von exedsk Anzahl der Lesevorgänge auf der Festplatte während der Ausführung exeqry Anzahl der Puffer für konsistentes Lesen während der Ausführung wie oft fetch aufgerufen wurdefchcpu CPU-Zeit verbracht mit fetchingfchela verstrichene Zeit fetchingfchdsk Anzahl der Festplattenlesevorgänge während fetchfchqry Anzahl der Puffer für konsistentes Lesen während fetchfchcu Anzahl der Puffer für aktuellen Lesevorgang während fetchfchrow Anzahl der abgerufenen Zeilenuserid Benutzer-ID des Benutzers, der den Cursor geparst hat
Einige Beispiele
tkprof file.trc file.txt sys=no explain=userid/password sort=prsela,exeela,fchelatkprof file.trc file.txt sys=no explain=userid/password sort=prsela,exeela,fchelatkprof file.trc file .txt sys=notkprof file.trc file.txt sys=no explain=userid/password sort=prsela,exeela,fchelaDies gibt nur 10 SQL aus tkprof .trc elaps.prf sys=no explain=apps/ sort=(prsela,exeela,fchela) print=10Dies gibt alle SQL aus tkprof .trc elaps.prf sys=no explain=apps/apps sort=prsela,exeela,fchela
Beispielinhalt einer tkprof-Datei
TKPROF:Version 11.2.0.4.0 – Produktion am Dienstag, 17. Januar 14:12:41 2013Copyright (c) 1982, 2007, Oracle. Alle Rechte vorbehalten.Trace-Datei:TEST_ora_15941.trcSortieroptionen:execpu fchcpu**************************************** ********************************************count =Anzahl der OCI Prozedur wurde ausgeführtCPU =CPU-Zeit in Sekunden executeelapsed =verstrichene Zeit in Sekunden executedisk =Anzahl physischer Lesevorgänge von Puffern von Diskquery =Anzahl von Puffern, die für konsistente Lesevorgänge abgerufen wurden =Anzahl von Puffern, die im aktuellen Modus abgerufen wurden (normalerweise für Aktualisierungen)rows =Anzahl von Zeilen verarbeitet durch den Abruf- oder Ausführungsaufruf******************************************** *************************************SQL-ID:6w82ggrtysxPlan Hash:2325776775SELECT FUNCTION_NAME FROM FND_USER_DESKTOP_OBJECTS WHERE USER_ID =:b1 AND APPLICATION_ID =:b2 AND RESPONSIBILITY_ID =:b3 AND TYPE ='FUNCTION' AND ROWNUM <=10 ORDER BY SEQUENCEcall count cpu elapsed disk query current rows------ ------ ---- ---- ---------- ---------- ---------- ---------- ----- --- ---------- ---------- ---------- ---------- ------- ---total 4 0,00 0,00 0 4 0 1 Fehler im Bibliothekscache während der Analyse:0 Optimierungsmodus:ALL_ROWS Parsing-Benutzer-ID:173 (APPS) Anzahl der erfassten Planstatistiken:173 (APPS) Anzahl der erfassten Planstatistiken:1 Zeile --------- ---------- ---------- --------------------- ------------------------------1 1 1 SORT ORDER BY (cr=4 pr=0 pw=0 time=0 us cost=6 size=41 card=1)1 1 1 COUNT STOPKEY (cr=4 pr=0 pw=0 time=0 us)1 1 1 TABLE ACCESS BY INDEX ROWID FND_USER_DESKTOP_OBJECTS (cr=4 pr=0 pw=0 time =0 US-Kosten=5 Größe=41 Karte=1)1 1 1 INDEXBEREICH S CAN FND_USER_DESKTOP_OBJECTS_N1 (cr=3 pr=0 pw=0 time=0 us cost=3 size=0 card=3)(object id 33596)Zeilen Ausführungsplan------- --------- ------------------------------------------0 SELECT STATEMENT MODE:ALL_ROWS1 SORT ( ORDER BY)1 COUNT (STOPKEY)1 TABLE ACCESS MODE:ANALYZED (BY INDEX ROWID) OF'FND_USER_DESKTOP_OBJECTS' (TABLE)1 INDEX MODE:ANALYZED (RANGE SCAN) OF'FND_USER_DESKTOP_OBJECTS_N1' (INDEX)Verstrichene Zeiten umfassen das Warten auf folgende Ereignisse:Ereignis gewartet am Zeiten max. Warten Gesamt gewartet---------------------------------------- Gewartet ------ ---- ------------SQL*Nettonachricht an Client 5 0,00 0,00SQL*Nettonachricht vom Client 5 0,00 0,00**************** ****************************************************** **************SQL ID:276ut2ywquxPlan Hash:3856112528select object_name, icon_namefromfnd_desktop_objectscall count cpu elapsed disk query current rows------- ------ ------ -- ---------- ---------- ---------- ---------- -------- -Parse 1 0,00 0,00 0 0 0 0 0,00 0,00 0 0 0 0 0 0 0,00 0,00 0 6 0 47 ------- ------ -------- ------ ----- ---------- ---------- ---------- ----------gesamt 5 0,00 0,00 0 6 0 47 Fehler im Bibliotheks-Cache d uring parse:0Optimizer mode:ALL_ROWSParsing user id:173 (APPS)Anzahl der erfassten Planstatistiken:1 Zeilen (1.) Zeilen (Durchschn.) Zeilen (max.) Zeilenquellenoperation---------- ----- ----- ---------- ----------------------------------- ----------------47 47 47 TABLE ACCESS FULL FND_DESKTOP_OBJECTS (cr=6 pr=0 pw=0 time=0 us cost=2 size=1175 card=47)Zeilen Ausführungsplan ------- ------------------------------------------- --------0 SELECT STATEMENT MODE:ALL_ROWS47 TABLE ACCESS MODE:ANALYZED (FULL) OF 'FND_DESKTOP_OBJECTS'(TABLE)
Oracle-Trace Dienstprogramm
Bei der Verwendung gemeinsam genutzter Serversitzungen sind viele Prozesse beteiligt. Die Ablaufverfolgung der Benutzersitzung ist über verschiedene Ablaufverfolgungsdateien verstreut, die zu verschiedenen Prozessen gehören. Dadurch ist es schwierig, sich ein vollständiges Bild vom Lebenszyklus einer Sitzung zu machen.
Das trcsess-Dienstprogramm konsolidiert die Trace-Ausgabe ausgewählter Trace-Dateien anhand mehrerer Kriterien
trcsess [output=output_file_name] [session=session_id] [clientid=client_id] [service=service_name] [action=action_name] [module=module_name] [trace_files]trcsess output=main.trc service=TEST *trcNachdem die konsolidierte Ablaufverfolgungsdatei generiert wurde, können Sie tkprof darauf ausführen.
Weitere Informationen
In 11g und höher ist sql_trace auch ein Ereignis und kann mit der Ereignissyntax gesetzt werden:
SQL> oradebug doc Ereignisname sql_tracesql_trace:Ereignis für SQL traceUsage-------sql_tracewait, binden ,plan_stat , Ebene Sie könnten es also wie folgt verwenden, um SQL_TRACE zu aktivieren, das Bindungsinformationen anfordert:
Sitzungssatzereignisse ändern 'sql_trace bind=true';oder Informationen binden und warten (beachten Sie, dass Kommas getrennt sind):
Sitzungssatzereignisse ändern 'sql_trace bind=true, wait=true';Die weitere Ablaufverfolgung kann auf eine Reihe von SQL_IDs beschränkt werden, wenn Sie einen Filter dafür einschließen. Z. B.
Sitzungssatzereignisse ändern 'sql_trace [sql:sql_id=g3yc1js3g2689 | sql_id=7ujay4u33g337]bind=true, wait=true';10046 EVENT-Ebenen:(die neuen sql_trace-Werte sind in [..] enthalten)
Dies sind Bit-Werte, die zusammengestellt werden können, um verschiedene Mischungen zu erhalten
1 – Standard-SQL_TRACE-Funktionalität aktivieren (Standard)
4 – Als Level 1 PLUS Trace-Bind-Werte [ bind=true ]
8 – Als Level 1 PLUS Ablaufverfolgung wartet [wait=true]
Dies ist besonders nützlich, um Latch Wait usw. zu erkennen.
Es kann aber auch verwendet werden, um Full-Table-Scans und Index-Scans zu erkennen.Ab 11g sind diese zusätzlichen Bitebenen verfügbar:
16 – Generiere STAT-Zeilenabbilder für jede Ausführung [ plan_stat=all_executions ]
32 – Niemals Ausführungsstatistiken ausgeben [ plan_stat=never ]Ab 11.2.0.2 ist diese zusätzliche Bitebene verfügbar:
64 – Adaptiver Dump von STAT-Zeilen. [ plan_stat=adaptive ]
Dies gibt die STAT-Informationen aus, wenn ein SQL länger als etwa 1 Minute dauerte, wodurch
Informationen für die teureren SQLs und für unterschiedliche Ausführungen solcher
SQLs bereitgestellt werden.Beispiel:Eine übliche Ereignisebene ist 12, die die standardmäßige SQL_TRACE-Ausgabe, Bindungen, Wartezeiten und
Standard-STAT-Zeilenverfolgung enthält.Hinweise:
Das STAT-Dumping wurde in 11g dahingehend geändert, dass sie nicht über alle Ausführungen hinweg aggregiert, sondern nach der Ausführung ausgegeben werden. Dies wurde durchgeführt, um Fälle anzugehen, in denen der Cursor nicht geschlossen ist und die STAT-Informationen daher nicht ausgegeben werden.
Jetzt garantieren wir, dass die STAT-Informationen nach der Ausführung erfasst werden. Sehen Sie sich die obigen Bitebenen an, um eine feinere Kontrolle über die STAT-Leitungen zu haben.Liest auch
erklären
v$active_session_history
Plan in Oracle
sql tuning Advisor