===== Performance Tuning =====
==== Get Active Sessions ====
SET LINES 2000 TRIMSPOOL ON PAGES 10000
COLUMN EVENT FORMAT A30
COLUMN secw FORMAT 99999
COLUMN username FORMAT A15
COLUMN sqlid_chno FORMAT A20
ACCEPT usr PROMPT 'Username (blank for all): '
SELECT sw.SID,
s.username,
sw.SEQ#,
sw.EVENT,
sw.WAIT_TIME,
sw.SECONDS_IN_WAIT secw,
SQL_ID||' '||SQL_CHILD_NUMBER sqlid_chno,
sw.STATE,
sw.P1,
sw.P2
FROM v$session_wait sw,
v$session s
WHERE s.sid = sw.sid
AND sw.event != 'SQL*Net message from client'
AND s.username LIKE UPPER('%&&usr%');
==== Get Query ====
set lines 10000 trimspool on pages 0 feed off verify off
set serverout on size 10000
SET LONG 10000
COLUMN sql_fulltext FORMAT A10000
ACCEPT vsql_id PROMPT 'Sql_id: '
ACCEPT vchild_number PROMPT 'child_number (0) : '
SPOOL /home/oracle/getq.txt
select sql_fulltext
FROM gv$sql
WHERE sql_id = '&&vsql_id'
and child_number = NVL('&&vchild_number',0);
DECLARE
l_bv_str VARCHAR2(500) := NULL;
BEGIN
FOR l_bv_rec IN (SELECT bc.name, bc.value_string
FROM gv$SQL_BIND_CAPTURE bc
WHERE bc.sql_id = '&&vsql_id'
AND bc.child_number = NVL('&&vchild_number',0)
ORDER BY bc.name) LOOP
l_bv_str := l_bv_str||' '||l_bv_rec.name||'='||''''||l_bv_rec.value_string||'''';
END LOOP;
DBMS_OUTPUT.PUT_LINE ('Bind values: '||l_bv_str);
END;
/
SPOOL OFF
==== Get Explain Plan ====
SET LINES 2000 TRIMSPOOL ON PAGES 10000
SET SERVEROUT ON SIZE 1000000
UNDEFINE sql_id
UNDEFINE child_id
ACCEPT sql_id PROMPT 'sql_id: '
SET VERIFY OFF FEED OFF
SELECT sql_id,child_number, TO_CHAR(last_active_time,'DDMonYY:HH24:MI:SS') last_active
FROM v$sql
WHERE sql_id = '&&sql_id'
ORDER BY last_active_time;
DEFINE child_id = '&&child_id'
spool /home/oracle/xp_&&sql_id._&&child_id..txt
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&&sql_id',NVL('&&child_id',0)));
DECLARE
l_bv_str VARCHAR2(32767) := NULL;
BEGIN
FOR l_bv_rec IN (SELECT bc.name, bc.value_string
FROM v$SQL_BIND_CAPTURE bc
WHERE bc.sql_id = '&&sql_id'
AND bc.child_number = '&&child_id'
ORDER BY bc.position) LOOP
l_bv_str := l_bv_str||' '||l_bv_rec.name||'='||''''||l_bv_rec.value_string||'''';
END LOOP;
IF l_bv_str IS NULL THEN
l_bv_str := 'n/a';
END IF;
DBMS_OUTPUT.PUT_LINE ('Bind values: '||l_bv_str);
END;
/
COLUMN rp FORMAT a10
COLUMN cpu FORMAT a10
COLUMN ela FORMAT a10
COLUMN la FORMAT a22
COLUMN uo FORMAT a6
COLUMN fetches FORMAT a8
COLUMN ex FORMAT a8
COLUMN eofetches FORMAT a10
COLUMN ue FORMAT a6
COLUMN loads FORMAT a6
SELECT TO_CHAR(s.rows_processed,'999999990') rp,
LTRIM(TO_CHAR(s.cpu_time/1000000,'999990.9')) cpu,
LTRIM(TO_CHAR(s.elapsed_time/1000000,'999999990.9')) ela,
LTRIM(TO_CHAR(s.last_active_time,'DD-MON-YYYY HH24:MI:SS')) la,
TO_CHAR(s.users_opening,'9990') uo,
TO_CHAR(s.fetches,'9999990') fetches,
TO_CHAR(s.executions,'9999990') ex,
TO_CHAR(s.end_of_fetch_count,'9999990') eofetches,
TO_CHAR(s.users_executing,'9990') ue,
TO_CHAR(s.loads,'9990') loads
from v$sql s
where s.sql_id = '&&sql_id'
and s.child_number = '&&child_id';
spool off
SET VERIFY ON FEED ON