当前位置:  数据库>oracle

undo表空间概述

    来源: 互联网  发布时间:2017-06-14

    本文导语: UNDO的简要概序:    1. 一般的表空间中的段是手动建立的,undo表空间和普通的表空间相似,但是undo表空间中undo段,undo段是自动生成的;Oracle自动使用、维护undo段。2. 一般表空间中的段是我们自己手动使用的,而undo表中的段...

UNDO的简要概序:
   
1. 一般的表空间中的段是手动建立的,undo表空间和普通的表空间相似,但是undo表空间中undo段,undo段是自动生成的;Oracle自动使用、维护undo段。
2. 一般表空间中的段是我们自己手动使用的,而undo表中的段是oracle自动使用的。

show parameter undo_tablespace;//查询当前的undo表空间
NAME                                              TYPE        VALUE                                                                                             
-------------------------------------------------- ----------- ----------------
undo_tablespace                                    string      UNDOTBS1     

select * from v$rollname;//当前有多少段
//下面的段是系统提供的回滚段:
    1. 对数据库对象进行操作的时候,也就是使用数据字典的时,SYSTEM的UNDO段才会使用
    2. 如果undo表空间坏了,可能会使用SYSTEM段
0    SYSTEM
//下面的是存在于 UNDOTBS1中,这下面段是在数据库运行一段时间会自动调整的段
1    _SYSSMU1_3780397527$
2    _SYSSMU2_2232571081$
3    _SYSSMU3_2097677531$
4    _SYSSMU4_1152005954$
5    _SYSSMU5_1527469038$
6    _SYSSMU6_2443381498$
7    _SYSSMU7_3286610060$
8    _SYSSMU8_2012382730$
9    _SYSSMU9_1424341975$
10    _SYSSMU10_3550978943$

select SEGMENT_NAE,BLOCKS,EXTENTS from dba_segments where SEGMENT_NAME='SYSTEM';//在system的表空间中段的大小

SYSTEM    48    6

--UNDO表空间占用空间情况以及数据文件存放位置
    select file_name,bytes/1024/1024 from dba_data_files
    where tablespace_name like '%UNDOTBS%';

/u01/app/oracle/oradata/jiagulun/undotbs01.dbf    90


select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BLOCKS from dba_extents where SEGMENT_NAME='SYSTEM';//段所占的区

SYSTEM    SYSTEM    0    1    128    8
SYSTEM    SYSTEM    1    1    136    8
SYSTEM    SYSTEM    2    1    528    8
SYSTEM    SYSTEM    3    1    536    8
SYSTEM    SYSTEM    4    1    544    8
SYSTEM    SYSTEM    5    1    552    8

select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BLOCKS from dba_extents where SEGMENT_NAME='_SYSSMU7_3286610060$';

_SYSSMU7_3286610060$    UNDOTBS1    0    3    224    8
_SYSSMU7_3286610060$    UNDOTBS1    1    3    232    8
_SYSSMU7_3286610060$    UNDOTBS1    2    3    312    8
_SYSSMU7_3286610060$    UNDOTBS1    3    3    1024    128
_SYSSMU7_3286610060$    UNDOTBS1    4    3    11392    128

通过上面可以看到对于系统的undo段中的区是连续的,而且区中的块也是连续的
但是对于非系统的undo段中的区不是连续的,但是区中的块是连续的

undo表空间的管理方式:在9i以前表空间自动建立,段是自动建立;但是区是手动分区的,这样就会存在一些问题:
    一些比较大的DML语言跑跑就因为undo段够就会出现问题,空间不足。
                在其后就自动分配了,在某些请款下也会自动回收的。
show parameter undo;
NAME                                              TYPE        VALUE                                                                                             
-------------------------------------------------- ----------- ----------------------------------------------------------------------------------------------------
undo_tablespace                                    string      UNDOTBS1                                                                                           
NAME                                              TYPE        VALUE                                                                                             
-------------------------------------------------- ----------- ----------------------------------------------------------------------------------------------------
undo_management                                    string      AUTO                                                                                               
undo_retention                                    integer    900                                                                                               
undo_tablespace                                    string      UNDOTBS1                                                                                           


undo表空间的作用
    1. oracle会在事务开启的时候使用undo:
          在oracle在修改数据的时候,oracle会把被修改的数据放入undo表
          空间的undo段里面。(当修改语句越多,使用的undo段越多)正
          因为保存了被修改的数据,所以undo可以回滚
    2. 保证一个会话读不到另外一个会话未提交的数据,靠undo表空间保存原数据,所以undo保证读一致性
    3. oracle的实例崩溃恢复:前滚,回滚*

Undo段中区的状态
    free:从来没有用过的
    expired:当过了undo_retention时间,oracle会释放。原则expired不会被释放。未测时间
    inactive:表示事务已经提交,但是还没有过undo_retention,原则上是要保留undo_retention时间,但是空间压力比较
              大,可以被覆盖
    active:表示在事务还未提交时,所使用区的状态,不可以被覆盖

undo_retention
    alter tablespace undotbs1 retention guarantee//设置inactive区的数据至少保存undo_retention后才被覆盖
    alter tablespace undotbs1 retention noguarantee

select TABLESPACE_NAME, RETENTION from dba_tablespaces;
SYSTEM    NOT APPLY
SYSAUX    NOT APPLY
UNDOTBS1    GUARANTEE
TEMP    NOT APPLY
USERS    NOT APPLY
EXAMPLE    NOT APPLY

当进行DML时,就会使用FREE空间,当FREE空间不够时就扩undo表空间的,当扩不了时,就使用EXPIRED的,当设置表空间为guarantee时,
就使用不了inactive那么事务就必须挂起。当表空间设置为Noguarantee时就使用inactive,假如inactive使用不够就事务挂起

--------------------------------------------------------------------------------

RMAN备份与恢复之undo表空间丢失

关于Oracle 释放过度使用的undo表空间

Oracle undo的一些理解

Oracle undo 镜像数据探究

Oracle 回滚(ROLLBACK)和撤销(undo)

Linux-6-64下安装Oracle 12C笔记

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

--------------------------------------------------------------------------------


    
 
 

您可能感兴趣的文章:

  • java命名空间javax.swing.undo类stateedit的类成员方法: undo定义及介绍
  • Oracle释放undo表空间
  • java命名空间javax.swing.undo接口undoableedit的类成员方法: undo定义及介绍
  • 如何Shrink Undo表空间,释放过度占用的空间
  • java命名空间javax.swing.undo类undomanager的类成员方法: undo定义及介绍
  • java命名空间javax.swing.undo类abstractundoableedit的类成员方法: undo定义及介绍
  • java命名空间javax.swing.text类defaultstyleddocument.attributeundoableedit的类成员方法: undo定义及介绍
  • java命名空间javax.swing.text类abstractdocument.defaultdocumentevent的类成员方法: undo定义及介绍
  • java命名空间javax.swing.text类abstractdocument.elementedit的类成员方法: undo定义及介绍
  • java命名空间java.awt.event类keyevent的类成员方法: vk_undo定义及介绍
  • java命名空间javax.swing.undo类compoundedit的类成员方法: edits定义及介绍
  • java命名空间javax.swing.undo接口undoableedit的类成员方法: getundopresentationname定义及介绍
  • java命名空间javax.swing.undo类undomanager的类成员方法: edittobeundone定义及介绍
  • java命名空间javax.swing.undo类undomanager的类成员方法: canundoorredo定义及介绍
  • java命名空间javax.swing.undo类undomanager的类成员方法: undoorredo定义及介绍
  • java命名空间javax.swing.undo类stateedit的类成员方法: poststate定义及介绍
  • java命名空间javax.swing.undo类undoableeditsupport的类成员方法: updatelevel定义及介绍
  • java命名空间javax.swing.undo类undoableeditsupport的类成员方法: createcompoundedit定义及介绍
  • java命名空间javax.swing.undo类stateedit的类成员方法: end定义及介绍
  • java命名空间javax.swing.undo类undoableeditsupport的类成员方法: compoundedit定义及介绍
  • java命名空间javax.swing.undo类cannotredoexception的类成员方法: cannotredoexception定义及介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.swing.undo类stateedit的类成员方法: object定义及介绍
  • Oracle 管理Undo数据
  • java命名空间javax.swing.undo类stateedit的类成员方法: prestate定义及介绍
  • semop不使用SEM_UNDO的问题
  • java命名空间javax.swing.undo类undoableeditsupport的类成员方法: beginupdate定义及介绍
  • linux command无法撤消mv命令,在linux下没有undo.刚google下,看到老外说的一句比较经典的话。
  • java命名空间javax.swing.undo类stateedit的类成员方法: rcsid定义及介绍
  • [Oracle] 解析在没有备份的情况下undo损坏怎么办
  • java命名空间javax.swing.undo类undoableeditsupport的类成员方法: getupdatelevel定义及介绍
  • Oracle undo_management参数不一致错误
  • java命名空间javax.swing.undo接口stateeditable的类成员方法: restorestate定义及介绍
  • java命名空间javax.swing.undo类undoableeditsupport的类成员方法: realsource定义及介绍
  • java命名空间javax.swing.undo类undomanager的类成员方法: trimforlimit定义及介绍
  • java命名空间javax.swing.undo接口undoableedit的类成员方法: redo定义及介绍
  • java命名空间javax.swing.undo接口undoableedit的类成员方法: canundo定义及介绍
  • java命名空间javax.swing.undo接口undoableedit的类成员方法: canredo定义及介绍
  • java命名空间javax.swing.undo类abstractundoableedit的类成员方法: replaceedit定义及介绍
  • java命名空间javax.swing.undo类abstractundoableedit的类成员方法: addedit定义及介绍
  • java命名空间javax.swing.undo类compoundedit的类成员方法: lastedit定义及介绍
  • java命名空间javax.swing.undo接口undoableedit的类成员方法: getpresentationname定义及介绍
  • java命名空间javax.swing.undo类undoableeditsupport的类成员方法: endupdate定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,