500 lines
17 KiB
SQL
500 lines
17 KiB
SQL
set echo off
|
|
SET term off ver off feed off trims on;
|
|
-- Seeded Parameters
|
|
define p_top = 10;
|
|
define p_factor_th = 0.0040;
|
|
|
|
variable v_count number;
|
|
variable v_buffer_gets number;
|
|
variable v_disk_reads number;
|
|
variable v_executions number;
|
|
variable v_bg_per_exec number;
|
|
variable v_dr_per_exec number;
|
|
variable v_istartup varchar2(15);
|
|
|
|
SET term on ver off feed off trims on;
|
|
PROMPT Calculating SQL Area totals per category...
|
|
SET term off;
|
|
BEGIN
|
|
SELECT COUNT(*),
|
|
TRUNC(SUM(ABS(BUFFER_GETS))),
|
|
TRUNC(SUM(ABS(DISK_READS))),
|
|
TRUNC(SUM(ABS(EXECUTIONS))),
|
|
TRUNC(SUM(ABS(BUFFER_GETS)/
|
|
DECODE(NVL(ABS(EXECUTIONS),0),0,1,ABS(EXECUTIONS)))),
|
|
TRUNC(SUM(ABS(DISK_READS)/
|
|
DECODE(NVL(ABS(EXECUTIONS),0),0,1,ABS(EXECUTIONS))))
|
|
INTO :v_count,
|
|
:v_buffer_gets,
|
|
:v_disk_reads,
|
|
:v_executions,
|
|
:v_bg_per_exec,
|
|
:v_dr_per_exec
|
|
FROM V$SQLAREA;
|
|
SELECT TO_CHAR(STARTUP_TIME,'DD-MON-YY HH24:MI')
|
|
INTO :v_istartup
|
|
FROM V$INSTANCE
|
|
WHERE ROWNUM = 1;
|
|
END;
|
|
/
|
|
|
|
SET term on;
|
|
PROMPT Creating COE_SQLAREA temp table...
|
|
SET term off;
|
|
DROP TABLE COE_SQLAREA;
|
|
CREATE TABLE COE_SQLAREA
|
|
(ROW_NUM NUMBER,HASH_VALUE NUMBER,ADDRESS RAW(4),BUFFER_GETS NUMBER,
|
|
DISK_READS NUMBER,EXECUTIONS NUMBER,BG_PER_EXEC NUMBER,DR_PER_EXEC NUMBER,
|
|
PARSING_USER_ID NUMBER,MODULE VARCHAR2(64),ACTION VARCHAR2(64),
|
|
SQL_TEXT VARCHAR2(64),P_BUFFER_GETS NUMBER,P_DISK_READS NUMBER,
|
|
P_EXECUTIONS NUMBER,P_BG_PER_EXEC NUMBER,P_DR_PER_EXEC NUMBER,
|
|
USERNAME VARCHAR2(30),T_BUFFER_GETS NUMBER,T_DISK_READS NUMBER,
|
|
T_EXECUTIONS NUMBER,T_BG_PER_EXEC NUMBER,T_DR_PER_EXEC NUMBER) NOLOGGING;
|
|
|
|
INSERT INTO COE_SQLAREA
|
|
SELECT ROWNUM,
|
|
HASH_VALUE,
|
|
ADDRESS,
|
|
ABS(BUFFER_GETS),
|
|
ABS(DISK_READS),
|
|
ABS(EXECUTIONS),
|
|
ROUND(ABS(BUFFER_GETS)/
|
|
DECODE(NVL(ABS(EXECUTIONS),0),0,1,ABS(EXECUTIONS))),
|
|
ROUND(ABS(DISK_READS)/
|
|
DECODE(NVL(ABS(EXECUTIONS),0),0,1,ABS(EXECUTIONS))),
|
|
PARSING_USER_ID,
|
|
MODULE,
|
|
ACTION,
|
|
SUBSTR(SQL_TEXT,1,64),
|
|
ROUND(ABS(BUFFER_GETS)*100/:v_buffer_gets,3),
|
|
ROUND(ABS(DISK_READS)*100/:v_disk_reads,3),
|
|
ROUND(ABS(EXECUTIONS)*100/:v_executions,3),
|
|
ROUND((ABS(BUFFER_GETS)/
|
|
DECODE(NVL(ABS(EXECUTIONS),0),0,1,ABS(EXECUTIONS)))*100/
|
|
:v_bg_per_exec,3),
|
|
ROUND((ABS(DISK_READS)/
|
|
DECODE(NVL(ABS(EXECUTIONS),0),0,1,ABS(EXECUTIONS)))*100/
|
|
:v_dr_per_exec,3),
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL
|
|
FROM V$SQLAREA
|
|
WHERE
|
|
-- PARSING_USER_ID <> 0 AND
|
|
(ABS(BUFFER_GETS)
|
|
> TO_NUMBER('&&p_factor_th')*:v_buffer_gets
|
|
OR ABS(DISK_READS)
|
|
> TO_NUMBER('&&p_factor_th')*:v_disk_reads
|
|
OR ABS(EXECUTIONS)
|
|
> TO_NUMBER('&&p_factor_th')*:v_executions
|
|
OR ABS(BUFFER_GETS)/DECODE(NVL(ABS(EXECUTIONS),0),0,1,ABS(EXECUTIONS))
|
|
> TO_NUMBER('&&p_factor_th')*:v_bg_per_exec
|
|
OR ABS(DISK_READS)/DECODE(NVL(ABS(EXECUTIONS),0),0,1,ABS(EXECUTIONS))
|
|
> TO_NUMBER('&&p_factor_th')*:v_dr_per_exec);
|
|
|
|
UPDATE COE_SQLAREA CS
|
|
SET USERNAME = (SELECT USERNAME
|
|
FROM ALL_USERS
|
|
WHERE USER_ID=CS.PARSING_USER_ID);
|
|
|
|
SET term on;
|
|
PROMPT Calculating Top &&p_top SQL per category...
|
|
SET term off;
|
|
DECLARE
|
|
c_top NUMBER;
|
|
c_rownum NUMBER;
|
|
cursor C1 is
|
|
SELECT ROW_NUM
|
|
FROM COE_SQLAREA
|
|
ORDER BY BUFFER_GETS DESC;
|
|
cursor C2 is
|
|
SELECT ROW_NUM
|
|
FROM COE_SQLAREA
|
|
ORDER BY DISK_READS DESC;
|
|
cursor C3 is
|
|
SELECT ROW_NUM
|
|
FROM COE_SQLAREA
|
|
ORDER BY EXECUTIONS DESC;
|
|
cursor C4 is
|
|
SELECT ROW_NUM
|
|
FROM COE_SQLAREA
|
|
ORDER BY BG_PER_EXEC DESC;
|
|
cursor C5 is
|
|
SELECT ROW_NUM
|
|
FROM COE_SQLAREA
|
|
ORDER BY DR_PER_EXEC DESC;
|
|
BEGIN
|
|
c_top := 1;
|
|
OPEN C1;
|
|
LOOP
|
|
FETCH C1 into c_rownum;
|
|
EXIT when C1%NOTFOUND;
|
|
EXIT when c_top = TO_NUMBER('&&p_top')+1;
|
|
UPDATE COE_SQLAREA
|
|
SET T_BUFFER_GETS = c_top
|
|
WHERE ROW_NUM = c_rownum
|
|
AND BUFFER_GETS > TO_NUMBER('&&p_factor_th')*:v_buffer_gets;
|
|
c_top := c_top+1;
|
|
END LOOP;
|
|
c_top := 1;
|
|
OPEN C2;
|
|
LOOP
|
|
FETCH C2 into c_rownum;
|
|
EXIT when C2%NOTFOUND;
|
|
EXIT when c_top = TO_NUMBER('&&p_top')+1;
|
|
UPDATE COE_SQLAREA
|
|
SET T_DISK_READS = c_top
|
|
WHERE ROW_NUM = c_rownum
|
|
AND DISK_READS > TO_NUMBER('&&p_factor_th')*:v_disk_reads;
|
|
c_top := c_top+1;
|
|
END LOOP;
|
|
c_top := 1;
|
|
OPEN C3;
|
|
LOOP
|
|
FETCH C3 into c_rownum;
|
|
EXIT when C3%NOTFOUND;
|
|
EXIT when c_top = TO_NUMBER('&&p_top')+1;
|
|
UPDATE COE_SQLAREA
|
|
SET T_EXECUTIONS = c_top
|
|
WHERE ROW_NUM = c_rownum
|
|
AND EXECUTIONS > TO_NUMBER('&&p_factor_th')*:v_executions;
|
|
c_top := c_top+1;
|
|
END LOOP;
|
|
c_top := 1;
|
|
OPEN C4;
|
|
LOOP
|
|
FETCH C4 into c_rownum;
|
|
EXIT when C4%NOTFOUND;
|
|
EXIT when c_top = TO_NUMBER('&&p_top')+1;
|
|
UPDATE COE_SQLAREA
|
|
SET T_BG_PER_EXEC = c_top
|
|
WHERE ROW_NUM = c_rownum
|
|
AND BUFFER_GETS/DECODE(NVL(EXECUTIONS,0),0,1,EXECUTIONS)
|
|
> TO_NUMBER('&&p_factor_th')*:v_bg_per_exec;
|
|
c_top := c_top+1;
|
|
END LOOP;
|
|
c_top := 1;
|
|
OPEN C5;
|
|
LOOP
|
|
FETCH C5 into c_rownum;
|
|
EXIT when C5%NOTFOUND;
|
|
EXIT when c_top = TO_NUMBER('&&p_top')+1;
|
|
UPDATE COE_SQLAREA
|
|
SET T_DR_PER_EXEC = c_top
|
|
WHERE ROW_NUM = c_rownum
|
|
AND DISK_READS/DECODE(NVL(EXECUTIONS,0),0,1,EXECUTIONS)
|
|
> TO_NUMBER('&&p_factor_th')*:v_dr_per_exec;
|
|
c_top := c_top+1;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
UPDATE COE_SQLAREA CS
|
|
SET CS.ROW_NUM = ROWNUM
|
|
WHERE ( CS.T_BUFFER_GETS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_DISK_READS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_EXECUTIONS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_BG_PER_EXEC < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_DR_PER_EXEC < TO_NUMBER('&&p_top')+1 );
|
|
|
|
COLUMN NAMESPACE FORMAT A15 HEADING 'Component';
|
|
COLUMN GETS FORMAT 999,999,999,999 HEADING 'Get Requests';
|
|
COLUMN GETHITRATIO FORMAT 999.9 HEADING 'Get|Hit|Ratio|Pct';
|
|
COLUMN PINS FORMAT 999,999,999,999 HEADING 'Pin Requests';
|
|
COLUMN PINHITRATIO FORMAT 999.9 HEADING 'Pin|Hit|Ratio|Pct';
|
|
COLUMN RELOADS FORMAT 999,999,999,999 HEADING 'Reloads'
|
|
COLUMN PINRELOADRATIO FORMAT 999.9 HEADING 'Pin|Reload|Ratio|Pct';
|
|
COLUMN INVALIDATIONS FORMAT 999,999,999,999 HEADING 'Invalidations';
|
|
COLUMN POOL_NAME FORMAT A20 HEADING 'SGA Structure';
|
|
COLUMN POOL_BYTES FORMAT 99,999,999,999 HEADING 'Size in Bytes';
|
|
COLUMN POOL_MBYTES FORMAT 99,999.9 HEADING 'Size in MB';
|
|
COLUMN SQL_COUNT FORMAT 999,999,999 HEADING 'SQL Count';
|
|
COLUMN S_BUFFER_GETS FORMAT 999,999,999,999 -
|
|
HEADING '(A)|SQL Area Sum of|Logical Reads|(Buffer Gets)';
|
|
COLUMN S_DISK_READS FORMAT 999,999,999,999 -
|
|
HEADING '(B)|SQL Area Sum of|Physical Reads|(Disk Reads)';
|
|
COLUMN S_EXECUTIONS FORMAT 999,999,999,999 -
|
|
HEADING '(C)|SQL Area Sum of|Number of|Executions';
|
|
COLUMN S_BG_PER_EXEC FORMAT 999,999,999,999 -
|
|
HEADING '(D)|SQL Area Sum of|Logical Reads|per Execution';
|
|
COLUMN S_DR_PER_EXEC FORMAT 999,999,999,999 -
|
|
HEADING '(E)|SQL Area Sum of|Physical Reads|per Execution';
|
|
COLUMN DATE_TIME FORMAT A15 HEADING 'Execution|Date and Time';
|
|
COLUMN ISTARTUP FORMAT A15 HEADING 'Instance|Startup';
|
|
COLUMN T_BUFFER_GETS FORMAT 9999 HEADING 'Top|LR';
|
|
COLUMN T_DISK_READS FORMAT 9999 HEADING 'Top|PR';
|
|
COLUMN T_EXECUTIONS FORMAT 9999 HEADING 'Top|Exec';
|
|
COLUMN T_BG_PER_EXEC FORMAT 9999 HEADING 'Top|LR|per|Exec';
|
|
COLUMN T_DR_PER_EXEC FORMAT 9999 HEADING 'Top|PR|per|Exec';
|
|
COLUMN BUFFER_GETS FORMAT 99,999,999,999 -
|
|
HEADING '(F)|Logical Reads|(Buffer Gets)';
|
|
COLUMN DISK_READS FORMAT 99,999,999,999 -
|
|
HEADING '(G)|Physical Reads|(Disk Reads)';
|
|
COLUMN EXECUTIONS FORMAT 99,999,999,999 -
|
|
HEADING '(H)|Number of|Executions';
|
|
COLUMN BG_PER_EXEC FORMAT 99,999,999,999 -
|
|
HEADING '(I)|Logical Reads|per Execution';
|
|
COLUMN DR_PER_EXEC FORMAT 99,999,999,999 -
|
|
HEADING '(J)|Physical Reads|per Execution';
|
|
COLUMN P_BUFFER_GETS FORMAT 999.999 -
|
|
HEADING 'LR(*)|percent|(F/A)';
|
|
COLUMN P_DISK_READS FORMAT 999.999 -
|
|
HEADING 'PR(*)|percent|(G/B)';
|
|
COLUMN P_EXECUTIONS FORMAT 999.999 -
|
|
HEADING 'Exec(*)|percent|(H/C)';
|
|
COLUMN P_BG_PER_EXEC FORMAT 999.999 -
|
|
HEADING 'LR(*)|per Exe|percent|(I/D)';
|
|
COLUMN P_DR_PER_EXEC FORMAT 999.999 -
|
|
HEADING 'PR(*)|per Exe|percent|(J/E)';
|
|
COLUMN ROW_NUM FORMAT 999999 HEADING 'SQL ID';
|
|
COLUMN USERNAME FORMAT A10 HEADING 'User';
|
|
COLUMN MODULE_ACTION FORMAT A40 HEADING 'Source (Module and Action)';
|
|
COLUMN SQL_TEXT_L1 FORMAT A64 HEADING 'SQL Text (first 64 bytes)';
|
|
COLUMN SQL_TEXT FORMAT A64 HEADING 'SQL Text';
|
|
COLUMN HASH_VALUE FORMAT 999999999999999 HEADING 'Hash Value';
|
|
COLUMN PIECE NOPRINT;
|
|
COLUMN DUMMY NOPRINT;
|
|
|
|
SET term on;
|
|
PROMPT Generating SPOOL file...
|
|
PROMPT
|
|
PROMPT
|
|
SET term off;
|
|
|
|
SET term on pages 10000 lines 156;
|
|
SPOOL coe_sqlarea_80.txt;
|
|
|
|
PROMPT Library Cache statistics for SQL and PL/SQL
|
|
PROMPT ===========================================
|
|
|
|
SELECT NAMESPACE,
|
|
GETS,
|
|
ROUND(GETHITRATIO*100,1) GETHITRATIO,
|
|
PINS,
|
|
ROUND(PINHITRATIO*100,1) PINHITRATIO,
|
|
RELOADS,
|
|
ROUND((PINS-RELOADS)*100/DECODE(NVL(PINS,0),0,1,PINS),1) PINRELOADRATIO,
|
|
INVALIDATIONS
|
|
FROM V$LIBRARYCACHE
|
|
WHERE NAMESPACE IN ('SQL AREA',
|
|
'TABLE/PROCEDURE',
|
|
'BODY',
|
|
'TRIGGER');
|
|
PROMPT
|
|
PROMPT
|
|
PROMPT Related Shared Pool SGA Structures
|
|
PROMPT ==================================
|
|
|
|
SELECT NAME POOL_NAME,
|
|
BYTES POOL_BYTES,
|
|
ROUND(BYTES/1048576,1) POOL_MBYTES
|
|
FROM V$SGASTAT
|
|
WHERE POOL = 'shared pool'
|
|
AND NAME IN ('free memory',
|
|
'sessions',
|
|
'dictionary cache',
|
|
'library cache',
|
|
'sql area')
|
|
UNION ALL
|
|
SELECT 'Shared Pool Reserved',
|
|
TO_NUMBER(VALUE),
|
|
ROUND(TO_NUMBER(VALUE)/1048576,1)
|
|
FROM V$PARAMETER
|
|
WHERE NAME = 'shared_pool_reserved_size'
|
|
UNION ALL
|
|
SELECT 'Total Shared Pool',
|
|
TO_NUMBER(VALUE),
|
|
ROUND(TO_NUMBER(VALUE)/1048576,1)
|
|
FROM V$PARAMETER
|
|
WHERE NAME = 'shared_pool_size';
|
|
|
|
PROMPT
|
|
PROMPT
|
|
PROMPT SQL Area grand totals per category
|
|
PROMPT ==================================
|
|
|
|
SELECT :v_count SQL_COUNT,
|
|
:v_buffer_gets S_BUFFER_GETS,
|
|
:v_disk_reads S_DISK_READS,
|
|
:v_executions S_EXECUTIONS,
|
|
:v_bg_per_exec S_BG_PER_EXEC,
|
|
:v_dr_per_exec S_DR_PER_EXEC,
|
|
TO_CHAR(SYSDATE,'DD-MON-YY HH24:MI') DATE_TIME,
|
|
:v_istartup ISTARTUP
|
|
FROM DUAL;
|
|
|
|
PROMPT
|
|
PROMPT
|
|
PROMPT Top &&p_top most expensive SQL Statements per category
|
|
PROMPT =================================================
|
|
|
|
BREAK ON DUMMY;
|
|
COMPUTE SUM OF BUFFER_GETS P_BUFFER_GETS ON DUMMY;
|
|
SELECT NULL DUMMY,
|
|
T_BUFFER_GETS,
|
|
ROW_NUM,
|
|
BUFFER_GETS,
|
|
P_BUFFER_GETS,
|
|
SUBSTR(USERNAME,1,10) USERNAME,
|
|
SUBSTR(MODULE||' '||ACTION,1,40) MODULE_ACTION,
|
|
SQL_TEXT SQL_TEXT_L1
|
|
FROM COE_SQLAREA
|
|
WHERE T_BUFFER_GETS < TO_NUMBER('&&p_top')+1
|
|
ORDER BY T_BUFFER_GETS;
|
|
|
|
COMPUTE SUM OF DISK_READS P_DISK_READS ON DUMMY;
|
|
SELECT NULL DUMMY,
|
|
T_DISK_READS,
|
|
ROW_NUM,
|
|
DISK_READS,
|
|
P_DISK_READS,
|
|
SUBSTR(USERNAME,1,10) USERNAME,
|
|
SUBSTR(MODULE||' '||ACTION,1,40) MODULE_ACTION,
|
|
SQL_TEXT SQL_TEXT_L1
|
|
FROM COE_SQLAREA
|
|
WHERE T_DISK_READS < TO_NUMBER('&&p_top')+1
|
|
ORDER BY T_DISK_READS;
|
|
|
|
COMPUTE SUM OF EXECUTIONS P_EXECUTIONS ON DUMMY;
|
|
SELECT NULL DUMMY,
|
|
T_EXECUTIONS,
|
|
ROW_NUM,
|
|
EXECUTIONS,
|
|
P_EXECUTIONS,
|
|
SUBSTR(USERNAME,1,10) USERNAME,
|
|
SUBSTR(MODULE||' '||ACTION,1,40) MODULE_ACTION,
|
|
SQL_TEXT SQL_TEXT_L1
|
|
FROM COE_SQLAREA
|
|
WHERE T_EXECUTIONS < TO_NUMBER('&&p_top')+1
|
|
ORDER BY T_EXECUTIONS;
|
|
|
|
COMPUTE SUM OF BG_PER_EXEC P_BG_PER_EXEC ON DUMMY;
|
|
SELECT NULL DUMMY,
|
|
T_BG_PER_EXEC,
|
|
ROW_NUM,
|
|
BG_PER_EXEC,
|
|
P_BG_PER_EXEC,
|
|
SUBSTR(USERNAME,1,10) USERNAME,
|
|
SUBSTR(MODULE||' '||ACTION,1,40) MODULE_ACTION,
|
|
SQL_TEXT SQL_TEXT_L1
|
|
FROM COE_SQLAREA
|
|
WHERE T_BG_PER_EXEC < TO_NUMBER('&&p_top')+1
|
|
ORDER BY T_BG_PER_EXEC;
|
|
|
|
COMPUTE SUM OF DR_PER_EXEC P_DR_PER_EXEC ON DUMMY;
|
|
SELECT NULL DUMMY,
|
|
T_DR_PER_EXEC,
|
|
ROW_NUM,
|
|
DR_PER_EXEC,
|
|
P_DR_PER_EXEC,
|
|
SUBSTR(USERNAME,1,10) USERNAME,
|
|
SUBSTR(MODULE||' '||ACTION,1,40) MODULE_ACTION,
|
|
SQL_TEXT SQL_TEXT_L1
|
|
FROM COE_SQLAREA
|
|
WHERE T_DR_PER_EXEC < TO_NUMBER('&&p_top')+1
|
|
ORDER BY T_DR_PER_EXEC;
|
|
|
|
PROMPT
|
|
PROMPT Note(*): Percentage of grand total for SQL Area, per resource category
|
|
PROMPT
|
|
|
|
PROMPT
|
|
PROMPT Summary of SQL Statements on the 5 Top &&p_top lists
|
|
PROMPT ===============================================
|
|
|
|
BREAK ON DUMMY;
|
|
COMPUTE SUM OF BUFFER_GETS P_BUFFER_GETS DISK_READS P_DISK_READS -
|
|
EXECUTIONS P_EXECUTIONS BG_PER_EXEC P_BG_PER_EXEC -
|
|
DR_PER_EXEC P_DR_PER_EXEC ON DUMMY;
|
|
SELECT NULL DUMMY,
|
|
CS.ROW_NUM,
|
|
CS.BUFFER_GETS,
|
|
CS.P_BUFFER_GETS,
|
|
CS.DISK_READS,
|
|
CS.P_DISK_READS,
|
|
CS.EXECUTIONS,
|
|
CS.P_EXECUTIONS,
|
|
CS.BG_PER_EXEC,
|
|
CS.P_BG_PER_EXEC,
|
|
CS.DR_PER_EXEC,
|
|
CS.P_DR_PER_EXEC
|
|
FROM COE_SQLAREA CS
|
|
WHERE ( CS.T_BUFFER_GETS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_DISK_READS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_EXECUTIONS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_BG_PER_EXEC < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_DR_PER_EXEC < TO_NUMBER('&&p_top')+1 )
|
|
ORDER BY CS.ROW_NUM;
|
|
|
|
PROMPT
|
|
PROMPT Note(*): Percentage of grand total for SQL Area, per resource category
|
|
PROMPT
|
|
|
|
SELECT CS.ROW_NUM,
|
|
CS.T_BUFFER_GETS,
|
|
CS.T_DISK_READS,
|
|
CS.T_EXECUTIONS,
|
|
CS.T_BG_PER_EXEC,
|
|
CS.T_DR_PER_EXEC,
|
|
CS.HASH_VALUE,
|
|
SUBSTR(CS.USERNAME,1,10) USERNAME,
|
|
SUBSTR(CS.MODULE||' '||CS.ACTION,1,40) MODULE_ACTION
|
|
FROM COE_SQLAREA CS
|
|
WHERE ( CS.T_BUFFER_GETS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_DISK_READS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_EXECUTIONS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_BG_PER_EXEC < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_DR_PER_EXEC < TO_NUMBER('&&p_top')+1 )
|
|
ORDER BY CS.ROW_NUM;
|
|
|
|
PROMPT
|
|
PROMPT
|
|
PROMPT Full text of identified expensive SQL Statements ordered by SQL ID
|
|
PROMPT ==================================================================
|
|
|
|
BREAK ON ROW_NUM SKIP 1 ON T_BUFFER_GETS ON T_DISK_READS -
|
|
ON T_EXECUTIONS ON T_BG_PER_EXEC ON T_DR_PER_EXEC -
|
|
ON USERNAME ON MODULE_ACTION;
|
|
SELECT CS.ROW_NUM,
|
|
ST.PIECE,
|
|
ST.SQL_TEXT,
|
|
CS.T_BUFFER_GETS,
|
|
CS.T_DISK_READS,
|
|
CS.T_EXECUTIONS,
|
|
CS.T_BG_PER_EXEC,
|
|
CS.T_DR_PER_EXEC,
|
|
SUBSTR(CS.USERNAME,1,10) USERNAME,
|
|
SUBSTR(CS.MODULE||' '||CS.ACTION,1,40) MODULE_ACTION
|
|
FROM COE_SQLAREA CS,
|
|
V$SQLTEXT ST
|
|
WHERE
|
|
CS.HASH_VALUE = ST.HASH_VALUE
|
|
AND CS.ADDRESS = ST.ADDRESS
|
|
AND ( CS.T_BUFFER_GETS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_DISK_READS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_EXECUTIONS < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_BG_PER_EXEC < TO_NUMBER('&&p_top')+1 OR
|
|
CS.T_DR_PER_EXEC < TO_NUMBER('&&p_top')+1 )
|
|
ORDER BY CS.ROW_NUM, ST.PIECE;
|
|
|
|
PROMPT coe_sqlarea_80.txt has been generated.
|
|
PROMPT
|
|
PROMPT Recover the coe_sqlarea_80.txt spool file, compress into file
|
|
PROMPT coesqlarea.zip and send/upload the resulting coesqlarea.zip file for
|
|
PROMPT further analysis.
|
|
PROMPT
|
|
PROMPT If you wish to print the spool file nicely, open it in Wordpad or Word.
|
|
PROMPT Use File -> Page Setup (menu option) to change Orientation to Landscape.
|
|
PROMPT Using same menu option make all 4 Margins 0.2". Exit this menu option.
|
|
PROMPT Do a 'Select All' (Ctrl+A) and change Font to 'Courier New' Size 8.
|
|
PROMPT
|
|
SPOOL off;
|
|
UNDEFINE p_top,p_factor_th;
|
|
SET ver on feed on trims off long 80 pages 24 lin 80 feed on;
|
|
SET sqlp SQL> sqln on;
|
|
|
|
|