Вы находитесь на странице: 1из 4

Welcome Consultancy Presentations Research Tools

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

Вам также может понравиться