undo表空间的作用、收缩及切换



undo表空间的作用、收缩及切换

一、undo表空间作用
    1.交易的回退:没有提交的交易可以rollback
    2.交易的恢复:数据库崩溃时,将磁盘的不正确数据恢复到交易前
    3.读一致性:被查询的记录有事务占用,转向回滚段找改前镜像
    4.闪回数据:从回滚段中构造历史数据


SQL> show parameter undo
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS2

undo_management=AUTO 表示undo表空间段的段管理模式是自动管理模式。
在自动管理模式下,管理员只需要备足够的表空间容量,oracle会自动管理扩展回滚段的数量。

undo_retention=900s 表示提交之后旧的镜像保持在回滚段中的时间。这是非强制的回退保持时间,回滚空间不足时,老的镜像就会被冲掉,但事实是我遇到了:
ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDOTBS2' 中)
最后通过增加undo表空间的数据文件解决了。

从10g开始,可以强制保证保持时间,如下:但是可能会导致空间扩展过大,要慎用。
alter tablespace undotabs1 retention guarantee;
select tablespace_name,retention from dba_tablespaces;

 


二、undo表空间的收缩
如下UNDOTBS2表空间由于大量长时间的DML操作,导致所占空间已经很大,而且涨大后不会自行收缩。
SQL> select file_name,file_id,tablespace_name,bytes/1024/1024/1024 G from dba_data_files where tablespace_name like 'UNDOTBS%';
FILE_NAME                                              FILE_ID    TABLESPACE_NAME                 G
----------------------------------------------------- ---------- ------------------------------ ----------
+DATA/orcl/datafile/undotbs1.286.817556219               3        UNDOTBS1                       0.16601562
+DATA/orcl/datafile/undotbs2.285.817556219               5        UNDOTBS2                       29
+DATA/orcl/datafile/undotbs2.341.821024757               17       UNDOTBS2                       8

尝试收缩一下:
SQL> alter database datafile 5 resize 24g;
Database altered.

不能再缩小了:
SQL> alter database datafile 5 resize 23g;
alter database datafile 5 resize 23g
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value

 


三、undo表空间的切换
undo表空间不会自动收缩,目前很占空间,用切换undo表空间的方式腾出空间来。

建立一个新的undo表空间:
SQL> create undo tablespace undotbs3 datafile size 1g autoextend on next 50m maxsize unlimited;
Tablespace created

切换undo表空间:
SQL> alter system set undo_tablespace=undotbs3 sid=orcl2;
System altered
切换回滚表空间的时候不会影响回滚段数据,虽然如此,但还是建议在业务空闲时做。

显示unbo表空间已经切换:
SQL> show parameter undo
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS3

删除原来的undo表空间:
SQL> drop tablespace undotbs2 including contents and datafiles;
Tablespace dropped

通过再次检查,可以看到原来的undo表空间及undo数据文件真的没有了。
SQL> select file_name,file_id,tablespace_name,bytes/1024/1024/1024 G from dba_data_files where tablespace_name like 'UNDOTBS%';
FILE_NAME                                            FILE_ID     TABLESPACE_NAME                  G
--------------------------------------------------- ---------- ------------------------------ ----------
+DATA/orcl/datafile/undotbs1.286.817556219            3          UNDOTBS1                     0.16601562
+DATA/orcl/datafile/undotbs3.347.821527847            23         UNDOTBS3                     1



次文章转自:http://pandarabbit.blog.163.com/blog/static/2092841442013623114942540/

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值