undo表空间概述(一)

2015-02-25 15:02:43 · 作者: · 浏览: 61

show parameter undo_tablespace;//查询当前的undo表空间
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
-------------------------------------------------- ----------- ----------------
undo_tablespace? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? string? ? ? UNDOTBS1? ? ?


select * from v$rollname;//当前有多少段
//下面的段是系统提供的回滚段:
? ? 1. 对数据库对象进行操作的时候,也就是使用数据字典的时,SYSTEM的UNDO段才会使用
? ? 2. 如果undo表空间坏了,可能会使用SYSTEM段
0? ? SYSTEM
//下面的是存在于 UNDOTBS1中,这下面段是在数据库运行一段时间会自动调整的段
1? ? _SYSSMU1_3780397527$
2? ? _SYSSMU2_2232571081$
3? ? _SYSSMU3_2097677531$
4? ? _SYSSMU4_1152005954$
5? ? _SYSSMU5_1527469038$
6? ? _SYSSMU6_2443381498$
7? ? _SYSSMU7_3286610060$
8? ? _SYSSMU8_2012382730$
9? ? _SYSSMU9_1424341975$
10? ? _SYSSMU10_3550978943$


select SEGMENT_NAE,BLOCKS,EXTENTS from dba_segments where SEGMENT_NAME='SYSTEM';//在system的表空间中段的大小


SYSTEM? ? 48? ? 6


--UNDO表空间占用空间情况以及数据文件存放位置
? ? select file_name,bytes/1024/1024 from dba_data_files
? ? where tablespace_name like '%UNDOTBS%';


/u01/app/oracle/oradata/jiagulun/undotbs01.dbf? ? 90



select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BLOCKS from dba_extents where SEGMENT_NAME='SYSTEM';//段所占的区


SYSTEM? ? SYSTEM? ? 0? ? 1? ? 128? ? 8
SYSTEM? ? SYSTEM? ? 1? ? 1? ? 136? ? 8
SYSTEM? ? SYSTEM? ? 2? ? 1? ? 528? ? 8
SYSTEM? ? SYSTEM? ? 3? ? 1? ? 536? ? 8
SYSTEM? ? SYSTEM? ? 4? ? 1? ? 544? ? 8
SYSTEM? ? SYSTEM? ? 5? ? 1? ? 552? ? 8


select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BLOCKS from dba_extents where SEGMENT_NAME='_SYSSMU7_3286610060$';


_SYSSMU7_3286610060$? ? UNDOTBS1? ? 0? ? 3? ? 224? ? 8
_SYSSMU7_3286610060$? ? UNDOTBS1? ? 1? ? 3? ? 232? ? 8
_SYSSMU7_3286610060$? ? UNDOTBS1? ? 2? ? 3? ? 312? ? 8
_SYSSMU7_3286610060$? ? UNDOTBS1? ? 3? ? 3? ? 1024? ? 128
_SYSSMU7_3286610060$? ? UNDOTBS1? ? 4? ? 3? ? 11392? ? 128


通过上面可以看到对于系统的undo段中的区是连续的,而且区中的块也是连续的
但是对于非系统的undo段中的区不是连续的,但是区中的块是连续的


undo表空间的管理方式:在9i以前表空间自动建立,段是自动建立;但是区是手动分区的,这样就会存在一些问题:
? ? 一些比较大的DML语言跑跑就因为undo段够就会出现问题,空间不足。
? ? ? ? ? ? ? ? 在其后就自动分配了,在某些请款下也会自动回收的。
show parameter undo;
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
-------------------------------------------------- ----------- ----------------------------------------------------------------------------------------------------
undo_tablespace? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? string? ? ? UNDOTBS1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
-------------------------------------------------- ----------- ----------------------------------------------------------------------------------------------------
undo_management? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? string? ? ? AUTO? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
undo_retention? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? integer? ? 900? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
undo_tablespace? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? string? ? ? UNDOTBS1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?



undo表空间的作用
? ? 1. oracle会在事务开启的时候使用undo:
? ? ? ? ? 在oracle在修改数据的时候,oracle会把被修改的数据放入undo表
? ? ? ? ? 空间的undo段里面。(当修改语句越多,使用的undo段越多)正
? ? ? ? ? 因为保存了被修改的数据,所以undo可以回滚
? ? 2. 保证一个会话读不到另外一个会话未提交的数据,靠undo表空间保存原数据,所以undo保证读一致性
? ? 3. oracle的实例崩溃恢复:前滚,回滚*


Undo段中区的状态
? ? free:从来没有用过的
? ? expired:当过了undo_retention时间,oracle会释放。原则expired不会被释放。未测时间
? ? inactive:表示事务已经提交,但是还没有过undo_retention,原则上是要保留