Undo表空间及管理方式
undo的三个作用
读一致性,构造CR块
回滚
实例恢复
show parameter undo_tableplace;
数据库建立后,会自动生成undo表空间,以及undo段也是自动生成
与其他表空间的段不同的是:undo表空间的undo段是自动生成且自动维护的,除此之外,oracle会自动使用undo表空间中的undo段。其他表空间的段都是手工创建的。
从某种意义上讲,只需要确保undo表空间的大小就可以了。
Oracle如何使用undo段?
查看物理undo表空间
select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like '%UNDOTBS%';
undo表空间的段,其中system在系统表空间中
select * from v$rollname;
在oracle的undo表空间中有很多回滚段,但是在系统表空间中也是有一个回滚段。在oracle正常运行期间使用的是undo表空间中的段,随着oracle业务量增长,undo表空间的段也会变化。
在系统表空间中,system回滚段,在什么时候会使用呢?
1.oralce对数据字典进行操作的时候,比如,建立表(列的名字,列的类型,表名等等),这时候需要写到数据字典中,那么也就需要写到系统表空间中。也就是说对数据库的对象,进行增加和删除的时候就要操作数据库的数据字典,也就需要用到系统表空间以及undo段。
2.当undo表空间坏了,oracle会使用系统表空间的system段
undo表表空间自动分区
undo自动管理:
undo表空间自动生成
undo表空间中的段自动生成
oracle自动使用undo表空间
undo段是自动分配区
undo段的管理方式
在9i以前,undo表空间是手工管理,也就是说,undo表空间和undo段都是自动建立的,但是undo段中的区的分配是要手工管理的。
所以在9i以前,如果遇到数据量较大的时候,undo表空间的undo段不够用的情况,需要手工进行分配区,容易导致操作失败。
从9i开始,undo表空间进行自动管理,以为着undo表空间的undo段所需要的区是自动分配和收回的,只要给undo表空间足够的空间即可。