(9i以前称为Rollback segment;9i称为Undo segment/Undo Tablespace;10g及以后只有Undo Tablespace.)
一、UNDO数据的作用.
1、回退事务
当执行DML操作修改数据时,UNDO数据被存放到UNDO段,而新数据则被存放到数据段中,如果事务操作存在问题,旧需要回退事务,以取消事务变化.假定用户A执行了语句UPDATE emp SET sal=1000 WHERE empno=7788后发现,应该修改雇员7963的工资,而不是雇员7788的工资,那么通过执行ROLLBACK语句可以取消事务变化.当执行ROLLBACK命令时,oracle会将UNDO段的UNDO数据800写回的数据段中.
2、读一致性
用户检索数据库数据时,oracle总是使用用户只能看到被提交过的数据(读取提交)或特定时间点的数据(SELECT语句时间点).这样可以确保数据的一致性.例如,当用户A执行语句UPDATE emp SET sal=1000 WHERE empno=7788时,UNDO记录会被存放到回滚段中,而新数据则会存放到EMP段中;假定此时该数据尚未提交,并且用户B执行SELECT sal FROM emp WHERE empno=7788,此时用户B将取得UNDO数据800,而该数据正是在UNDO记录中取得的.
3、事务恢复
事务恢复是例程恢复的一部分,它是由oracle server自动完成的.如果在数据库运行过程中出现例程失败(如断电,内存故障,后台进程故障等),那么当重启oracle server时,后台进程SMON会自动执行例程恢复,执行例程恢复时,oracl会重新做所有未应用的记录.回退未提交事务.
4、倒叙查询(FlashBack Query)
倒叙查询用于取得特定时间点的数据库数据,它是9i新增加的特性,假定当前时间为上午11:00,某用户在上午10:00执行UPDATE emp SET sal=3500 WHERE empno=7788语句,修改并提交了事务(雇员原工资为3000),为了取得10:00之前的雇员工资,用户可以使用倒叙查询特征.
二、相关的Configuration Parameter:
1、UNDO_MANAGEMENT:值:Auto/Manual。指定UNDO数据的管理方式。在9I中默认设为AUTO。此参数不可动态调整。
2、UNDO_TABLESPACE:指定表空间的名称。如果没有指定表空间的名字,ORACLE会自动找一个默认的表空间。
3、UNDO_SUPPRESS_ERRORS:值:True/False。值为True的情况下,在UNDO_MANAGEMENT节= TRUE时,如果手动对UNDO进行修改,将会报错。错误如下:
ORA-30019: Illegal rollback Segment operation in Automatic Undo mode.
4、UNDO_RETENTION:设定UNDO data的最大保留时间。默认为900秒。
三、Sizing Undo Tablespace:
Undospace = [UR * (UPS * DBS)] + (DBS * 24)
UR: UNDO_RETENTION in seconds.
UPS: Number of undo data blocks generated per second.
To get this value:
select (sum(undoblks)/sum(((endtime - starttime)*86400))) from v$undostat;
DBS: the size of DB_BLOCK_SIZE.
四、To obtain undo segment information.
1、Data Dictionary View: DBA_ROLLBACK_SEGS
2、Dynamic Parameter Views:
(1) V$ROLLNAME
(2) V$ROLLSTAT v$rollname.USN = v$rollstat.USN
(3) V$UNDOSTAT
(4) V$SESSION
(5) V$TRANSACTION v$session.SADDR = v$transaction.SES_ADDR
--=============================
--占用回滚段
SELECT (select sa.module from v$sqlarea sa where sa.SQL_ID = s.SQL_ID) module, --RXGLVCJ ,CUXCAHST
TO_CHAR(s.sid)||','||TO_CHAR(s.serial#) sid_serial,
NVL(s.username, 'None') orauser,
s.program,
r.name undoseg,
t.used_ublk * TO_NUMBER(x.value)/1024||'K' "Undo"
FROM sys.v_$rollname r,
sys.v_$session s,
sys.v_$transaction t,
sys.v_$parameter x
WHERE 1=1
AND s.taddr = t.addr
AND r.usn = t.xidusn(+)
AND x.name = 'db_block_size';
分享到:
相关推荐
oracle 9i UNDO表空间数据文件丢失恢复得全过程。。
oracle版本的undolog建表语句。 2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback),和社区一起共建开源分布式事务解决方案。Fescar 的愿景是让分布式事务的使用像本地...
Oracle_Undo与Redo的通俗
Oracle 9i数据库中自动Undo表空间管理.pdf
oracle 收缩undo表空间,需要收缩Undo表空间时特别有用。
地震前兆Oracle数据库UNDO表空间持续增长修复.pdf
oracle日志,Undo日志记录某数据被修改前的值,可以用来在事务失败时进行rollback;Redo日志记录某数据块被修改后的值,可以用来恢复未写入data file的已成功事务更新的数据。
oracle Undo表空间管理,oracle 学习人员必看的不可缺少的资料。
ORACLE的UNDO表空间
在Oracle 9i数据库中,用自动Undo管(Automatic Undo Management)代替了以前版本中回退段的手工管理,即使用Undo表空间,并自动管理该表空间,使回退段的管理简单化,主要探讨了Oracle 9i数据库Undo表空间的概念、...
Oracle redo undo的说明解释
Automatic Undo Management (AUM), also referred to as System Managed Undo (SMU), was introduced in Oracle9i in response to performance and administrative difficulties associated with rollback segments....
演示如何收缩Oracle数据库的undo表空间
自动撤销管理允许DBA指定撤销信息在提交之后需要保留的时间,以防止 在长时间的查询过程中出现“snapshot too old”的错误。...无需定义和管理回滚段,你就可以简单地指定一个撤销表空间而减轻Oracle9i的负担。
我会深入地分析Oracle数据库体系结构,包括文件、内存结构以及构成Oracle数据库(database)和实例(instance)的底层进程。然后讨论一些重要的数据库主题,如锁定、并发控制、事务、redo和undo,还会解释为什么了解...
Oracle 12c Undo数据管理分析.pptx
oracle undo的更深一层的东西,能解决一定的undo问题。
里面也有段区块,ORACLE自动建立生成、自动使用UNDO段。 作为高级别的DBA是需要知道ORACLE如何使用UNDO段的。 1 Undo表空间及管理方式 ORACLE开始一个事务的时候,会用到表空间。将修改前的数据保存在UNDO段里。 ...
Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...
oracle数据库 关键表空间undo 的详细讲解 功能 和一些优势