Script To check what UNDO space is available
Script To check what UNDO space is available
===================================
select /*+ rule */ segs.tablespace_name, segs.segment_type, df.bytes/1024/1024 ts_mb , nvl(usegs.bytes,0)/1024/1024 active_unexp_mb,
nvl(fs.bytes,0)/1024/1024 free_mb,
round(decode(segment_type,'ROLLBACK',nvl(fs.bytes,0)/df.bytes*100,
'TYPE2 UNDO',round((df.bytes-nvl(usegs.bytes,0))/df.bytes*100))) usable_pct,
round(nvl(fs.bytes,0)/df.bytes*100) ts_free_pct
from (select /*+ rule */ distinct tablespace_name, segment_type from dba_segments
where segment_type in ('ROLLBACK','TYPE2 UNDO')) segs,
(select /*+ rule */ tablespace_name, sum(bytes) bytes from dba_data_files
where tablespace_name in (select /*+ rule */ distinct tablespace_name from dba_segments
where segment_type in ('ROLLBACK','TYPE2 UNDO')) group by tablespace_name) df,
(select /*+ rule */ tablespace_name, sum(bytes) bytes from dba_undo_extents
where status in ('ACTIVE','UNEXPIRED')
group by tablespace_name) usegs,
(select /*+ rule */ tablespace_name, sum(bytes) bytes from dba_free_space
where tablespace_name in (select /*+ rule */ distinct tablespace_name from dba_segments
where segment_type in ('ROLLBACK','TYPE2 UNDO')) group by tablespace_name) fs
where segs.tablespace_name = df.tablespace_name
and usegs.tablespace_name (+) = segs.tablespace_name
and fs.tablespace_name (+) = segs.tablespace_name
and segs.tablespace_name != 'SYSTEM';
===================================
select /*+ rule */ segs.tablespace_name, segs.segment_type, df.bytes/1024/1024 ts_mb , nvl(usegs.bytes,0)/1024/1024 active_unexp_mb,
nvl(fs.bytes,0)/1024/1024 free_mb,
round(decode(segment_type,'ROLLBACK',nvl(fs.bytes,0)/df.bytes*100,
'TYPE2 UNDO',round((df.bytes-nvl(usegs.bytes,0))/df.bytes*100))) usable_pct,
round(nvl(fs.bytes,0)/df.bytes*100) ts_free_pct
from (select /*+ rule */ distinct tablespace_name, segment_type from dba_segments
where segment_type in ('ROLLBACK','TYPE2 UNDO')) segs,
(select /*+ rule */ tablespace_name, sum(bytes) bytes from dba_data_files
where tablespace_name in (select /*+ rule */ distinct tablespace_name from dba_segments
where segment_type in ('ROLLBACK','TYPE2 UNDO')) group by tablespace_name) df,
(select /*+ rule */ tablespace_name, sum(bytes) bytes from dba_undo_extents
where status in ('ACTIVE','UNEXPIRED')
group by tablespace_name) usegs,
(select /*+ rule */ tablespace_name, sum(bytes) bytes from dba_free_space
where tablespace_name in (select /*+ rule */ distinct tablespace_name from dba_segments
where segment_type in ('ROLLBACK','TYPE2 UNDO')) group by tablespace_name) fs
where segs.tablespace_name = df.tablespace_name
and usegs.tablespace_name (+) = segs.tablespace_name
and fs.tablespace_name (+) = segs.tablespace_name
and segs.tablespace_name != 'SYSTEM';
Comments
Post a Comment