您好,欢迎访问一九零五行业门户网

如何估算Oracle数据库所需的UNDO表空间的大小

要确定oracle需要的undo 表空间的大小,需要以下三条信息: ur 以秒为单位的undo_retentionups 每秒生成的还原数据块的
要确定oracle需要的undo 表空间的大小,需要以下三条信息: 
ur      以秒为单位的undo_retention
ups    每秒生成的还原数据块的数量
dbs     db_block_size
undospace = [ur * (ups * dbs)] + (dbs * 24)
undo_retention是一个参数,此参数控制为提供读一致性而保留的还原数据量,以秒为单位定义,可以在初始化文件中设置,或使用 alter system 命令来动态修改。
sql>alter system set undo_retention=900;
sql> show parameter undo_retention
name                                 type        value
------------------------------------ ----------- ------------------------------
undo_retention                       integer     900
如果值为900,则可以使还原数据保留 15 分钟,当然需要足够的存储空间才行。
那么如何计算每秒生成的还原数据块的数量呢,可以通过v$undostat视图的begin_time、end_time和undoblks三个字段的值查询出来,计算的sql语句如下:
sql> select (ur * (ups * dbs)) + (dbs * 24) as bytes
  2  from       (select value as ur
  3             from v$parameter
  4             where name = 'undo_retention'),
  5     (select (sum(undoblks)/sum(((end_time -begin_time)*86400))) as ups
  6     from v$undostat),
  7     (select value as dbs
  8     from v$parameter
  9     where name = 'db_block_size');
     bytes
----------
445814.844
为了获得满足业务需要的结果,一般应该在一天中数据库负载最繁重的时候进行计算。

其它类似信息

推荐信息