REM
REM DBAToolZ NOTE:
REM This script was obtained from DBAToolZ.com
REM It's configured to work with SQL Directory (SQLDIR).
REM SQLDIR is a utility that allows easy organization and
REM execution of SQL*Plus scripts using user-friendly menu.
REM Visit DBAToolZ.com for more details and free SQL scripts.
REM
REM
REM File:
REM s_sga_high_sql2.sql
REM
REM SGA STATS
REM
REM Author:
REM Vitaliy Mogilevskiy
REM VMOGILEV
REM (vit100gain@earthlink.net)
REM
REM Purpose:
REM
REM (uses PL/SQL block)
REM Reports expensive SQL from V$SQLAREA, V$SQLTEXT view
REM Joins to V$SQLTEXT using ADDRESS column
REM Prompts for number of DISK_READS and
REM PARSING_USER
REM
REM
REM Usage:
REM s_sga_high_sql2.sql
REM
REM Example:
REM s_sga_high_sql2.sql
REM
REM
REM History:
REM 08-01-1998 VMOGILEV Created
REM
REM
set serveroutput ON size 1000000
DECLARE
CURSOR sqlarea_cur IS
SELECT
address
, username parsing_user
, executions
, loads
, DISK_READS
, BUFFER_GETS
, ROWS_PROCESSED
from v$sqlarea a
, dba_users b
where a.PARSING_USER_ID = b.user_id
and DISK_READS > &number_of_expensive_DISK_READS
and b.username = upper('&parsing_username')
order by DISK_READS desc
, ROWS_PROCESSED desc
, BUFFER_GETS desc
, username;
CURSOR sqltext_cur(p_address IN RAW) IS
SELECT sql_text
FROM v$sqltext
WHERE address = p_address
ORDER BY piece;
BEGIN
FOR sqlarea IN sqlarea_cur
LOOP
dbms_output.put_line('==>> <<==');
dbms_output.put_line('==================================================');
dbms_output.put_line('Parsing User ......... :' ||sqlarea.parsing_user );
dbms_output.put_line('Number Of Loads ...... :' ||sqlarea.executions );
dbms_output.put_line('Number Of Executions . :' ||sqlarea.loads );
dbms_output.put_line('DISK_READS ........... :' ||sqlarea.DISK_READS );
dbms_output.put_line('BUFFER GETS .......... :' ||sqlarea.BUFFER_GETS );
dbms_output.put_line('ROWS_PROCESSED ....... :' ||sqlarea.ROWS_PROCESSED );
dbms_output.put_line('==================================================');
FOR sqltext IN sqltext_cur(sqlarea.address)
LOOP
dbms_output.put_line(sqltext.sql_text);
END LOOP;
END LOOP;
END;
/