undo表空间的作用、收缩及切换
2014-12-10 14:57
337 查看
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/
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/
相关文章推荐
- 收缩undo表空间
- undo 表空间的扩展与收缩及oracle手工备份 恢复的方式
- Oracle 10g中UNDO数据的作用及UNDO表空间的操作详解
- undo表空间的切换,常识
- oracle的UNDO空间作用及涉及的操作
- [置顶] Oracle 11g Undo 表空间切换
- ORACLE 10g中UNDO数据的作用及UNDO表空间的操作详解
- oracle undo表空间切换
- Oracle 11g Undo 表空间切换
- Oracle 10g中UNDO数据的作用及UNDO表空间的常用操作
- Oracle切换undo表空间操作步骤(转)
- mysql5.7在线收缩undo表空间
- 切换UNDO表空间--DDL使事务自动提交
- Oracle切换UNDO空间数据库后存储过程无法正常编译
- oracle表空间---undo表空间切换
- undo表空间的切换
- Oracle UNDO 表空间的作用
- 【oracle】切换undo表空间
- undo 表空间的扩展与收缩
- 自动undo表空间模式下切换新的undo表空间