-- +----------------------------------------------------------------------------+
-- | Jeffrey M. Hunter |
-- | jhunter@idevelopment.info |
-- | www.idevelopment.info |
-- |----------------------------------------------------------------------------|
-- | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. |
-- |----------------------------------------------------------------------------|
-- | DATABASE : Oracle |
-- | FILE : rollback_segments.sql |
-- | CLASS : Rollback Segments |
-- | PURPOSE : Reports rollback statistic information including name, shrinks, |
-- | wraps, size and optimal size. This script is enabled to work |
-- | with Oracle parallel server. |
-- | NOTE : As with any code, ensure to test this script in a development |
-- | environment before attempting to run it in production. |
-- +----------------------------------------------------------------------------+
SET TERMOUT OFF;
COLUMN current_instance NEW_VALUE current_instance NOPRINT;
SELECT rpad(instance_name, 17) current_instance FROM v$instance;
SET TERMOUT ON;
PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Report : Rollback Segments |
PROMPT | Instance : ¤t_instance |
PROMPT +------------------------------------------------------------------------+
SET ECHO OFF
SET FEEDBACK 6
SET HEADING ON
SET LINESIZE 180
SET PAGESIZE 50000
SET TERMOUT ON
SET TIMING OFF
SET TRIMOUT ON
SET TRIMSPOOL ON
SET VERIFY OFF
CLEAR COLUMNS
CLEAR BREAKS
CLEAR COMPUTES
COLUMN instance_name FORMAT a9 HEADING 'Instance'
COLUMN rollback_name FORMAT a30 HEADING 'Rollback Name'
COLUMN tablespace FORMAT a11 HEADING 'Tablspace'
COLUMN in_extents FORMAT a23 HEADING 'Init / Next Extents'
COLUMN m_extents FORMAT a23 HEADING 'Min / Max Extents'
COLUMN status FORMAT a8 HEADING 'Status'
COLUMN wraps FORMAT 99,999 HEADING 'Wraps'
COLUMN shrinks FORMAT 99,999 HEADING 'Shrinks'
COLUMN opt FORMAT 999,999,999,999 HEADING 'Opt. Size'
COLUMN bytes FORMAT 999,999,999,999 HEADING 'Bytes'
COLUMN extents FORMAT 999 HEADING 'Extents'
BREAK ON instance_name SKIP 2
COMPUTE SUM LABEL 'Total: ' OF bytes ON instance_name
SELECT
i.instance_name instance_name
, a.owner || '.' || a.segment_name rollback_name
, a.tablespace_name tablespace
, TRIM(TO_CHAR(a.initial_extent, '999,999,999,999')) || ' / ' ||
TRIM(TO_CHAR(a.next_extent, '999,999,999,999')) in_extents
, TRIM(TO_CHAR(a.min_extents, '999,999,999,999')) || ' / ' ||
TRIM(TO_CHAR(a.max_extents, '999,999,999,999')) m_extents
, a.status status
, b.bytes bytes
, b.extents extents
, d.shrinks shrinks
, d.wraps wraps
, d.optsize opt
FROM
gv$instance i
, gv$rollstat d
, sys.undo$ c
, dba_rollback_segs a
, dba_segments b
WHERE
i.inst_id = d.inst_id
AND d.usn = c.us#
AND a.segment_name = c.name
AND a.segment_name = b.segment_name
ORDER BY
i.instance_name
, a.segment_name;
-- | Jeffrey M. Hunter |
-- | jhunter@idevelopment.info |
-- | www.idevelopment.info |
-- |----------------------------------------------------------------------------|
-- | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. |
-- |----------------------------------------------------------------------------|
-- | DATABASE : Oracle |
-- | FILE : rollback_segments.sql |
-- | CLASS : Rollback Segments |
-- | PURPOSE : Reports rollback statistic information including name, shrinks, |
-- | wraps, size and optimal size. This script is enabled to work |
-- | with Oracle parallel server. |
-- | NOTE : As with any code, ensure to test this script in a development |
-- | environment before attempting to run it in production. |
-- +----------------------------------------------------------------------------+
SET TERMOUT OFF;
COLUMN current_instance NEW_VALUE current_instance NOPRINT;
SELECT rpad(instance_name, 17) current_instance FROM v$instance;
SET TERMOUT ON;
PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Report : Rollback Segments |
PROMPT | Instance : ¤t_instance |
PROMPT +------------------------------------------------------------------------+
SET ECHO OFF
SET FEEDBACK 6
SET HEADING ON
SET LINESIZE 180
SET PAGESIZE 50000
SET TERMOUT ON
SET TIMING OFF
SET TRIMOUT ON
SET TRIMSPOOL ON
SET VERIFY OFF
CLEAR COLUMNS
CLEAR BREAKS
CLEAR COMPUTES
COLUMN instance_name FORMAT a9 HEADING 'Instance'
COLUMN rollback_name FORMAT a30 HEADING 'Rollback Name'
COLUMN tablespace FORMAT a11 HEADING 'Tablspace'
COLUMN in_extents FORMAT a23 HEADING 'Init / Next Extents'
COLUMN m_extents FORMAT a23 HEADING 'Min / Max Extents'
COLUMN status FORMAT a8 HEADING 'Status'
COLUMN wraps FORMAT 99,999 HEADING 'Wraps'
COLUMN shrinks FORMAT 99,999 HEADING 'Shrinks'
COLUMN opt FORMAT 999,999,999,999 HEADING 'Opt. Size'
COLUMN bytes FORMAT 999,999,999,999 HEADING 'Bytes'
COLUMN extents FORMAT 999 HEADING 'Extents'
BREAK ON instance_name SKIP 2
COMPUTE SUM LABEL 'Total: ' OF bytes ON instance_name
SELECT
i.instance_name instance_name
, a.owner || '.' || a.segment_name rollback_name
, a.tablespace_name tablespace
, TRIM(TO_CHAR(a.initial_extent, '999,999,999,999')) || ' / ' ||
TRIM(TO_CHAR(a.next_extent, '999,999,999,999')) in_extents
, TRIM(TO_CHAR(a.min_extents, '999,999,999,999')) || ' / ' ||
TRIM(TO_CHAR(a.max_extents, '999,999,999,999')) m_extents
, a.status status
, b.bytes bytes
, b.extents extents
, d.shrinks shrinks
, d.wraps wraps
, d.optsize opt
FROM
gv$instance i
, gv$rollstat d
, sys.undo$ c
, dba_rollback_segs a
, dba_segments b
WHERE
i.inst_id = d.inst_id
AND d.usn = c.us#
AND a.segment_name = c.name
AND a.segment_name = b.segment_name
ORDER BY
i.instance_name
, a.segment_name;