Академический Документы
Профессиональный Документы
Культура Документы
EnablingTrace
Thereareseveralwaystoenabletrace:
EnablingTraceusingORADEBUG
EnablingTraceatInstanceLevel
EnablingTraceatSessionLevel
EnablingTraceinanotherSession
EnablingTraceinOracle5
EnablingTraceinOracle6
EnablingTraceusingORADEBUG
SQL_TRACEisasynonymforevent10046andcanbesetusingORADEBUG
Thesyntaxis:
SQL>ORADEBUGDOCEVENTNAMESQL_TRACE
sql_trace:eventforsqltrace
Usage
sql_trace
wait<false|true>,
bind<false|true>,
plan_stat<never|first_execution|all_executions|adaptive>,
level
Thedefaultlevelis1.
Forexampletoenabledefaulttrace:
ORADEBUGEVENTSQL_TRACE
Toenabletraceincludingbindvariables:
ORADEBUGEVENTSQL_TRACEBIND=TRUE
Toenabletraceincludingbindvariablesandwaitevents:
ORADEBUGEVENTSQL_TRACEBIND=TRUE,WAIT=TRUE
Toenabletraceincludingplanstatisticsforeverystatementexecution:
ORADEBUGEVENTSQL_TRACEPLAN_STAT=ALL_EXECUTIONS
Numericeventlevelsarestillsupported:
ORADEBUGEVENTSQL_TRACELEVEL=4
Todisabletrace:
ORADEBUGEVENTSQL_TRACEOFF
EnablingTraceatInstanceLevel
Tracecanbeenabledwhentheinstanceisstartedbyaddingthefollowinglinetotheinit.orafile.
sql_trace=TRUE
Thiswillenabletraceforallsessionsincludingbackgroundprocesses.Notethatenablingthisparametermaygeneratelargeamountsoftraceandconsumesignificantsystem
resources.
Tracecanalsobeenabledatinstancelevelusingevent10046.Forexampletoenableevent10046level8addthefollowinglinetotheinit.orafile:
event="10046tracenamecontextforever,level8"
Whentheinstanceisalreadyrunning,tracecanbeenableddirectlyusingtheALTERSYSTEMcommand.
ALTERSYSTEMSETtrace_enabled=TRUE
Thiswillenabletraceforallnewlycreatedsessions.Currentlyexecutingsessionsandbackgroundprocesseswillbeunaffected.
Instancewidetracecanbedisabledagainusing:
ALTERSYSTEMSETtrace_enabled=FALSE
InOracle11.1andabove,SQL_TRACEisaneventandcanbeenabledusingthefollowingsyntax:
ALTERSYSTEMSETEVENTS'sql_tracewait=true'
ALTERSYSTEMSETEVENTS'sql_tracebind=true'
ALTERSYSTEMSETEVENTS'sql_tracebind=true,wait=true'
ALTERSYSTEMSETEVENTS'sql_traceplan_stat=all_executions'
InOracle11.1andabovetracecanberestricteedtoaspecificSQLIDbyspecifyingafilter:
ALTERSYSTEMSETEVENTSsql_trace
[sql:sql_id=3s1yukp05bzg6]bind=true,wait=true'
MultipleSQLIDscanbespecifiedusingthe|symbolasaseparator:
ALTERSYSTEMSETEVENTSsql_trace
[sql:sql_id=3s1yukp05bzg6|aca4xvmz0rzup]bind=true,wait=true'
InOracle11.1andabove,tracecanberestrictedtospecificcomponents.Forexample:
ALTERSYSTEMSETEVENTS'trace[rdbms.SQL_Optimizer.*]'
Thelibrarynamecanoptionallybeommitted.Forexample:
ALTERSYSTEMSETEVENTS'trace[SQL_Optimizer.*]'
Disabletraceagainusing:
ALTERSYSTEMSETEVENTS'trace[SQL_Optimizer.*]off'
Individualcomponentscanalsobefiltered.Forexample:
ALTERSYSTEMSETEVENTS'trace[SQL_Optimizer.*][sql:3bnxc7htmf2ad]'
Inallversionstracecanalsobeenabledusingevent10046.Forexampletoenableevent10046level8usethecommand:
ALTERSYSTEMSETEVENTS'10046tracenamecontextforever,level8'
Instancewidetracecanbedisabledagainusing:
ALTERSYSTEMSETEVENTS'10046tracenamecontextoff'
EnablingTraceatSessionLevel
Tracecanbeenabledatsessionlevelusingthecommand:
ALTERSESSIONSETsql_trace=TRUE
Traceisdisabledatsessionlevelusing:
ALTERSESSIONSETsql_trace=FALSE
InOracle11.1andabove,SQL_TRACEisaneventandcanbeenabledusingthefollowingsyntax:
ALTERSESSIONSETEVENTS'sql_tracewait=true'
ALTERSESSIONSETEVENTS'sql_tracebind=true'
ALTERSESSIONSETEVENTS'sql_tracebind=true,wait=true'
ALTERSESSIONSETEVENTS'sql_traceplan_stat=all_executions'
InOracle11.1andabovetracecanberestricteedtoaspecificSQLIDbyspecifyingafilter:
ALTERSYSTEMSETEVENTSsql_trace
[sql:sql_id=3s1yukp05bzg6]bind=true,wait=true'
MultipleSQLIDscanbespecifiedusingthe|symbolasaseparator:
ALTERSYSTEMSETEVENTSsql_trace
[sql:sql_id=3s1yukp05bzg6|aca4xvmz0rzup]bind=true,wait=true'
InOracle11.1andabove,tracecanberestrictedtospecificcomponents.Forexample:
ALTERSESSIONSETEVENTS'trace[rdbms.SQL_Optimizer.*]'
Thelibrarynamecanoptionallybeommitted.Forexample:
ALTERSESSIONSETEVENTS'trace[SQL_Optimizer.*]'
Disabletraceagainusing:
ALTERSESSIONSETEVENTS'trace[SQL_Optimizer.*]off'
Individualcomponentscanalsobefiltered.Forexample:
ALTERSESSIONSETEVENTS'trace[SQL_Optimizer.*][sql:3bnxc7htmf2ad]'
Inallversionstracecanalsobeenabledatsessionlevelusingevent10046.
Forexampletoenableevent10046level8usethecommand:
ALTERSESSIONSETEVENTS'10046tracenamecontextforever,level8'
Event10046traceisdisabledatsessionlevelusing:
ALTERSESSIONSETEVENTS'10046tracenamecontextoff'
TracecanbeenabledinthecurrentsessionusingtheDBMS_SESSIONpackage.ThiscanbeusefulifyouneedtoenabletracefromwithinaPL/SQLpackage.
Traceisenabledatsessionlevelusing:
EXECUTEdbms_session.set_sql_trace(TRUE)
Traceisdisabledatsessionlevelusing:
EXECUTEdbms_session.set_sql_trace(FALSE)
TracecanbeenabledinthecurrentsessionusingtheDBMS_SUPPORTpackage.ThisprovidesmoreflexibilitythanDBMS_SESSION.
Traceisenabledatsessionlevelusing:
EXECUTEdbms_support.start_trace
Withnoparameters,thisprocedureenableslevel1trace:
Event10046level4tracecanbeenabledusing:
EXECUTEdbms_support.start_trace(binds=>true)
Event10046level8tracecanbeenabledusing:
EXECUTEdbms_support.start_trace(waits=>true)
Event10046level12tracecanbeenabledusing:
EXECUTEdbms_support.start_trace(binds=>true,waits=>true)
Tracecanbedisabledusing:
EXECUTEdbms_support.stop_trace
EnablingTraceinanotherSession
TracecanbeenabledinanothersessionusingtheDBMS_SUPPORTpackage.
TheSIDandoptionallytheserialnumberifthetargetsessionmustbeobtainedfromV$SESSION.Theserialnumbercanoptionallybespecifiedas0.
Forexampletoenablelevel1traceinasessionwithSID9andserialnumber29use:
EXECUTEdbms_support.start_trace_in_session(9,29)
Withnoparameters,thisprocedureenableslevel1trace:
Event10046level4tracecanbeenabledusing:
EXECUTEdbms_support.start_trace_in_session(9,29,binds=>true)
Event10046level8tracecanbeenabledusing:
EXECUTEdbms_support.start_trace_in_session(9,29,waits=>true)
Event10046level12tracecanbeenabledusing:
EXECUTEdbms_support.start_trace_in_session(9,29,binds=>true,waits=>true)
Tracecanbedisabledusing:
dbms_support.stop_trace_in_session(9,29)
TracecanbealsobeenabledinanothersessionusingtheDBMS_SYSTEMpackage.
TheSIDandtheserialnumberofthetargetsessionmustbeobtainedfromV$SESSION.Inthiscasetheserialnumbermustbespecified.
ForexampletoenabletraceinasessionwithSID9andserialnumber29use:
EXECUTEdbms_system.set_sql_trace_in_session(9,29,TRUE)
Notethisisequivalenttoenablingevent10046level1:
Todisabletraceinthesamesessionuse:
EXECUTEdbms_system.set_sql_trace_in_session(9,29,FALSE)
Event10046tracecanalsobeenabledinanothersessionusingtheDBMS_SYSTEMpackage.
TheSIDandtheserialnumberofthetargetsessionmustbeobtainedfromV$SESSION.
Forexampletoenableevent10046level8inasessionwithSID9andserialnumber29use:
EXECUTEdbms_system.set_ev(9,29,10046,8,'')
Todisableevent10046inthesamesessionuse:
EXECUTEdbms_system.set_ev(9,29,10046,0,'')
EnablingTraceinOracle5
Thisisprobablyonlyofhistoricinteresttoday,butSQLtracewasincludedinOracle5.ThankstoMartinBergandMogensNorgaardforthefollowinginformation:
TracecanbeenabledinOracle5usingthecommand:
SELECTTRACE('trace_name',1),1FROMdual
TodisabletraceinOracle5usethecommand:
SELECTTRACE('trace_name',1),0FROMdual
wheretrace_nameisoneofthefollowing:
TraceName Description
SQL Parser
ACCESS Optimizer
KNL KernelAccess
RWST RowSourceStaticDetails
RWSD RowSourceDynamicDetails
SORTSTAT SortStatistics
SORTRUNS DiskSortDetails
CTXSTG ContextArea
ForexampletoenableSQLtraceinOracle5usethecommand:
SELECTTRACE('sql',1),1FROMdual
TodisableSQLtraceinOracle5usethecommand:
SELECTTRACE('sql',1),0FROMdual
EnablingTraceinOracle6
InOracle6,tracecanbeenabledatinstancelevelusingthesql_traceinit.oraparameter.
Tracecanbeenabledatsessionlevelusing:
ALTERSESSIONSETSQL_TRACETRUE
Tracecanbedisabledatsessionlevelusing:
ALTERSESSIONSETSQL_TRACEFALSE
NotethatthesyntaxisdifferentinOracle6fromOracle7
NotealsothatthisinformationhasbeentakenfromtheOracle6manualsandhasnotyetbeenverifiedonanOracle6database