- 最后登录
- 2017-5-4
- 在线时间
- 81 小时
- 威望
- 999
- 金钱
- 2391
- 注册时间
- 2013-9-11
- 阅读权限
- 150
- 帖子
- 1124
- 精华
- 5
- 积分
- 999
- UID
- 1220
|
1#
发表于 2014-2-5 17:13:14
|
查看: 4517 |
回复: 6
如何准确计算undo表空间
网上查询undo空间计算,普遍的做法均是如下:
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');
根据 note 461480.1 - "What is Automatic UNDO Retention (10g New Feature)? Explain.", 11g中undo的retention是不断变化的(不小于undo_retention参数指定的值);所以根据v$parameter拿到的undo_retention来计算undo空间实际上往往都是小于真实的使用情况的. |
|