UNDO表空间又称为,回滚表空间,撤销表空间。Undo segment保存在UNDO 表空间,一个数据库可以有多个UNDO表空间,但是在同一时刻中,只能使用同一个UNDO表空间。

一、UNDO表空间的作用和机制

对于DML语句,只要修改了数据块,Oracle就会把原来修改前的数据块保留下来,存储在Undo segment (回滚段),当执行rollback操作时,把原先的数据重新覆盖回来。回滚段存放在UNDO表空间中。UNDO表空间的管理分为手动管理和自动管理。在11g中默认是采用自动管理模式。

UNDO的作用:把原来修改前的数据块保留下来。主要用于 一致性读,回滚事务,实例恢复。

一致性读的例子:用户 A 执行一个SQL查询操作select * from salary_tbl .需要1分钟。此时用户B执行了

update salary_tbl set salary=2000 where salary = 1000; 那么用户A查询的数据  salary 是1000 而不是2000,当前时刻查询的数据。如果UNDO表空间大小不足会把UNDO的空间进行覆盖,此时查询原来的数据就查询不到了,此时报ORA-1555错误:snapshoot too old

数据库coredown后的实例恢复:是在 SMON进程完成前滚并打开数据库以后发生,SMON进程回去查看UNDO SEGMENT第一个数据块中记录的事务表,在数据库宕机时将没有提交也没有回滚的事物全部回滚。

undo_retention :为UNDO块中的属性,决定了undo块中的数据至少保存多少秒。例如一个100秒的查询,undo_retention为50。如果在UNDO空间不足的情况下会优先重置过期的数据。如果没重置则还可以查询,如果重置了数据,那么此时100秒的查询操作就会报ORA-1555错误。

retention garentee : 为UNDO块中的属性,10g开始的新特性。确保 UNDO段中的数据未到 undo_retention 绝不会被覆盖。

所以利用UNDO表空间的优先顺序是: 空undo数据块 >undo_retention 到期的数据块 >未设置retention garentee的数据块 >报错

二、UNDO表空间的相关操作

查询表空间select * from dba_tablespaces. 。 只要字段  CONTENTS的值是UNDO 就是UNDO表空间 ,

查看UNDO表空间管理方式  : >>  show parameter undo_management

创建UNDO表空间:

create undo tablespace temp2 tempfile
'D:\ORACLE\ORADATA\ORCL\undo2_01.dbf' size 10m autoextend on;

给表空间分配临时文件: alter tablespace <spacesname> add tempfile '<路径/文件名.dbf>' size  [100m] autoextend on ;

查看默认UNDO表空间:    show parameter undo

系统默认UNDO表空间切换 alter system  set undo_tablespace = '<spacesname>';

启用[取消] retention garentee: alter tablespace <spacename> retention [ [garentee]  or [nogarentee] ];

查询 retention garentee 状态: select tablespace_name,a.retention from dba_tablespaces a ;

更改undo_retention :  alter system set undo_retention   =1000;

查询UNDO 表空间使用情况 : select * from v$undostat ;  (UNDOBLKS 使用的数据块   TXNCOUNT 事物数  BEGIN_TIME 和END_TIME UNDO生效时间和结束时间)

三、11g 的UNDO表空间的新特性

RMAN备份恢复UNDO表空间:是一个关于UNDO表空间的备份优化,在11g之前,都是自动把UNDO表空间的所有进行备份。现实的生产环境中,UNDO表空间的历史数据都是十分庞大的,备份用不上的数据不紧占空间,而且影响执行效率。RMAM备份:已经提交数据就不需要再备份了 。

Oracle 原理:UNDO表空间相关推荐

  1. oracle 10g磁盘管理,Oracle 10g UNDO表空间过大导致磁盘空间不足的解决

    在Oracle 10g数据库的应用中,出现了UNDO表空间过大导致磁盘空间不足而崩溃的现象(ORA-30036: unable to extend segment by 8 in undo table ...

  2. [Oracle]理解undo表空间

    [Oracle]理解undo表空间 一.回退段介绍 在Oracle数据库中,当某个事物对数据进行修改时,Oracle首先将数据的原始值保存到一个回退段中.一个事物只能将它的回退信息保存到一个回退段中, ...

  3. oracle 10g undo 管理,Oracle 10g undo表空间管理

    一.oracle 9i起,有两种undo管理方式:AUM Automatic Undo ManagementMUN Manual Undo Management建议使用 AUM ,下面只讨论AUM 一 ...

  4. oracle迁移undo表空间,oracle切换undo表空间

    Oracle里的回滚表空间在数据库使用一段时间后,undo表空间的dbf文件往往会增长到比较大,这个时候我们需要切换undo表空间 1.新建undo表空间 SQL> create undo ta ...

  5. oracle的undo表空间不足,undo表空间不足,ORA-30036 unable to extend segment by ...

    一.一次更新或者删除大量数据,这些数据需要保存在undo表空间中(直到提交或回滚后这些undo表空间中的数据才允许被覆盖),如果undo表空间不足,就会报ORA-30036错误. 下面是两种解决办法: ...

  6. Oracle undo 表空间管理

    Oracle 的Undo有两种方式: 一是使用undo 表空间,二是使用回滚段. 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要 ...

  7. 万答#18,MySQL8.0 如何快速回收膨胀的UNDO表空间

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 背 ...

  8. Oracle undo表空间

    一.回滚段的介绍 在Oracle数据库中,当某个事务对数据库进行修改时,Oracle首先将数据库的原始值保存到一个回退段中,一个事务只能将它的信息保存到一个回滚段中,而多个并行事务可以使用同一个回滚段 ...

  9. Oracle undo表空间爆满的解决

    1. 启动SQLPLUS,并用sys登陆到数据库. #su - oracle $>sqlplus / as sysdba 2. 查找数据库的UNDO表空间名,确定当前例程正在使用的UNDO表空间 ...

最新文章

  1. makefile学习(转载)
  2. 人工智能和机器学习在治安管理方面意义重大
  3. php 欺骗提交,欺骗PHP整数
  4. 宜信创始人唐宁:技术到处都是,关键看怎么用
  5. 曾经迷茫的起点,多年后终于明白了(续)
  6. C++使用StringPiece减少string类的拷贝
  7. Express全系列教程之(五):Express的中间件
  8. 在Linux系统中,使用useradd命令新建用户后,登录该用户时shell开头为$,不显示用户名和路径,如下:...
  9. js 自定义getClass函数实现获取dom的class 兼容火狐ie
  10. 记账系统推荐金蝶精斗云_金蝶精斗云好用的免费的财务做账软件有哪些?
  11. 深入浅出学大数据(一)大数据发展历程及大数据的简单介绍
  12. excel常用功能记录(不断更新)
  13. 用3DMAX制作《滚动的小球》
  14. vue在开发环境怎么兼容ie_vue 配置兼容ie浏览器
  15. 推荐系统 AB 测试
  16. 【毕业设计】46-基于单片机的智能卫浴系统设计(原理图工程+仿真工程+源代码+答辩论文+答辩PPT)
  17. html设置鼠标指针形状为食指,cursor 把鼠标指针的形状弄成一只伸出食指的手
  18. java计算机毕业设计网上花店源码+系统+mysql数据库+LW文档+部署文件
  19. 操作系统——可变分区空闲空间管理
  20. DRAM的一些电压参数VDD VDDQ VPP剖析

热门文章

  1. angular之表单
  2. mysql 联合索引详解
  3. Unity3D脚本中文系列教程(五)
  4. REST框架的问题--备忘
  5. 【opencv系列03】OpenCV4.X视频捕获与显示
  6. PolarMask:单阶段实例分割框架,FCOS进阶!
  7. Netty 框架学习(二):Netty粘包和拆包
  8. go mod的使用细节
  9. vue全局组件与局部组件
  10. 【收藏】Zeppelin与Linkis、Scriptis的实践对比