我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何评估undo表空间大小

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何评估undo表空间大小

今天就跟大家聊聊有关如何评估undo表空间大小,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

如何估算Oracle数据库所需的UNDO表空间的大小:
How To Size UNDO Tablespace For Automatic Undo Management (文档 ID 262066.1)

要确定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" FROM (SELECT value AS UR  FROM v$parameter WHERE name = 'undo_retention'),(SELECT (SUM(undoblks)/SUM(((end_time -begin_time)*86400))) AS UPS  FROM v$undostat),  (SELECT value AS DBS FROM v$parameter  WHERE name = 'db_block_size');
  Bytes
----------
445814.844


详解:

一般应该在一天中数据库负载最繁重的时候进行计算。
对于UNDO表空间大小的定义需要考虑UNDO_RETNETION参数、产生的UNDO BLOCKS/秒、UNDO BLOCK的大小。undo_retention:对于UNDO表空间的数据文件属性为autoextensible,则undo_retenion参数必须设置,UNDO信息将至少保留至undo_retention 参数设定的值内,但UNDO表空间将会自动扩展。对于固定UNDO表空间,将会通过表空间的剩余空间来最大限度保留UNDO信息。如果FIXED UNDO表空间没有对保留时间作GUARANTEE(alter tablespace xxx retention guarantee;),则undo_retention参数将不会起作用。(警告:如果设置UNDO表空间为retention guarantee,则未过期的数据不会被复写,如果表空间不够则会导致DML操作失败或者transation挂起)


Oracle 10g 有自动Automatic Undo Retention Tuning 这个特性。设置的 undo_retention 参数只是一个指导值,,Oracle 会自动调整 Undo (会跨过 undo_retention 设定的时间) 来保证不会出现 Ora-1555 错误.。通过查询V$UNDOSTAT(该视图记录4天以内的UNDO表空间使用情况,超过4天可以查询DBA_HIST_UNDOSTAT视图) 的 tuned_undoretention (该字段在10G版本才有,9I是没有的)字段可以得到Oracle 根据事务量(如果是文件不可扩展,则会考虑剩余空间)采样后的自动计算出最佳的 retenton 时间.。这样对于一个事务量分布不均匀的数据库来说,,就会引发潜在的问题--在批处理的时候可能 Undo 会用光, 而且这个状态将一直持续, 不会释放。


SQL查询tuned_undoretention:
select to_char(begin_time,'DD-MON-RR HH24:MI') begin_time,to_char(end_time,'DD-MON-RR HH24:MI') end_time,tuned_undoretention from v$undostat order by end_time;


检查一天平均每秒产生的UNDO BLOCK
select (sum(undoblks)/sum((end_time-begin_time)*86400) from v$undostat;
生成的结果是UNDO BLOCK,如果需要计算出实际大小,则需要乘以db_block_size(通过show parameter db_block_size查出来)

如何计算合适的UNDO表空间大小:
select (UR*(UPS*DBS))+(DBS*24) as "bytes" from (select value as UR from v$parameter where name='undo_retention'),(select (sum(undoblks)/sum(((end_time-begin_time)*86400))) as ups from v$undostat),(select value as DBS from v$parameter where name='db_block_size');

看完上述内容,你们对如何评估undo表空间大小有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何评估undo表空间大小

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle undo表空间异常增大如何解决

当Oracle undo表空间异常增大时,可以尝试以下解决方法:查找导致undo表空间增大的原因:查询长时间运行的事务或操作是否导致undo段无法回收检查是否有大量的未提交事务占用undo表空间检查undo_retention参数是否设
Oracle undo表空间异常增大如何解决
2024-04-09

oracle如何查表空间大小

要查询 oracle 表空间大小,请遵循以下步骤:确定表空间名称,方法是运行查询:select tablespace_name from dba_tablespaces;查询表空间大小,方法是运行查询:select sum(bytes) a
oracle如何查表空间大小
2024-06-12

oracle如何查询表空间大小

oracle查询表空间大小步骤:一、使用数据库管理员账号登录到Oracle数据库;二、使用“SELECT”语句来查看空间列表;三、查询表空间大小有3种方法:1、使用dbms_utility包查询;2、使用dba_segments视图查询;3
2023-07-10

plsql如何查看表空间大小

在PL/SQL中,可以使用以下语句来查看表空间的大小:SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 2) AS "Size (MB)"FROM dba_data_file
plsql如何查看表空间大小
2024-04-09

db2临时表空间大小如何计算

DB2临时表空间的大小需要根据实际业务场景和需求来进行计算。一般来说,可以按照以下步骤计算临时表空间的大小:确定临时表的大小:根据实际业务需求和临时表的数据量,可以估算出每个临时表的大小。确定临时表数量:根据系统中使用的临时表的数量,可以计
db2临时表空间大小如何计算
2024-04-09

oracle如何查看临时表空间大小

要查看Oracle数据库中临时表空间的大小,可以使用以下SQL语句:SELECT tablespace_name, SUM(bytes)/1024/1024 AS size_mbFROM dba_temp_filesGROUP BY
oracle如何查看临时表空间大小
2024-04-09

oracle如何查看表空间剩余大小

你可以使用以下语句来查看Oracle数据库中表空间的剩余大小:```sqlSELECT tablespace_name, round(sum(bytes)/1024/1024, 2) as "剩余大小(MB)"FROM dba_free_s
2023-09-28

oracle如何修改表空间文件大小

要修改Oracle数据库中的表空间文件大小,可以使用以下步骤:首先,连接到Oracle数据库,并使用管理员权限登录。确保要修改的表空间处于可用状态,可以使用以下SQL查询语句检查表空间的状态:SELECT tablespace_name,
oracle如何修改表空间文件大小
2024-04-09

生产环境Oracle undo表空间如何管理

这篇文章主要介绍了生产环境Oracle undo表空间如何管理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇生产环境Oracle undo表空间如何管理文章都会有所收获,下面我们一起来看看吧。一、什么是撤销以及
2023-06-29

oracle数据库如何查看表空间大小

要查看Oracle数据库中表空间的大小,可以使用以下SQL查询语句:SELECT tablespace_name, round(SUM(bytes) / 1024 / 1024, 2) AS "Size (MB)" FROM dba_d
oracle数据库如何查看表空间大小
2024-04-22

Oracle表空间大小如何查看及扩增

目录一、查看表空间大小1.使用SQL查询2.使用Enterprise Manager (EM)二、扩增表空间1.手动扩增表空间数据文件2.自动扩增表空间数据文件3.增加新的表空间数据文件总结在oracle数据库中,表空间是用来存储数编程据库
Oracle表空间大小如何查看及扩增
2024-10-09

hdfs如何查看空间大小

要查看HDFS中的空间大小,可以使用以下命令:hdfs dfs -df -h这将显示HDFS中每个目录的空间使用情况,并以人类可读的方式显示其大小。您还可以使用以下命令来查看特定目录的空间使用情况:hdfs dfs -du -h /pa
hdfs如何查看空间大小
2024-04-10

oracle如何查看表空间大小及使用情况

可以使用以下SQL语句来查看表空间的大小及使用情况:查看表空间的总大小、已使用空间和剩余空间:SELECT tablespace_name,ROUND(SUM(bytes) / 1024 / 1024, 2) AS total_space_
oracle如何查看表空间大小及使用情况
2024-04-09

编程热搜

目录