undo segments的extents 的状态共有四种,free ,active , inacitve, expired  
SQL> select SEGMENT_NAME,TABLESPACE_NAME,STATUS from  dba_undo_extents;

SEGMENT_NAME                  TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ---------
_SYSSMU10_3534552179$          UNDOTBS1                      EXPIRED
_SYSSMU10_3534552179$          UNDOTBS1                      EXPIRED
_SYSSMU10_3534552179$          UNDOTBS1                      UNEXPIRED
_SYSSMU10_3534552179$          UNDOTBS1                      EXPIRED
_SYSSMU10_3534552179$          UNDOTBS1                      EXPIRED
_SYSSMU10_3534552179$          UNDOTBS1                      EXPIRED
_SYSSMU9_3683992930$          UNDOTBS1                      EXPIRED
_SYSSMU9_3683992930$          UNDOTBS1                      EXPIRED
_SYSSMU9_3683992930$          UNDOTBS1                      EXPIRED

1)free:没有分配给任何一个段
    2)active:区中有事务没有提交
    3)inactive:区中的事务提交了但是还没有达到  undo_retention 的时间
    4)expired:事务提交而且达到了undo_retention
    注:我们可以通过设定undo_retention来保住inactive的区,若没有free,则自动扩展;若扩展不了,则优先使用expired;若还不够,则就会使用inactive,但如果此时retention是guarantee保证的(也就是ALTER TABLESPACE undotbs1 RETENTION GUARANTEE),则无法使用inactive,会报ORA-30036。
小结 :如果你倾向于保证数据一致性,也就是专注于查询,那么你有必要通过ALTER TABLESPACE undotbs1 RETENTION GUARANTEE,来保证一致性,也就是不管你空间够不够用,你都不可以使用inactive状态的区,这样就有可能导致由于没有可用的undo空间而导致数据库hang住,但是这样你可以保证查询语句执行时间在  undo_retention值 之内的所有查询 的一致性。如果你的业务倾向于事务,你可以不去设置  RETENTION GUARANTEE,这样当没有可用的undo空间时,可以去覆盖inactive状态的区,这样就有可能报错ora-01555,不能一致读了,因为你的undo_retention 值是通过咨询你们当前业务的查询语句执行时间最长的那个时间来确定的,也就是说undo_retention > sql执行最长时间,因此你使用不使用GUARANTEE取决于你业务的需求。

undo管理的更多相关文章

  1. mysql原理~undo管理

    一 简介:undo管理 二 各版本说明 1 5.5     undo位置:默认ibdata1中,不支持独立表空间   缺点:大事务可能造成ibdata1暴涨,只能dump导出导入或者从新搭建  参数: ...

  2. 主说明:自动Undo管理的故障排除指南(Doc ID 1579081.1)

    Master Note: Troubleshooting guide for Automatic Undo Management (Doc ID 1579081.1) APPLIES TO: Orac ...

  3. 监控和管理Oracle UNDO表空间的使用

    对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定):UNDO表空间是用于存储DM ...

  4. Oracle undo 表空间管理 (摘DAVID)

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

  5. 【转】ORACLE的REDO与UNDO

    一.什么是redo?redo:oracle在在线或者归档重做日志文件中的记录的信息,外以出现失败时可以利用这些数据来"重放"事务.每个oracle数据都至少有二个在线重做日志组,每 ...

  6. 09 redo and undo

    本章提要-----------------------------------------------redo, undo 定义redo, undo 如何工作如何访问 redo, undo提交和回滚- ...

  7. Oracle数据库 ORA-01555 快照过旧 (undo表空间:撤销表空间)

    UNDO表空间用于存放UNDO数据,当执行DML操作时,oracle会将这些操作的旧数据写入到UNDO段,以保证可以回滚或者一致读等,而临时表空间主要用来做查询和存放一些缓冲区数据.你听说UNDO也是 ...

  8. undo表空间

    undo表空间undo表空间的管理,主要包括创建.删除.修改.切换.其中需要注意的是不能在undo表空间创建数据库对象,还有就是只能是单文件或大文件表空间. 创建创建主要有两种方法,一种是在创建数据库 ...

  9. UNDO(二)

    Managing Undo Beginning with Release 11g, for a default installation, Oracle Database automatically ...

随机推荐

  1. 详解微信小程序支付流程

    转发博主 https://blog.csdn.net/qq_38378384/article/details/80882980 花了几天把小程序的支付模块接口写了一下,可能有着公众号开发的一点经验,没 ...

  2. Mac--PHP已经开启gd扩展验证码不显示

    错误显示:Call to undefined function imagettftext() 原因: mac系统中自带的php的gd库中,缺少对freetype的支持,导致图片无法显示. 解决: 1 ...

  3. [Python3 填坑] 012 字典的遍历在 Python2 与 Python3 中区别

    目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 Python2 中字典的遍历 2.2 Python3 中字典的遍历 2.3 结论 1. print( 坑的信息 ) 挖坑时间:2019/ ...

  4. [2019杭电多校第六场][hdu6641]TDL

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6641 题意为求出最小的n,满足(f(n,m)-n)^n=k,其中f(n,m)为第m大的x,其中x满足g ...

  5. [SPOJ]Count on a tree II(树上莫队)

    树上莫队模板题. 使用欧拉序将树上路径转化为普通区间. 之后莫队维护即可.不要忘记特判LCA #include<iostream> #include<cstdio> #incl ...

  6. day16 django 笔记

    一 jQuery是什么? [1]   jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. [2]   jQuery是继prototy ...

  7. spring aop实现数据库的读写分离

    为了减轻数据库的压力,一般会使用数据库主从(master/slave)的方式,但是这种方式会给应用程序带来一定的麻烦,比如说,应用程序如何做到把数据写到master库,而读取数据的时候,从slave库 ...

  8. sftp没有关闭session导致服务器sshd进程未关闭

    项目中需要用Sftp上传下载文件,通过jsch中的sftp实现.代码上了服务器之后,发觉服务器多了很多进程没有被关闭. 连接sftp代码: protected boolean connectToSer ...

  9. es6 promise 结束回调地狱

    promise的三种状态: pending---进行中 fulfiled---执行成功 rejected---执行失败 var promise = new Promise(function(resol ...

  10. Postman初探

    缘起 今天要测试一个新接口,返回值应该是现有6个接口返回值中data.CountNum之和.麻烦处有: 1.用户角色不同,接口返回值也有不同.因此要用到的接口很多. 2.要对所有接口的返回值求和,再与 ...