Tracing Oracle Sql
ORADEBUG DOC EVENT NAME SQL_TRACE
ORADEBUG EVENT SQL_TRACE BIND=TRUE,WAIT=TRUE
ORADEBUG EVENT SQL_TRACE PLAN_STAT=ALL_EXECUTIONS
ORADEBUG EVENT SQL_TRACE LEVEL=4
ORADEBUG EVENT SQL_TRACE OFF
prompt &_C_REVERSE *** Enable tracing specified query by sid and sql_id
ORADEBUG SETOSPID &OSPID
oradebug TRACEFILE_NAME;
oradebug EVENT sql_trace [sql: sql_id=&SQLID]
prompt Execute "oradebug EVENT sql_trace off;" later for disabling...
ALTER SYSTEM SET EVENTS sql_trace [sql: sql_id=3s1yukp05bzg6|aca4xvmz0rzup] bind=true, wait=true';
SQL> oradebug setospid <SPID>
SQL> oradebug unlimit
SQL> oradebug tracefile_name
SQL> oradebug event sql_trace [sql: 5qcyrymp65fak] level=12
关闭 event ++:
SQL> oradebug event sql_trace [sql: 5qcyrymp65fak] off
SQL> alter system set events 'sql_trace [sql: 5qcyrymp65fak] level=12';
SQL> alter system set events 'sql_trace [sql: 5qcyrymp65fak] off';
--After gathering the SQL ID use dbms_sqldiag to dump the query trace
exec dbms_sqldiag.dump_trace(p_sql_id => '73xq8qpz6c61g', --ID of the SQL query
p_child_number => 0, --Child Number
p_component => 'Compiler', --Component (OPTIONS: Optimizer (default) or Compiler)
p_file_id=> 'CBO_Trace') --Name of the tracefile identifier
ALTER SESSION SET TRACEFILE_IDENTIFIER = "MY_TEST_SESSION";
SQL> — SQL Trace (10046)
SQL> ALTER SYSTEM SET EVENTS 'sql_trace [sql:&&sql_id] bind=true, wait=true';
SQL> — 10053
SQL> ALTER SESSION SET EVENTS 'trace[rdbms.SQL_Optimizer.*][sql:sql_id]';
-- to disable the events:
alter system set events 'sql_trace off';
alter system set events 'trace[sql_optimizer.*] off'
SQL> ALTER SESSION SET sql_trace=TRUE;
SQL> EXEC DBMS_SESSION.set_sql_trace(sql_trace => TRUE);
SQL> ALTER SESSION SET EVENTS '10046 trace name context forever, level 8';
SQL> EXEC DBMS_SYSTEM.set_sql_trace_in_session(sid=>123, serial#=>1234, sql_trace=>TRUE);
SQL> EXEC DBMS_SYSTEM.set_ev(si=>123, se=>1234, ev=>10046, le=>8, nm=>'');
Comments
Post a Comment