Chinaunix首页 | 论坛 | 博客
  • 博客访问: 163829
  • 博文数量: 118
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 12
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-21 16:38
文章分类

全部博文(118)

文章存档

2013年(118)

我的朋友

分类: Oracle

2013-08-07 11:24:22

原文地址:切换或缩小undo表空间 作者:pugna_zfr

在Oracle 10g RAC中,需要将一个实例的undo表空间缩小;但是undo表空间的datafile不好回收,不便resize,比较通用的方法是新建一个undo表空间作为此实例的默认表空间,等原来的undo表空间上没有事务后,删除原来的undo表空间和文件。
如果一定要用回之前的undo表空间名称,把刚才的步骤重复一遍就OK。

create undo tablespace tbs_undo_tmp datafile '+DATA' size 10G  AUTOEXTEND OFF;

alter system set undo_tablespace = 'tbs_undo_tmp' scope = both sid = 'testdb1';

在10g新功能中有个叫AUR(Automatic Undo Retention)的东东,这东西就是根据系统现在使用的undo情况去自动调整UNDO_RETENTION的大小(当然,这个自动调整的数值不会少于UNDO_RETENTION的值)。

正是因为这个特性,会导致查询回滚段状态的时候,会发现UNEXPIRED的size非常大。

TABLESPACE_NAME            STATUS     undo_using_MB
------------------------------ --------- -------------
UNDOTBS1               EXPIRED               690
UNDOTBS2               EXPIRED         562.375
UNDOTBS1               UNEXPIRED      43302.75
UNDOTBS2               UNEXPIRED     27085.375

通过以下SQL可以查出AUR将UNDO_RETENTION的值调整到了多少

SELECT to_char(begin_time, 'YYYY-MM-DD HH24:MI:SS') begin_time,
       tuned_undoretention
FROM   v$undostat
ORDER  BY begin_time DESC;

BEGIN_TIME        TUNED_UNDORETENTION
------------------- -------------------
2013-08-06 22:33:59          49052
2013-08-06 22:23:59          48831
2013-08-06 22:13:59          48540
2013-08-06 22:03:59          48315
2013-08-06 21:53:59          48071

猜想,关闭AUR会不会对undo表空间中的回滚段使用状态立即造成影响呢?

通过修改隐藏参数关闭AUR功能
alter system set "_undo_autotune" = false scope = both sid = '*';

两次查询回滚段状态,发现关闭AUR会立即对回滚段使用状态立即造成影响。超过spfile中设定的UNDO_RETENTION的回滚段状态变为了EXPIRED。

TABLESPACE_NAME            STATUS     undo_using_MB
------------------------------ --------- -------------
UNDOTBS1               UNEXPIRED       582
UNDOTBS2               UNEXPIRED     563.5
UNDOTBS1               EXPIRED          43410.75
TBS_UNDO_TMP               EXPIRED             2
UNDOTBS2               EXPIRED        24823.0625
TBS_UNDO_TMP               UNEXPIRED    788.25

接下来就是等待系统中原默认的undo表空间全部EXPIRED之后将其删掉。
drop tablespace UNDOTBS1 including contents and datafiles;

阅读(580) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~