全部博文(163)
分类: Oracle
2011-07-19 11:22:31
UNDO表空间大小评估参考:
要确定Oracle需要的UNDO 表空间的大小,需要以下三条信息:
A、UR :以秒为单位的UNDO_RETENTION
SQL> show parameter undo_retention;
B、UPS:计算业务高峰期每秒产生undo数据块的个数
SQL> select max(undoblks / ((end_time - begin_time)*24*3600)) from v$undostat;
C、DBS:得到数据块大小
SQL> show parameter db_block_size;
参考计算公式:
UndoSpace = UR * UPS * DBS + DBS * 24
参考计算UNDO表空间大小语句:
SELECT (UR * UPS * DBS + DBS * 24) / 1024 / 1024 AS "undo size(M)"
FROM (SELECT value AS UR FROM v$parameter WHERE name = 'undo_retention'),
(SELECT max(undoblks / ((end_time - begin_time) * 24 * 3600)) AS UPS FROM v$undostat),
(SELECT value AS DBS FROM v$parameter WHERE name = 'db_block_size');
如果现在UNDO表空间的大小小于计算出来的大小,建议将其增大至计算出来的推荐值值以上。
另外一种计算undo所需大小的方法:
--计算undo表空间所需的大小
SQL> SELECT (
(SELECT MAX(undoblks)/600 * MAX(maxquerylen) FROM v$undostat) *
(SELECT value FROM v$parameter WHERE name = 'db_block_size'))/1024/1024 as Need_Size
FROM dual;