从Oracle 9i版本后,数据库使用了自动undo管理模式。
那设置多大的undo表空间比较合适呢?
metalink 262066.1给出了建议。
简单来说就是SQL语句执行的最长时间*这段时间平均产生的undo大小。
首先找出最大的每秒生产的undo大小:(这里是按最大的来评估,因为平均值看起来太小了)
-
SELECT (SUM(undoblks)/SUM(((end_time - begin_time)*86400))) * 8192 / 1024 /1024 AS UPS_MB
-
FROM dba_hist_undostat t
-
where t.begin_time
-
between to_date('2016-11-10 00:30:00', 'yyyy-mm-dd hh24:mi:ss')
-
and to_date('2016-11-18 18:45:59', 'yyyy-mm-dd hh24:mi:ss')
-
and undoblks in (
-
select max(undoblks) from dba_hist_undostat
-
where begin_time
-
between to_date('2016-11-10 00:30:00', 'yyyy-mm-dd hh24:mi:ss')
-
and to_date('2016-11-18 18:45:59', 'yyyy-mm-dd hh24:mi:ss')
-
)
-
UPS_MB
-
----------
-
10.0615885
按最大的undoblks * undo_retention (评估值14400)
10m*14400 = 144,000m
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25105315/viewspace-2132001/
,如需转载,请注明出处,否则将追究法律责任。