Back to Performance Tuning
sql
3 Busiest Objects Since Last Database Restart
3_busiest_objects_since_last_database_restart.sql
Disclaimer:
This script is provided for educational and learning purposes. Review it carefully,
test in a non-production environment, confirm privileges, and validate impact before
using it in production.
SET PAGESIZE 200
SET LINESIZE 250
SET TRIMSPOOL ON
SET TAB OFF
SET VERIFY OFF
SET FEEDBACK ON
COLUMN owner FORMAT A20 HEADING 'OWNER'
COLUMN object_name FORMAT A35 HEADING 'OBJECT_NAME'
COLUMN subobject_name FORMAT A30 HEADING 'SUBOBJECT_NAME'
COLUMN object_type FORMAT A12 HEADING 'OBJECT_TYPE'
COLUMN tablespace_name FORMAT A25 HEADING 'TABLESPACE'
COLUMN reads FORMAT 999,999,999,999 HEADING 'READS'
COLUMN logical_reads FORMAT 999,999,999,999 HEADING 'LOGICAL_READS'
COLUMN physical_reads FORMAT 999,999,999,999 HEADING 'PHYSICAL_READS'
COLUMN segment_scans FORMAT 999,999,999,999 HEADING 'SEGMENT_SCANS'
COLUMN writes FORMAT 999,999,999,999 HEADING 'WRITES'
SELECT
vss.owner,
vss.object_name,
vss.subobject_name,
vss.object_type,
vss.tablespace_name,
SUM(CASE statistic_name WHEN 'logical reads' THEN value ELSE 0 END
+ CASE statistic_name WHEN 'physical reads' THEN value ELSE 0 END) AS reads,
SUM(CASE statistic_name WHEN 'logical reads' THEN value ELSE 0 END) AS logical_reads,
SUM(CASE statistic_name WHEN 'physical reads' THEN value ELSE 0 END) AS physical_reads,
SUM(CASE statistic_name WHEN 'segment scans' THEN value ELSE 0 END) AS segment_scans,
SUM(CASE statistic_name WHEN 'physical writes' THEN value ELSE 0 END) AS writes
FROM
v$segment_statistics vss
WHERE
vss.owner NOT IN ('SYS', 'SYSTEM')
AND vss.object_type IN ('TABLE', 'INDEX')
GROUP BY
vss.owner,
vss.object_name,
vss.object_type,
vss.subobject_name,
vss.tablespace_name
ORDER BY
reads DESC;