2026-03-12 20:23:15
This commit is contained in:
499
vg/coe_sqlarea_80.sql
Normal file
499
vg/coe_sqlarea_80.sql
Normal file
@@ -0,0 +1,499 @@
|
||||
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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user