-- |----------------------------------------------------------------------------|
-- | DATABASE : Oracle |
-- | FILE : perf_top_10_tables.sql |
-- | CLASS : Tuning |
-- | PURPOSE : Report on top 10 tables with respect to usage and command type. |
-- | NOTE : As with any code, ensure to test this script in a development |
-- | environment before attempting to run it in production. |
-- +----------------------------------------------------------------------------+
SET LINESIZE 145
SET PAGESIZE 9999
SET VERIFY off
COLUMN ctyp FORMAT a13 HEADING 'Command Type'
COLUMN obj FORMAT a30 HEADING 'Object Name'
COLUMN noe FORMAT 999,999,999,999,999 HEADING 'Number of Executions'
COLUMN gets FORMAT 999,999,999,999,999 HEADING 'Buffer Gets'
COLUMN rowp FORMAT 999,999,999,999,999 HEADING 'Rows Processed'
BREAK ON report
COMPUTE sum OF noe ON report
COMPUTE sum OF gets ON report
COMPUTE sum OF rowp ON report
SELECT
ctyp
, obj
, 0 - exem noe
, gets
, rowp
FROM (
select distinct exem, ctyp, obj, gets, rowp
from (select
DECODE( s.command_type
, 2, 'Insert into '
, 3, 'Select from '
, 6, 'Update of '
, 7, 'Delete from '
, 26, 'Lock of ') ctyp
, o.owner || '.' || o.name obj
, SUM(0 - s.executions) exem
, SUM(s.buffer_gets) gets
, SUM(s.rows_processed) rowp
from
v$sql s
, v$object_dependency d
, v$db_object_cache o
where
s.command_type IN (2,3,6,7,26)
and d.from_address = s.address
and d.to_owner = o.owner
and d.to_name = o.name
and o.type = 'TABLE'
group by
s.command_type
, o.owner
, o.name
)
)
WHERE rownum <= 10;
No comments:
Post a Comment