--------------- - Trace 10046 - --------------- -- For current session ---------------------- ALTER SESSION SET tracefile_identifier=Wookie; exec DBMS_SESSION.session_trace_enable(waits => TRUE, binds=> TRUE); exec DBMS_SESSION.session_trace_disable(); -- For another session ---------------------- exec DBMS_MONITOR.session_trace_enable (session_id =>21, serial_num=>1143, waits => TRUE, binds=> TRUE); -- with DBMS_MONITOR we can also trace service_name, module_name or action_name -- Trace with a TRIGGER "AFTER LOGON" --------------------------------------------- create or replace trigger TRACE_LOGIN_TRIGGER after logon on database begin if user = 'APRESS' then begin execute immediate 'alter session set tracefile_identifier=APRESS_LOGON'; dbms_session.session_trace_enable (waits => TRUE, binds => TRUE); end; end if; end; / -- From 11g, we can activate the trace for a specific SQL_ID at session/instance level -- http://oraclue.com/2009/03/24/oracle-event-sql_trace-in-11g/ -- http://tech.e2sn.com/oracle/troubleshooting/oradebug-doc -- example for tracing one SQL_ID at the system level alter system set events 'sql_trace [sql:5vy5qjd3fsn5c] wait=true, bind=true, plan_stat=all_executions, level = 12'; alter system set events 'sql_trace [sql:5vy5qjd3fsn5c] off'; -- classic 1046 at the session level alter session set tracefile_identifier='10046'; alter session set timed_statistics = true; alter session set statistics_level=all; alter session set max_dump_file_size = unlimited; alter session set events 'sql_trace level 12'; -- Execute the queries or operations to be traced here -- alter session set events 'sql_trace off'; -- same as previous but limited to only 2 SQL_ID alter session set tracefile_identifier='10046'; alter session set timed_statistics = true; alter session set statistics_level=all; alter session set max_dump_file_size = unlimited; alter session set events 'sql_trace [sql:g3yc1js3g2689|7ujay4u33g337] level 12'; -- Execute the queries or operations to be traced here -- alter session set events 'sql_trace off'; --------------- - Trace 10035 - --------------- -- For current session alter session set events '10053 trace name context forever, level 1'; -- From 11g, we can dump the trace of a SQL_ID from library cache begin dbms_sqldiag.dump_trace( p_sql_id=>'3wv7pga0wqxkb', p_child_number=>0, p_component=>'Compiler', p_file_id=>'FIND_SPD_ID_TRACE'); end; / -- trace for a specific SQL_ID -- http://laurentleturgez.wordpress.com/2011/11/29/trace-cbo-computation-for-a-specific-sql_id/ alter session set max_dump_file_size = unlimited; ALTER SESSION SET EVENTS 'trace[rdbms.SQL_Optimizer.*][sql:5vy5qjd3fsn5c]'; ALTER SESSION SET EVENTS 'trace[rdbms.SQL_Optimizer.*] off'; -- from an external session oradebug setospid 28027 oradebug unlimit oradebug event trace[RDBMS.SQL_Optimizer.*][sql:5vy5qjd3fsn5c] oradebug tracefile_name