暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

undo 数据管理方法的演化

原创 不吃草的牛_Nick 2022-08-27
466

9i 之前的版本:
手工undo 管理,dba 要手工创建undo 段提供给undo 使用,比较麻烦。

9i:
引入自动undo 管理,oracle 可以利用现有的undo 表空间自动进行undo 信息和空
间的管理,然后通过指定undo retention
来决定非活动undo 信息的保留期限。

10g:
引入自动retention 优化,可以根据undo 表空间的大小以及自动增长的情况自动的
优化undo retention,最大限度的利用undo 空间来避免ora-01555 之类的错误
产生。

11g:
数据库在创建的时候默认使用自动undo 管理。

自动undo 管理:
自动undo 管理(automatic undo management, aum)是oracle 从9i 开始推出
的新undo 管理方式,之前的undo 管理都是靠手工创建undo 段来完成的。有了aum
之后,oracle 可以在undo 表空间当中自动的管理undo 信息和undo 所占用的空间,
在无需人工参与空间分配等活。

与aum 相关的两个最基本的参数就是undo_management 和undo_tablespace。

show parameter undo

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1

undo_management

决定了使用自动(auto)还是手动(manual)的undo 管理方式,从11g 开始默认情况下
是使用自动undo 管理, oracle 自身也是推荐使用aum。

undo_tablespace

指定了oracle 该在那个undo 表空间中创建自动管理的undo 段。undo_tablespace的选择方法如下:
01.如果系统中不存在undo 表空间,则数据库打开时自动选用使用system 表空间。
02.如果系统中存在多个undo 表空间,默认情况下数据库打开时使用第一个可用的undo 表空间。
03.在系统运行中如果不设置undo_tablespace,则事务将无法执行。

自动undo 管理的retention:
----------------------------------------
在一个表空间的使用将近100%是一件很让人不爽的事,但是考虑到自动undo 优化
的存在,我们知道undo 表空间将近100%的使用率也并不一定就有问题,因此搞
清楚undo 表空间的使用情况是很有必要的,下面语句起的作用就是这个:

select seg.tablespace_name "tbs_name",
ts.bytes / 1024 / 1024 "ts size(mb)",
ue.status "undo status",
count(*) "used extents",
round(sum(ue.bytes) / 1024 / 1024, 2) "used size(mb)",
round(sum(ue.bytes) / ts.bytes * 100, 2) "used rate(%)"
from dba_segments seg,
dba_undo_extents ue,
(select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name) ts
where ue.segment_name = seg.segment_name
and seg.tablespace_name = ts.tablespace_name
group by seg.tablespace_name, ts.bytes, ue.status
order by seg.tablespace_name;


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论