SQL, Get for Running Process
Overview
Get the SQL statement from a running process.
Methods
Oracle Reports
Get Full SQL
SET SERVEROUTPUT ON SIZE UNLIMITED spool H:\app\sql\spool\sql-cmd.txt DECLARE l_full_sql CLOB; BEGIN FOR rec IN ( SELECT sql_text FROM v$sqltext_with_newlines WHERE sql_id = '89qnqv6vna88m' ORDER BY piece ) LOOP l_full_sql := l_full_sql || rec.sql_text; END LOOP; DBMS_OUTPUT.PUT_LINE(l_full_sql); END; / spool off
If SQL Cmd Small
SQL_ID
-- Option 1 SELECT * FROM dba_hist_sqltext s WHERE s.sql_id = 'c53k9q5pxkdam'; -- Option 2 SELECT sql_text FROM v$sql WHERE sql_id = 'c53k9q5pxkdam';
SQL Developer
Via Real Time SQL Monitor.
- From SQL Developer run: Tools 🠊 Real Time SQL Monitor
- Sort as required to see your SQL statement:
Status: if still running.
Duration or Database Time: to see by long running SQL.
Start Time: if you know this can be helpful too.
This will only grab part of the SQL if it is long.
Trace
The instructions show how to enable a trace to extract all the SQL being executed by a particular process or job.
-- Place Tracing Wrapper Around Job alter session set tracefile_identifier='10046traceNow'; alter session set timed_statistics = true; alter session set statistics_level=all; alter session set max_dump_file_size = unlimited; alter session set events '10046 trace name context forever,level 12'; -- execute the query alter session set events '10046 trace name context off'; 10046 tracing for session which has already began. -- To start tracing: exec dbms_system.set_ev(SID, Serial#, 10046, 12, ''); -- To stop tracing: exec dbms_system.set_ev(SID, Serial#, 10046, 0, '');