`
gip666
  • 浏览: 40036 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle undo表空间

 
阅读更多
1说明
   在对数据进行修改时,数据库会生成undo信息,以便回到更改前的状态,这是通过多版本控制支持中实现的,当执行DML操作时,事务操作前数据被称为undo记录如果执行的事务或语句由于某种原因失败了,或者用一条rollback语句请求回滚,就可以利用这些信息将数据放回到修改前的样子。
Undo在数据库中存储子一组特殊的段中,称为undo段。回滚段由范围组成,这个范围由五个或五个以上的oralce块组成。通常对undo有一个误解,认为undo用于将数据库物理的恢复到执行语句或事物之前的样子,但实际上并非如此,数据库只是逻辑的恢复到原来的样子,所有的修改都被逻辑的取消,对于每个操作如insert,回滚后相当于做了delete相反操作。

2 特点及作用
特点:
1、是数据修改前的备份,主要是保护用户的读一致性。
2、在事务修改数据时产生。
3、至少保存到事务结束。

作用:
1、回滚(rollback)操作。
2、实现读一致性与闪回查询。
3、从失败的事务中还原数据。
4、非正常停机后的实例恢复。

3 工作方式
1、在一个回滚段内,以环形方式循环使用,直到段装满,由用户的commit或rollback命令发布后释放回滚段内的范围。
2、同一个undo segment可以存储很多个像前版本,同时,一个像前版本只会存储在一个undo segment而不会因空间等任何问题连续到其他的undo segment。
3、如果一个undo segment中的一个范围启动了一个事物的像前版本,且逐渐增长装满了该范围,此时会环绕到下一个临近的范围继续使用空间,此时如果下一个临近范围已经被其他事物占领,则绝对不会跳过该临近范围而查找其他的可用范围,而是会在这个范围之间创建一个新的范围来使用。
4、一个undo segment能处理事务的个数,取决于oracle块的大小。
5、每个数据库至少有一个回滚段(系统回滚段),一旦创建了其他回滚段,则该回滚段将只用于处理数据目录读一致性和事务控制。
6、Set transaction use riilback segment命令可以申请一个指定的回滚段。
7、LOB列不适用undo segment,而使用创建时分配给表的空间来存储像前版本。

4 优化undo segment
优化目标:
1、用户不用等待,就始终可找到undo segment来使用。
2、用户始终能得到完成事务所需要的读一致性视图。
3、回滚段不会引起过多的I/O。
一般就是;
1、消除对undo segment header或block的争用。
2、尽量最小化undo segment的扩充和环绕。
3、避免undo  segment用尽。
4、始终拥有为用户提供一致性视图的undo segment。
做法:
1、添加更多的undo segment。
2、增大现有undo segment。
3、明确管理大事务undo segment。
4、Undo segment需求最小化。
5、使用自动管理功能。

5 生成undo大小
   如果表存在索引(或者实际上表就是索引组织表),这将显著地影响生成的undo量,因为索引是一种复杂的数据结构,可能会生成相当多的undo信息。
1、insert生成undo最少,oracle所需记录只是删除一个rowid(行ID)。
2、update排名第二(大多数情况下),只需记录修改的字符。
3、delete生成的undo最多,必须把整行的前映像记录到undo中

解决ora-01555办法
1、适当的设置参数undo_retention(要大于执行运行时间最长的事务所需的时间),可以用v$undostat undostat来确定长时间运行的查询的持续时间。另外要确保磁盘上已经预留了足够的空间。
2、使用手动管理undo时增大或增加更多的回滚段。这样在长时间运行的查询语句期间,覆盖undo的数据可能性就能降低。
3、减少查询的运行时间(调优)

6 参数
使用show parameter undo查看undo参数设置。
1、UNDO_MANAGEMENT
值为AUTO是自动管理,MANUAL手动 管理。

2、UNDO_TABLESPACE
指定数据库使用特定的undo表空间。

4、UNDO_RETENTION
保存undo信息的最少时间。
不存在理想的UNDO_RETENTION的时间间隔。保留时间间隔依赖于估计最长的事务可能运行的时间长度。根据数据库中最长事务长度的信息,可以给UNDO_RETENTION分配一个大致的时间。

7 相关SQL语句
1、查看当前用户使用的undo segment大小
select s.osuser,s.username,t.used_ublk
  from v$session s,v$transaction t
     where s.taddr = t.addr;
2、创建undo表空间
create undo tablespace undo02
datafile 'D:\oracle\product\oradata\orcl\un dotbs02.dbf'
size 10M autoextend on next 30G maxsize 500M;
3、修改系统undo表空间
alter system set undo_tablespace='undo02' scope=both;
分享到:
评论

相关推荐

    oracle Undo表空间管理

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

    脚本-Oracle释放过度使用的Undo表空间

    ### 关于Oracle释放过度使用的Undo表空间的知识点 在Oracle数据库管理中,Undo表空间扮演着极其重要的角色。它主要用于存储事务处理过程中产生的Undo记录,这些记录对于事务回滚、一致性读取以及恢复操作至关重要。...

    Oracle的Temp表空间和UNDO表空间的处理

    ### Oracle的Temp表空间与UNDO表空间处理详解 #### 一、Temp表空间处理 在Oracle数据库中,Temp表空间主要用于存储临时对象,如排序、分组等操作产生的临时数据。这些操作可能会导致Temp表空间迅速增大。然而,...

    oracle 收缩undo表空间

    ### Oracle收缩Undo表空间 #### 一、概述 在Oracle数据库管理中,有时需要对Undo表空间进行管理和优化。特别是当Undo表空间因为历史数据积累而变得过大时,可能会影响数据库性能。本文将详细介绍如何通过新建一个...

    收缩Oracle数据库的undo表空间

    演示如何收缩Oracle数据库的undo表空间

    地震前兆Oracle数据库UNDO表空间持续增长修复.pdf

    接着,当日志错误排除后,发现UNDO表空间仍在增长,通过v$transaction视图发现SMON进程(System Monitor进程)在长时间执行事务,消耗大量UNDO空间。尝试通过ALTER SESSION命令结束SMON会话无效,且考虑到数据库安全...

    Oracle中重做undo表空间

    当事务开始时,系统会为事务分配一段undo空间来记录它的更改。当事务提交或回滚时,这些记录的undo信息会根据需要保留一定时间,这个时间段称为UNDO_RETENTION参数定义的保留期。 2. **重做日志与回滚操作** 重做...

    oracle 9i UNDO表空间数据文件丢失恢复

    ### Oracle 9i UNDO 表空间数据文件丢失恢复知识点详解 #### 一、概述 在Oracle数据库管理中,UNDO表空间是非常重要的组成部分之一,主要用于存储事务处理期间的回滚信息。当UNDO表空间的数据文件丢失时,可能会...

    数据库undo表空间问题集锦

    在Oracle数据库系统中,"undo表空间"是一个至关重要的组成部分,它主要负责存储事务的回滚(rollback)信息。本文将深入探讨undo表空间的概念、作用、管理以及常见问题的处理,帮助你全面理解并有效地解决数据库undo...

    ORACLE的UNDO表空间

    ORACLE的UNDO表空间 ORACLE的UNDO表空间是Oracle数据库中一个非常重要的组件,playing a crucial role in maintaining data consistency and providing a way to undo changes made to the database. 在本节中,...

    Oracle临时表空间满的解决步骤

    解决 Oracle 临时表空间满的问题需要通过查看当前数据库的默认临时表空间、查看当前临时表空间的大小、创建新的临时表空间、将新建的临时表空间设置为数据库的默认临时表空间、删除原来的临时表空间、创建新的临时表...

    oracle undo

    undo 段急剧增大是指 undo 段的空间急剧增加,从而导致 undo 表空间的扩展问题。这种问题的原因是由于事务没有提交,或者是undo_retention 时间设置不当,导致 undo 块不能被重用。 解决 undo 段急剧增大问题的方法...

    undo表空间恢复

    标题和描述均提到了“undo表空间恢复”,这在Oracle数据库管理中是一个关键主题,尤其对于数据恢复和事务处理有着重要影响。以下是对这一知识点的深入解析: ### 一、Undo表空间概述 Undo表空间是Oracle数据库中...

    oracle undo详解

    Oracle提供自动Undo管理,通过设置UNDO_MANAGEMENT=AUTO和UNDO_TABLESPACE=UNDOTBS1,数据库将自动处理Undo空间的管理。这样可以减少DBA的维护工作,但仍然需要根据系统负载和事务特性来合理调整Undo表空间的大小,...

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

    在Oracle 12c数据库中,表空间管理、用户和角色、临时Undo是数据库管理的关键组成部分。以下是对这些内容的详细解释和操作方法: 一、创建表空间 在Oracle 12c中,创建表空间主要涉及到声明一个新的逻辑区域,用于...

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

     一定要意识到,如果 undo 表空间中存在空间压力时,我们不保证前镜像一定会保留这么长时间。  因此,以下公式可用于计算佳 undo 表空间大小:  从 Oracle 10g 开始,您可以选择使用 GUARANTEE 选项,以确保在...

    oracle创建表空间用户等

    ### Oracle 创建表空间、用户及分配权限详解 在Oracle数据库管理中,创建表空间和用户是常见的基础操作之一。本文将详细介绍如何在Oracle数据库中创建表空间、创建用户并分配相应的权限,以及如何设置表空间的自...

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

    UNDO表空间用来存放改变前的旧值。里面也有段区块,ORACLE自动建立生成、自动使用UNDO段。 作为高级别的DBA是需要知道ORACLE如何使用UNDO段的。 1 Undo表空间及管理方式 ORACLE开始一个事务的时候,会用到表空间。...

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

    通过对DML语句与undo的关系、undo的作用及其管理方式的深入探讨,我们可以清楚地认识到undo表空间在Oracle数据库中的重要性。无论是提供一致性读、支持事务回滚还是实例恢复,undo表空间都是保证数据完整性和系统...

Global site tag (gtag.js) - Google Analytics