进入实例1,注意连的IP,发现大量的UNEXPIRED的UNDO区,
select count(*),status from dba_undo_extents group by status;
select s.BEGIN_TIME,s.END_TIME,s.TUNED_UNDORETENTION from V$UNDOSTAT s
数据文件没有自动扩展
SQL> SELECT autoextensible FROM dba_data_files WHERE tablespace_name='UNDOTBS1';
AUTOEXTENSIBLE
--------------------
NO
SELECT autoextensible FROM dba_data_files WHERE tablespace_name='UNDOTBS1';
SELECT creation_time, metric_value, message_type, reason, suggested_action
FROM dba_outstanding_alerts
WHERE object_name='UNDOTBS1';
SELECT creation_time, metric_value, message_type, reason, suggested_action, resolution
FROM dba_alert_history
WHERE object_name='UNDOTBS1';
SELECT object_type, object_name, warning_value, critical_value
FROM dba_thresholds
WHERE object_type='TABLESPACE';
SELECT ((SELECT (NVL(SUM(bytes),0))
FROM dba_undo_extents
WHERE tablespace_name='UNDOTBS1'
AND status IN ('ACTIVE','UNEXPIRED')) * 100)/
(SELECT SUM(bytes)
FROM dba_data_files
WHERE tablespace_name='UNDOTBS1')
"PCT_INUSE"
FROM dual;
1).将UNDO表空间对应的数据文件调整为自动扩展,并为其设定一个最大值。
SQL> ALTER DATABASE DATAFILE '<datafile_flename>' AUTOEXTEND ON MAXSIZE <current_size>
客户正是通过这种方式解决了问题,调整之后空间很快得到释放,V$UNDOSTAT.TUNED_UNDORETENTION值立即变小,这和文章前面的解释是完全吻合的,当UNDO表空间对应的数据文件是自动扩展的,那么V$UNDOSTAT.TUNED_UNDORETENTION值的计算就不再依赖于UNDO表空间的百分比(UNDO表空间本身较大)。
2).设置_smu_debug_mode隐藏参数。
_smu_debug_mode=33554432
前面我们已经对这个参数进行了解释,这里再次验证。
3).设置_undo_autotune隐藏参数。
_undo_autotune = false
前面的两种方法没有关闭Oracle的UNDO自动调整RETENTION的功能,将_undo_autotune设置为false,就彻底关闭了自动调整UNDO RETENTION的功能,那么UNDO的RETENTION时间完全依赖于初始化参数UNDO_RETENT ION的值,默认值为900秒。
alter system set "_undo_autotune" = false scope=both sid='*';
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30491527/viewspace-1982898/
,如需转载,请注明出处,否则将追究法律责任。