ORACLE_UNDO表空间的管理总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
undo表空间的管理:
1、undo作用
2、undo管理模式
3、undo参数
4、undo表空间的建立删除
作用:
事务回退、事务恢复、读一致性、闪回数据
读一致性:用户看到的所有数据都是别人已经提交的或者是自己操作过但还没提交的
事务恢复、前滚:oracle重启时会恢复到没有commit的状态,系统监控进程读取undo表空间段头查找已提交事务,在日志文件中找到记录,然后实例恢复。
事务回退:用户可以用roolback回滚没有commit的数据
闪回(flash back):任何操作都会把数据的操作保存到undo,运用undo表空间的记录,来恢复近期的数据。9i以后版本才支持
管理模式:
现在版本一般用自动管理
新手最好自动管理
show parameter undo_m
参数中的undo_management 定义了是否自动管理。
show parameter undo_t
查看undo_tablespace参数指定用的是哪个表空间
undo表空间中的段分三种:
系统段----------系统表空间镜像数据
非系统段-----------非系统表空间的镜像数据
deferred段---------临时段---任何表空间脱机后,所有变化的数据存入undo临时段,当再次联机时在从undo写入
查看段:
SQL> select * from v$rollname;
USN NAME
---------- ------------------------------
0 SYSTEM
1 _SYSSMU1$
2 _SYSSMU2$
3 _SYSSMU3$
4 _SYSSMU4$
5 _SYSSMU5$
6 _SYSSMU6$
7 _SYSSMU7$
8 _SYSSMU8$
9 _SYSSMU9$
10 _SYSSMU10$
其中0为系统段,其他为非系统段,分公有还是私有默认都是公有,oracle中至少要有一个非系统段。
查看文件状态
SQL> select status,enabled from v$datafile;
查看deferred段
select segment_name,segment_type from dba_segments where segment_type like '%defe%' 只有某个表空间脱机时,就会产生deferred段,一旦online后deferred段消失
参数:
SQL> show parameter undo_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
parameter_undo_tablespace
undo表空间设置,默认存放1个系统段,10个非系统段,还有表空间在offline时system 表空间去生成一个类型为deferred rollback段,online时自动消失。
parameter_undo_retention 单位是秒
设置undo保存数据的最多时间,默认是900秒(15分钟);
undo表空间的建立删除:
在建数据库时:
create database
undo tablespace <> datafile <> size <>;
以后建立时:
create smallfile|bigfile undo tablespace <> datafile <> size <> <>;
例子:
create undo tablespace undo datafile '/u01/oracle/undo.dbf' size 10m autoextend on;
不过这个表空间没有用
删除:
undo_tablespace 参数指定的表空间是不能删除的。
要想删除必须先修改undo_tablespace参数;
且undo中的保留的段必须脱机,
然后才能删除(需要重启);
更改undo表空间
create undo tablespace undo datafile '/u01/oracle/undo.dbf' size 10m autoextend on;
alter system set undo_tablespace =undo;
默认时参数文件也已经修改,不需要改参数文件
undo大小估算:
undo space =(undo_retention *(undo blocks per second * db block size ))+db block_size
查询所需参数:
undo blocks per second这个值需要查询v$undostat----------undoblks
select sum(undoblks)/sum((end_time-begin_time)*10800) from v$undostat;
SUM(UNDOBLKS)/SUM((END_TIME-BEGIN_TIME)*10800)
----------------------------------------------
.190424863
SQL> show parameter undo_re
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------