墨墨导读:最近处理了几次undo相关问题,将undo暴增后查询思路整理分享至此。
最近处理了几次undo相关问题,将undo暴增后查询思路整理如下:
查询active状态的使用空间
确认使用的详细情况,比如占用高的sid与sql,以及是否存在死事务
应急处理方法
1. 查询undo active使用状态
select tablespace_name, status, round( sum( bytes ) / 1048576, 2 ) mb,
count(*) extent_count
from dba_undo_extents
group by tablespace_name, status
order by tablespace_name, status;
TABLESPACE_NAME STATUS MB EXTENT_COUNT
-------------------- ------------ ----------- ------------
UNDOTBS1 ACTIVE 17.13 19 --主要关注活动部分
UNDOTBS1 EXPIRED 15.25 64
UNDOTBS1 UNEXPIRED 8.19 11
UNEXPIRED已经释放,在保留期内。无需手动处理,在undo表空间紧张时,undo会自动调整undo保留期的,参考如下:
select to_char(begin_time, 'hh24:mi:ss') BEGIN_TIME,
to_char(end_time, 'hh24:mi:ss') END_TIME,
maxquerylen,
nospaceerrcnt,
tuned_undoretention
from v$undostat;
BEGIN_TI END_TIME MAXQUERYLEN NOSPACEERRCNT TUNED_UNDORETENTION
-------- -------- ----------- ------------- -------------------
17:37:31 17:43:00 1281 0 2062
17:27:31 17:37:31 978 0 1759
17:17:31 17:27:31 372 0 1153
17:07:31 17:17:31 974 0 1755
16:57:31 17:07:31 368 0 1151
16:47:31 16:57:31 968 0 1809
16:37:31 16:47:31 363 0 1205
16:27:31 16:37:31 961 0