如何计算自动管理的UNDO表空间大小

发表于:2014-9-05 10:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:pxbibm    来源:51Testing软件测试网采编

  AUM(自动 undo 管理,Automatic Undo Management)几乎不需要配置。您基本上只需要定义将前映像保持可用的时间量。这是通过参数 UNDO_RETENTION 控制的,以秒为单位定义。因此,值 900 表示 15 分钟。
  一定要意识到,如果 undo 表空间中存在空间压力时,我们不保证前镜像一定会保留这么长时间。
  因此,以下公式可用于计算最佳 undo 表空间大小:
  从 Oracle 10g 开始,您可以选择使用 GUARANTEE 选项,以确保在定义的 undo_retention 时间之前,undo 信息不会被覆盖。
  UNDO表空间大小由三部分组成:
  (UR)UNDO_RETENTION 单位秒
  (UPS)每秒产生的undo 数据块的个数
  (DBS)数据库数据文件块的大小DB_BLOCK_SIZE
  计算公式
  UndoSpace=UR*(UPS*DBS)
  其中UNDO_RETENTION 和 DB_BLOCK_SIZE两部分的信息可以在实例配置参数信息中获取。
  而第三部分UPS的信息需要从动态性能试图V$UNDOSTAT中获取
  下面是获取(UPS)每秒产生的undo 数据块的个数.
  SQL> SELECT undoblks/((end_time-begin_time)*86400) "Peak Undo Block Generation"
  FROM v$undostat WHERE undoblks=(SELECT MAX(undoblks) FROM v$undostat);
  其中列END_TIME and BEGIN_TIME 是日期类型,需要转换成秒(24 hours * 60 minutes * 60 seconds).
  下面的SQL是计算UNDO表空间大小
SQL> SELECT (UR * (UPS * DBS)) AS "Bytes"
FROM (SELECT value AS UR FROM v$parameter WHERE name = 'undo_retention'),
(SELECT undoblks/((end_time-begin_time)*86400) AS UPS
FROM v$undostat
WHERE undoblks = (SELECT MAX(undoblks) FROM v$undostat)),
(SELECT block_size AS DBS
FROM dba_tablespaces
WHERE tablespace_name = (SELECT UPPER(value) FROM v$parameter WHERE name = 'undo_tablespace'));
  10g 和10g 更高的版本,可以使用下面的查询:
SQL>SELECT (UR * (UPS * DBS)) AS "Bytes"
FROM (select max(tuned_undoretention) AS UR from v$undostat),
(SELECT undoblks/((end_time-begin_time)*86400) AS UPS
FROM v$undostat
WHERE undoblks = (SELECT MAX(undoblks) FROM v$undostat)),
(SELECT block_size AS DBS
FROM dba_tablespaces
WHERE tablespace_name = (SELECT UPPER(value) FROM v$parameter WHERE name = 'undo_tablespace'));
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号