`

管理UNDO表空间

阅读更多
http://hi.baidu.com/chenjian3/blog/item/849219ceec4ee53bb700c87c.html
UNDO表空间用于存放UNDO数据,当执行DML操作(INSERT,UPDATE和DELETE)时,oracle会将这些操作的旧数据写入到UNDO段,在oracle9i之前,管理UNDO数据时使用(Rollback Segment)完成的.从oracle9i开始,管理UNDO数据不仅可以使用回滚段,还可以使用UNDO表空间.因为规划和管理回滚段比较复杂,所有oracle database 10g已经完全丢弃用回滚段.并且使用UNDO表空间来管理UNDO数据.
UNDO数据也称为回滚(ROLLBACK)数据,它用于确保数据的一致性.当执行DML操作时,事务操作前的数据被称为UNDO记录.UNDO段用于保存事务所修改数据的旧值,其中存储着被修改数据块的位置以及修改前数据,
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之前的雇员工资,用户可以使用倒叙查询特征.

使用UNDO参数

1,UNDO_MANAGEMENT

该初始化参数用于指定UNDO数据的管理方式.如果要使用自动管理模式,必须设置该参数为AUTO,如果使用手工管理模式,必须设置该参数为MANUAL,使用自动管理模式时,oracle会使用undo表空间管理undo管理,使用手工管理模式时,oracle会使用回滚段管理undo数据,

需要注意,使用自动管理模式时,如果没有配置初始化参数UNDO_TABLESPACE,oracle会自动选择第一个可用的UNDO表空间存放UNDO数据,如果没有可用的UNDO表空间,oracle会使用SYSTEM回滚段存放UNDO记录,并在ALTER文件中记载警告.

2,UNDO_TABLESPACE

该初始化参数用于指定例程所要使用的UNDO表空间,使用自动UNDO管理模式时,通过配置该参数可以指定例程所要使用的UNDO表空间.

在RAC(Real Application Cluster)结构中,因为一个UNDO表空间不能由多个例程同时使用,所有必须为每个例程配置一个独立的UNDO表空间.

3,UNDO_RETENTION

该初始化参数用于控制UNDO数据的最大保留时间,其默认值为900秒,从9i开始,通过配置该初始化参数,可以指定undo数据的保留时间,从而确定倒叙查询特征(Flashback Query)可以查看到的最早时间点.


建立UNDO表空间,

UNDO表空间专门用于存放UNDO数据,并且在UNDO表空间尚不能建立任何数据对象(表,索引,簇)

1,使用CREATE DATABASE命令建立UNDO表空间.

当使用CREATE DATABASE命令建立数据库时,通过指定UNDO TABLESPACE选项,可以建立UNDO表空间.示例如下:

CREATE DATABASE db01



UNDO TABLESPACE undotbs_01

DATAFILE ‘/u01/oracle/rbdb1/undo0101.dbf’ SIZE 30M;

注意:UNDO TABLESPACE 子句不是必须的,如果使用自动UNDO管理模式,并且没有指定该子句,那么建立数据库时会自动生成名为SYS_UNDOTBS的UNDO表空间.


2,使用CREATE UNDO TABLESPACE命令建立UNDO表空间.

CREATE UNDO TABLESPACE undotbs3

DATAFILE ‘D:demoundotbs3.dbf’ SIZE 10M;



修改UNDO表空间,

使用ALTER TABLESPACE命令修改UNDO表空间.

当事务用尽了UNDO表空间后,使用ALTER TABLESPACE … ADD DATAFILE增加数据文件

当UNDO表空间所在的磁盘填满是,使用ALTER TABLESPACE … RENAME DATAFIEL 命令移动数据文件到其他磁盘上.

使用ALTER DATABASE … OFFLINE/ONLINE使表空间脱机/联机.

当数据库处于ARCHIVELOG模式时,使用ALTER TABLESPACE …BEGIN BACKUP/END BACKUP命令备份UNDO表空间.


切换UNDO表空间.

启动例程并打开数据库后,同一时刻特定例程只能使用一个UNDO表空间,切换UNDO表空间是指停止例程当前使用的UNDO表空间,并启动其他UNDO表空间,下面以启用undotbs2表空间为例,说明切换UNDO表空间的方法.

引用
ALTER SYSTEM SET undo_tablespace=undotbs02;


在RAC(Real Application Cluster)机构中,不同例程必须使用独立的UNDO表空间,而不能共用同一个UNDO表空间.

删除UNDO表空间.

当前例程正在使用的UNDO表空间是不能被删除的,如果确定要删除当前例程正在使用的UNDO表空间,应首先切换UNDO表空间.然后删除相应的UNDO表空间.
引用

DROP TABLESPACE undotbs3;



1,确定当前例程正在使用的UNDO表空间.

引用
Show parameter undo_tablespace



2,显示数据库的所有UNDO表空间.
SELECT tablespace_name FROMdba_tablespaces WHERE contents='UNDO'



3,显示UNDO表空间统计信息.

使用自动UNDO管理模式时,需要合理地设置UNDO表空间的尺寸,为例合理规划UNDO表空间尺寸,应在数据库运行的高峰阶段搜集UNDO表空间的统计信息.最终根据该统计信息确定UNDO表空间的尺寸.通过查询动态性能视图V%UNDOSTAT,可以搜集UNDO统计信息.

SELECT TO_CHAR(BEGIN_TIME, ’HH24 :MI :SS’) BEGIN_TIME,
       TO_CHAR(END_TIME, ’HH24 :MI :SS’) END_TIME,
       UNDOBLKS
  FROM V$UNDOSTAT;


BEGIN_TIME用于标识起始统计时间,END_TIME用于标识结束统计时间,UNDOBLKS用于标识UNDO数据所占用的数据块个数.oracle每隔10分钟生成一行统计信息.
4,显示UNDO段统计信息.

使用自动UNDO管理模式时,oracle会在UNDO表空间上自动建立10个UNDO段,通过查询动态信息视图V$ROLLNAME,可以显示所有联机UNDO段的名称,通过查询动态性能视图V$ROLLLISTAT,可以显示UNDO段的统计信息.通过在V$ROLLNAME和V$ROLLLISTAT之间执行连接查询,可以监视特定UNDO段的特定信息.
SELECT a.name, b.xacts, b.writes, b.extents
  FROM v$rollname a, v$rollstat b
 WHERE a.usn = b.usn;

Name用于标识UNDO段的名称,xacts用于标识UNDO段所包含的活动事务个数,
Writes用于标识在undo段上所写入的字节数,extents用于标识UNDO段的区个数.
5,显示活动事务信息.
当执行DML操作时,oracle会将这些操作的旧数据放到UNDO段中,动态性能视图v$session用于显示会话的详细信息,动态性能视图v$transaction用于显示事务的详细信息,动态性能视图v$rollname用于显示联机UNDO段的名称.通过在这3个动态性能视图之间执行连接查询,可以确定正在执行事务操作的会话,事务所使用的UNDO段,以及事务所占用的UNDO块个数.
Col username format a10
Col name format a10
SELECT a.username, b.name, c.used_ublk
  FROM v$session a, v$rollname b, v$transaction c
 WHERE a.saddr = c.ses_addr
   AND b.usn = c.xidusn
   AND a.username = 'SCOTT';

6,显示UNDO区信息
数据字典视图dba_undo_extents用于显示UNDO表空间所有区的详细信息.包括UNDO区尺寸和状态等信息.
SELECT extend_id, bytes, status FROM dba_undo_extents
其中,extent_id用于标识区编号,bytes用于标识区尺寸,status用于标识区状态(ACTIVE:表示该区处于活动状态,EXPIRED:标识该区未用).
分享到:
评论

相关推荐

    管理undo表空间全面分析详解

    oracle 数据库的 undo表空间管理 全面分析介绍

    UNDO表空间管理

    比较深入浅出的描述了基于oracle10g/11g的UNDO表空间的管理

    oracle Undo表空间管理

    oracle Undo表空间管理,oracle 学习人员必看的不可缺少的资料。

    甲骨论-Undo表空间管理

    甲骨论-08-Undo表空间管理 本章详细介绍了undo表空间的工作原理以及与undo相关的数据字典

    如何计算自动管理的UNDO表空间大小

    AUM(自动 undo 管理,Automatic Undo Management)几乎不需要配置。您基本上只需要定义将前映像保持可用的时间量。这是通过参数 UNDO_RETENTION 控制的,以秒为单位定义。因此,值 900 表示 15 分钟。  一定要...

    Oracle 9i数据库中自动Undo表空间管理.pdf

    Oracle 9i数据库中自动Undo表空间管理.pdf

    Oracle 12c中的表空间管理、用户和角色、临时Undo.pdf

    Oracle 12c中的表空间管理、用户和角色、临时Undo

    相克军 ORACLE 讲座 深度剖析UNDO段 笔记.doc

    1 Undo表空间及管理方式 ORACLE开始一个事务的时候,会用到表空间。将修改前的数据保存在UNDO段里。 Undo的三个作用 读的一致性,构造CR块 回滚 实例恢复(时的回滚) --查询UNDO表空间的名字 -----

    Oracle 9i数据库中自动Undo表空间管理 (2005年)

    在Oracle 9i数据库中,用自动Undo管(Automatic Undo Management)代替了以前版本中回退段的手工管理,即使用Undo表空间,并自动管理该表空间,使回退段的管理简单化,主要探讨了Oracle 9i数据库Undo表空间的概念、...

    [Oracle] 解析在没有备份的情况下undo损坏怎么办

    1. 修改undo表空间管理为手动;2. 设置隐藏参数(_offline_rollback_segments或_corrupted_rollback_segments)标识受影响的回滚段,使Oracle忽略其上的未提交事务;3. 手动删除受影响的回滚段和undo表空间,然后重建...

    【数据库维护】-oracle远程维护程序

    3) 查询UNDO表空间状态及UNDO使用信息。 4) 查询当前节点当前时间数据库等待时间。 5) 获取表空间使用信息。 6) 获取SQL在内存中的执行计划。 7) 获取SQL语句中绑定变量的信息。 8) 查询REDO日志切换速度。 9...

    Oracle11g体系结构深入剖析和运维管理(四)

    资源名称:Oracle 11g体系结构深入剖析和运维管理(四)资源目录:【】28_存储结构_段区块【】29_检查点队列...34_undo表空间概述【】35_undo段及区的 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    SQL&PL SQL FAQ第二版

    6.怎么样在管理自动undo表空间 7.怎么样管理临时表空间与临时文件 8.怎么样管理分区表与分区索引 9.怎么样管理LOB字段 10.怎么样解除分布式事务的挂起 11.怎么样管理表空间与数据文件 12.怎么样管理联机日志...

    Oracle11g体系结构深入剖析和运维管理(五)

    资源名称:Oracle 11g体系结构深入剖析和运维管理(五)资源目录:【】37_深入剖析事务槽及Oracle多种提交方式【】38_OracleIMU及RedoPrivateStrands技术【】39_读一致性(ORA-01555错误机制分析)及Undo表空间大小设置...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    目录 推荐序 前言 第1章 认识Oracle RAC ...15.3.6 UNDO表空间的调整 15.4应用系统 15.4.1应用拆分 15.4.2 SQL执行过程 15.4.3 SQL解析 15.4.4 SQL优化 15.4.5 SQL行源生成 15.4.6 SQL执行 15.5本章小结

    Oracle数据库自带表空间的详细说明

    需要整理现场用户创建的表空间以及其存储数据,进行规范化管理。在整理用户现场建立的表空间时,需要排除掉非用户创建的表空间,所有首先需要那些表空间是用户创建的,那些是Oracle自带的。 本机测试建立一个新库,...

    Oracle数据库中表空间的基本管理操作小结

    管理表空间  -system 存放数据字典信息,必须的,创建数据库时第一个创建  -sysaux 10g新,必须的,辅助分担system的负荷,系统管理如oem等三方工具等  -undo 存储回滚段信息,提供事务回滚功能  -temp 存放...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    10-11 自动回滚管理:改变和 UNDO 表空间 10-12 自动回滚管理:转换 UNDO 表空间 10-13 自动回滚管理:删除一个 UNDO 表空间 10-14 自动回滚管理:其它参数 10-15 回滚数据的状态 10-16 自动回滚管理:调整 UNDO 表...

    Oracle 9i中自动撤销管理的优点分析

    自动撤销管理允许DBA指定撤销信息在提交之后需要保留的时间,以防止 在长时间的查询过程中出现“snapshot too old”的错误。...无需定义和管理回滚段,你就可以简单地指定一个撤销表空间而减轻Oracle9i的负担。

Global site tag (gtag.js) - Google Analytics