题目 部分

在Oracle中,Undo段中区3种状态分别是什么?

答案部分

Undo信息存储在Undo段中,Undo段又存储在Undo表空间中。Undo表空间仅用于Undo段(在Undo表空间中不能创建其它段类型,例如表、索引等),只能与单个实例相关联。在任意指定时间,一个给定的实例只能有一个表空间是当前可写Undo表空间。Undo表空间是永久的、本地管理的表空间(具有自动区分配),它们由数据库自动进行管理。

Redo和Undo可以从以下几个方面进行区分:

Undo

Redo

记录内容

如何还原更改

如何重新生成更改

用于

事务回滚、实例恢复、一致性读、闪回

向前滚动数据库更改,例如数据库恢复(在实例恢复中利用Redo做前滚;在介质恢复中利用归档日志做RECOVER恢复操作实现完全或不完全恢复)、LogMiner、DG、OGG等

存储于

Undo段

Redo日志文件

避免

在多用户系统中读取不一致

数据丢失

Oracle Undo段中区3种状态(DBA_UNDO_EXTENTS的STATUS列):ACTIVE、EXPIRED和UNEXPIRED:

l ACTIVE即未提交的Undo信息(活动):表示事物还在活动,该值对应的Undo段的DBA_ROLLBACK_SEGS.STATUS一定是ONLINE状态,一旦没有活动的事务在使用Undo段,那么对应的Undo段就变成OFFLINE状态。ACTIVE状态的Undo区不会被覆盖。

l EXPIRED即过期的Undo信息(过期):表示事务已经提交且超过了UNDO_RETENTION指定时间,该状态可以被覆盖使用。

l UNEXPIRED即提交的Undo信息(未过期):表示事务已经提交但是还没有超过UNDO_RETENTION指定时间,该状态可以被覆盖使用。

关于Undo表空间有如下几个参数:

1SYS@orclasm > show parameter undo
2
3NAME                                 TYPE        VALUE
4------------------------------------ ----------- ------------------------------
5_undo_autotune                       boolean     FALSE
6undo_management                      string      AUTO
7undo_retention                       integer     900
8undo_tablespace                      string      UNDOTBS1

l UNDO_RETENTION参数指定已提交的Undo信息要保留多长时间(单位为秒),默认为900秒(即15分钟)。但是该值不是绝对的,也就是说,如果有其它事务需要Undo空间,而Undo空间出现不足时,这些信息仍然会被覆盖。只有当表空间设置为GUARANTEE时,才能确保已提交的数据保留UNDO_RETENTION参数设置的时间。RETENTION GUARANTEE是表空间属性而不是初始化参数,此属性只可使用SQL命令行语句来更改。通过更改Undo表空间来保证保留时间的语法是:

1SQL>ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;

要将有保留时间保证的还原表空间返回到其常规设置,请使用以下命令:

1SQL>ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;

查询保留时间状态:

1SQL> SELECT RETENTION FROM DBA_TABLESPACES WHERE TABLESPACE_NAME LIKE 'UNDO%';

如果设置UNDO_RETENTION为0,那么Oracle启用自动调整UNDO_RETENTION(auto tuning of undo_retention)以满足最长运行查询的需要,在告警日志文件中可以看到如下信息:

1Autotune of undo retention is turned on.

可以通过设置“"_undo_autotune"=FALSE”来显式的关闭自动调整UNDO_RETENTION功能。

l UNDO_MANAGEMENT参数用于指定Undo数据的管理方式,分为自动Undo管理(AUM,Automatic Undo Management)和手动Undo管理(MUM,Manual Undo Management)。如果要使用AUM,那么必须设置为AUTO;如果要使用MUM,那么必须设置为MANUAL。在使用AUM时,Oracle会使用Undo表空间管理Undo数据;在使用MUM时,Oracle会使用回滚段管理Undo数据。需要注意的是,在使用AUM时,如果没有配置初始化参数UNDO_TABLESPACE,那么Oracle会自动选择第一个可用的Undo表空间存放Undo数据,如果没有可用的Undo表空间,那么Oracle会使用SYSTEM回滚段存放Undo记录,并在告警文件中记录警告。

l UNDO_TABLESPACE 在使用AUM时,该参数用于指定实例所要使用的Undo表空间。在RAC结构中,因为一个Undo表空间不能由多个实例同时使用,所以必须为每个实例配置一个独立的Undo表空间。

有关Undo表空间的恢复请参考:http://blog.itpub.net/26736162/viewspace-1458787/,这里不再详述。有关Undo表空间常用的几个视图如下所示:

 1SELECT OWNER,SEGMENT_NAME,BYTES/1024/1024 MB FROM DBA_SEGMENTS WHERE TABLESPACE_NAME='UNDOTBS1';2SELECT * FROM DBA_ROLLBACK_SEGS;3SELECT * FROM V$ROLLNAME;4SELECT * FROM DBA_UNDO_EXTENTS;56SELECT TABLESPACE_NAME, STATUS, SUM(BYTES) / 1024 / 1024 "Bytes(M)"7  FROM DBA_UNDO_EXTENTS8 GROUP BY TABLESPACE_NAME, STATUS;9
10SELECT R.STATUS "Status",
11       R.SEGMENT_NAME "Name",
12       R.TABLESPACE_NAME "Tablespace",
13       S.EXTENTS "Extents",
14       TO_CHAR((S.BYTES / 1024 / 1024), '99999990.000') "Size"
15FROM   SYS.DBA_ROLLBACK_SEGS R,
16       SYS.DBA_SEGMENTS      S
17WHERE  R.SEGMENT_NAME = S.SEGMENT_NAME
18AND    S.SEGMENT_TYPE IN ('ROLLBACK', 'TYPE2 UNDO')
19ORDER  BY 5 DESC;
20
21SELECT R.NAME 回滚段名,
22       S.SID SID,
23       S.SERIAL# SERIAL,
24       S.USERNAME 用户名,
25       S.MACHINE 机器名,
26       T.START_TIME 开始时间,
27       T.STATUS 状态,
28       T.USED_UBLK 撤消块,
29       USED_UREC 撤消记录,
30       T.CR_GET 一致性取,
31       T.CR_CHANGE 一致性变化,
32       T.LOG_IO "逻辑I/O",
33       T.PHY_IO "物理I/O",
34       T.NOUNDO NOUNDO,
35       G.EXTENTS EXTENTS,
36       SUBSTR(S.PROGRAM, 1, 50) 操作程序
37FROM   V$SESSION     S,
38       V$TRANSACTION T,
39       V$ROLLNAME    R,
40       V$ROLLSTAT    G
41WHERE  T.ADDR = S.TADDR
42AND    T.XIDUSN = R.USN
43AND    R.USN = G.USN
44ORDER  BY T.USED_UBLK DESC;

(二)系统回滚段(System Rollback Segment)与延迟回滚段(Deferred Rollback Segment)

SYSTEM回滚段创建在系统表空间中,当手工创建数据库后,在创建普通回滚段之前必须首先创建系统回滚段。但正常情况下,系统回滚段主要用于两个方面:一是系统事务,另一个就是延迟回滚段。延迟回滚段表示的是,当使一个表空间OFFLINE之后,由于表空间不可用(不能进行读写),这个时候若有事务数据位于该表空间并且执行了回滚命令,回滚完成将显示给Client,对于Client看起来该事务已经回滚,但是对于数据库来说该回滚并没有真正完成,这个时候数据库将该回滚信息写入系统回滚段(这就是延迟回滚段),等表空间重新ONLINE的时候,数据库从系统回滚段中将回滚信息写入表空间。

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

---------------优质麦课------------

详细内容可以添加麦老师微信或QQ私聊。

About Me:小麦苗

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● QQ:646634621  QQ群:618766405

● 提供OCP、OCM和高可用部分最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

DBA宝典

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。

【DB笔试面试682】在Oracle中,Undo段中区3种状态分别是什么(Undo表空间系列)?...相关推荐

  1. 【DB笔试面试164】在Oracle中,如何彻底停止expdp数据泵进程?

    [DB笔试面试164]在Oracle中,如何彻底停止expdp数据泵进程? 真题1. 如何彻底停止 expdp 进程? 答案:许多同事在使用expdp命令时,不小心按了CTRL+C组合键,然后又输入e ...

  2. Oracle表空间系列

    1.查询所有表的数据量(行数) select b.table_name,b.num_rows from user_tables b; 2.--查询表空间使用情况 SELECT UPPER(F.TABL ...

  3. java将一个整数按字节输出_在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解。其他的三种类型如下:1、...

    在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解. 其他的三种类型如下: 1. 基本类型:short 二进制位数:16 ...

  4. 【DB笔试面试594】在Oracle中,关键字NOLOGGING、APPEND和PARALLEL提高DML性能方面有什么差别?...

    ♣题目部分 在Oracle中,关键字NOLOGGING.APPEND和PARALLEL提高DML性能方面有什么差别? ♣答案部分 众所周知,表模式(LOGGING/NOLOGGING).插入模式(AP ...

  5. 【DB笔试面试604】在Oracle中,存储概要(Stored Outline)的作用是什么?

    ♣题目 部分 在Oracle中,存储概要(Stored Outline)的作用是什么? ♣答案部分 OUTLINE的原理是将调好的执行计划(一系列的Hint)保存起来,然后使用该效率高的执行计划替换之 ...

  6. 【DB笔试面试592】在Oracle中,表和表之间的关联方式有哪几种?

    ♣题目 部分 在Oracle中,表和表之间的关联方式有哪几种? ♣答案部分 目前为止,无论连接操作符如何,典型的连接类型共有3种: ① 排序合并连接(Sort Merge Join,简称SMJ),Or ...

  7. 【DB笔试面试593】在Oracle中,表的访问方式有哪几种?

    ♣题目 部分 在Oracle中,表的访问方式有哪几种? ♣答案部分 访问表的方式也叫优化器访问路径,主要有3种访问路径:全表扫描(FULL TABLE SCAN,FTS).索引扫描(INDEX SCA ...

  8. 【DB笔试面试733】在Oracle中,RAC中REMOTE_LISTENER的作用是什么?

    ♣ 题目部分 在Oracle中,RAC中REMOTE_LISTENER的作用是什么? ♣ 答案部分 REMOTE_LISTENER参数主要用于RAC环境中监听器的远程注册,监听器的远程注册主要用于实现 ...

  9. 【DB笔试面试639】在Oracle中,什么是多列统计信息(Extended Statistics)?

    ♣ 题目部分 在Oracle中,什么是多列统计信息(Extended Statistics)? ♣ 答案部分 Oracle优化器对于基数值的估算是否准确关系到能否生成最优的执行计划,而基数值估算的准确 ...

最新文章

  1. linux c语言文件拷贝_linux - 远程拷贝文件之scp
  2. 斯坦科维奇洲际篮球冠军杯
  3. 判断一个无符号整数是不是2的幂
  4. python numpy Quickstart tutorial之set_printoptions
  5. 【面试 redis】【第十二篇】redis的相关面试问题【完结】
  6. Mac基础设置—应用程序
  7. 产品类别二级分类_医疗器械分类目录未来可能实施动态调整
  8. 双系统卸载ubuntu后开机进入grub界面的解决方案
  9. 颜色模式,tiff,rgb2cmyk
  10. JS 中删除节点的两个方法
  11. 洛谷 P2119 魔法阵
  12. 如何用工具自动修复数字IC后端设计实现绕线后的Physical DRC_
  13. 在hb中html怎么插图片,WKWebView加载HTML文本(图片自适应)
  14. 学计算机文理不分,新高考文理不分科怎么上课 文理不分科还分班吗
  15. pyqt win32发送QQ消息
  16. Liunx磁盘管理——LVM
  17. 期货中的期什么意思(期货什么意思是什么)
  18. android zuk彩蛋,联想ZUK Z2你真的会玩吗?来看U-Touch 2.0的那些小彩蛋
  19. 教育部发布2013年全国教育事业发展统计公报
  20. Java double转long方法

热门文章

  1. [python] 类 - 面向对象的编程
  2. 流媒体服务器搭建亲测有效(srs)
  3. 升级你的APP,让你的旗舰设备支持更高的长宽比
  4. 学习使用jquery控制select下拉选项的字体样式
  5. 联邦学习:按Dirichlet分布划分Non-IID样本
  6. 状态同步和帧同步 PVP与PVE
  7. 2022-2028全球与中国氧化铝抛光市场现状及未来发展趋势
  8. MATLAB中利用awgn加噪
  9. 十、列属性、主键、自动增长、唯一键
  10. HTML、CSS 和 JavaScript-----网页三剑客