I have a production Oracle 11gR2 RAC, vendor suggested the undo tablespace with Auto Extend = NO
My undo setting:
- Code: Select all
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS2
SQL>
I found that:
- Code: Select all
BREAK ON REPORT
COMPUTE SUM OF MB ON REPORT
COMPUTE SUM OF PERC ON REPORT
COMPUTE SUM OF FULL ON REPORT
select status,
round(sum_bytes / (1024*1024), 0) as MB,
round((sum_bytes / undo_size) * 100, 0) as PERC,
decode(status, 'UNEXPIRED', round((sum_bytes / undo_size * factor) * 100, 0),
'EXPIRED', 0,
round((sum_bytes / undo_size) * 100, 0)) FULL
from
(
select status, sum(bytes) sum_bytes
from dba_undo_extents
group by status
),
(
select sum(a.bytes) undo_size
from dba_tablespaces c
join v$tablespace b on b.name = c.tablespace_name
join v$datafile a on a.ts# = b.ts#
where c.contents = 'UNDO'
and c.status = 'ONLINE'
),
(
select tuned_undoretention, u.value, u.value/tuned_undoretention factor
from v$undostat us
join (select max(end_time) end_time from v$undostat) usm
on usm.end_time = us.end_time
join (select name, value from v$parameter) u
on u.name = 'undo_retention'
);
the output always like:
- Code: Select all
STATUS MB PERC FULL
--------- ---------- ---------- ----------
EXPIRED 2 0 0
UNEXPIRED 7826 98 0
ACTIVE 1 0 0
---------- ---------- ----------
sum 7829 98 0
I want to ask is what is the pros and cons of auto-extend=NO ?
The Unexpired part always full or over 90%.
And, from Cloud Control or from above sql, i also find that the undo tablespace is always full.
How can I impove this ?
thanks.