热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

要确定Oracle需要的UNDO表空间的大小,需要以下三条信息:UR以秒为单位的UNDO_RETENTIONUPS每秒生成的还原数据块的

要确定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

为了获得满足业务需要的结果,一般应该在一天中数据库负载最繁重的时候进行计算。

linux


推荐阅读
author-avatar
手机用户2702932894
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有