如何设置undo表空间大小
从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