关闭

自动撤销管理(AUM)

684人阅读 评论(0) 收藏 举报

一设置AUM

  设置自动撤销管理,涉及三个参数:undo_management、undo_tablespace、undo_retention

  1、undo_management

  设置自动撤销管理,必须设置初始化参数undo_management=auto

  alter system set undo_management=auto scope=spfile;

  该参数也是必须要设定的

  2、undo_tablespace

  指定数据库使用的撤销表空间

  (1)如果没有指定该参数且没有可用的撤销表空间,oracle将使用system表空间。

  如果没有指定该参数,但有撤销表空间,oracle将使用该撤销表空间;若有多个撤销表空间,oracle将使用第一个可用的作为数据库撤销表空间。

  如果该参数指定的撤销表空间不存在,将报错。

  (2)即便数据库中有多个撤销表空间,oracle在同一时间也将只是用一个;可以使用该参数切换oracle使用的撤销表空间

  alter system set undo_tablespace=undo_tablespace_name;

  oracle使用的撤销表空间不能被删除,需要删除的话,必须先切换撤销表空间。

  (3)创建撤销表空间:

  create undo tablespace undo_tablespace_name

  datafile 'data_path_name'

  size nm

  [autoextend on next mm maxsize pm]

  [extent management local ]                            

  [segment space management manual]  --撤销表空间的段空间管理必须为manual

  [{uniform [ size am] } | autoallocate]

  (4)如果不能确定撤销表空间的大小,可以先使用自动扩展的数据文件,在创建撤销表空间时指定,也可以通过下面方式:

  alter database datafile 'datafile_path_name' autoextend on next mm maxszie pm;

  在确定撤销表空间的大小后再使用固定的表空间:

  alter database datafile 'datafile_path_name' autoextnd off;

  3、undo_retention

  指定已提交事务的撤销数据保留的时间长短

  alter system set undo_retention=n            --n为保留的时间大小,默认为900,单位秒

  oracle绝对保证活动的撤销数据,即事务尚未提交的撤销数据。如果空间不足,将先删除事务已经提交且保留时间超过undo_retention设定值的撤销数据,如果空间仍然不足,将删除事务已经提交但保留时间未超过undo_retention设定值的撤销数据。

  (1)使用AUM且数据文件自动扩展,oracle将以undo_retention设定的值为最小值,自动调整撤销保留时间,照顾到数据库中最长查询的撤销要求。

  (2)使用AUM但固定数据文件,oracle将忽略用户设定的undo_retention的值,自动调整撤销保留时间,尽最大努力保留撤销数据。

  (3)前两种情况相比,如果空间允许,一般使用固定数据文件时撤销数据保留的时间要长。

二、如何设置undo_retention?

  建议参考数据库中最长事务的时间大小,设置的undo_retention应该比最长事务的时间稍大一点。

  select max(maxquerylen) from v$undostat;

  如果使用闪回,应该保证undo_retention的设置能够满足的闪回要求。

三、如何确定撤销表空间的大小

  建议首先创建自动扩展的撤销表空间,之后使用undo advisor确定撤销表空间的大小,然后更改撤销表空间为固定大小。

四、有保证的撤销保留

  使用undo_retention设定保留时间,oracle并不一定能满足你的要求,当空间不足时,oracle依然会删除没有达到保留时间的撤销数据。如果需要强制oracle按照你设定值保留撤销数据,可以使用有保证的撤销保留。

  1、create undo tablespace

       .....

       retention guarantee;

  2、alter tablespace undo_tablespace_name retention guarantee;

  取消有保证的撤销保留:alter tablespace undo_tablespace_name retention noguarantee;

  使用有保证的撤销保留,如果空间不足以满足活动事务,那么所有的DML操作都不允许,会收到空间出超的错误;二DDL语句可以继续进行。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:47157次
    • 积分:937
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条