zoukankan      html  css  js  c++  java
  • Oracle UNDO表空间的管理

    Oracle UNDO表空间的管理

    UNDO表空间的管理是Oracle DBA最重要的日常工作之一,UNDO表空间用来暂时存储DML操作的数据,其主要作用有:
    1、事务回滚
    2、实例恢复
    3、读一致性
    4、闪回
     
    下面是对UNDO表空间的一些操作
     
    1、查看某个实例都有哪些表空间:select tablespace_name, contents from dba_tablespaces where contents = 'UNDO';
     
    我们也可以用show parameter undo_tablespace名称查看,此命令只能查看当前默认UNDO表空间:
     
    当然,我们也可以查看表空间及其对应的数据文件:select substr(file_name,1,60) UNDO_FILES from dba_data_files where tablespace_name = 'UNDOTBS1' order by 1;
     
    查看UNDO表空间的大小、可用空间:
    select * from (select
         a.tablespace_name,
         sum(a.bytes)/(1024*1024) total_space_MB,
         round(b.free,2) Free_space_MB,
         round(b.free/(sum(a.bytes)/(1024*1024))* 100,2) percent_free
        from dba_data_files a,
         (select tablespace_name,sum(bytes)/(1024*1024) free  from dba_free_space
         group by tablespace_name) b
       where a.tablespace_name = b.tablespace_name(+)
         group by a.tablespace_name,b.free)
     where tablespace_name = 'UNDOTBS1';
     
    2、创建UNDO表空间:
    create undo tablespace undotbs3 datafile '/data1/oradata/undotbs03_1.dbf' size 100M autoextend on next 20M maxsize 500M;
     
    上面命令中,指定UNDO表空间名称、对应数据文件、初始大小、自动扩展、每次扩展大小、最大扩展到多大
     
    给UNDO表空间增加数据文件:
    ALTER TABLESPACE UNDOTBS3 ADD DATAFILE ''/data1/oradata/undotbs03_2.dbf' SIZE 1024M AUTOEXTEND ON NEXT 100M MAXSIZE 2048M;
     
    3、切换默认UNDO表空间:
    alter system set undo_tablespace = UNDOTBS3;
     
    4、删除不用的UNDO表空间:
     
    首先查找都有哪些UNDO表空间及其名字;
    然后查找默认UNDO表空间;
    之后查找要删除的UNDO表空间的数据文件;
    删除不用的UNDO表空间:drop tablespace UNDOTBS2;
     
    这还不算完,在数据库中删除表空间后,其数据文件还在物理磁盘上存在,需要删除:
     
    5、我们可以通过dba_undo_extents查看UNDO表空间的状态:
     
    其中STATUS的状态有三个:UNEXPIRED、EXPIRED、ACTIVE
    ACTIVE说明此时有大量的DML操作在写UNDO,UNEXPIRED状态是由ACTIVE状态的数据转换过来的,至于UNEXPIRED状态何时转换成EXPIRED,这个由当前系统的undo retention决定。
     
    我们也可以通过v$UNDOSTAT来查看详细的UNDO信息:
    SELECT TO_CHAR(BEGIN_TIME, 'MM/DD/YYYY HH24:MI:SS') BEGIN_TIME,TO_CHAR(END_TIME, 'MM/DD/YYYY HH24:MI:SS') ND_TIME,
    UNDOTSN, UNDOBLKS, TXNCOUNT, MAXCONCURRENCY AS "MAXCON" FROM v$UNDOSTAT WHERE rownum <= 100;
     
    上面各列中:
    BEGIN_TIME表示每条记录UNDO事务开始的时间
    END_TIMEE表示每条记录UNDO事务结束的时间
    上面每条记录的间隔是10分钟
    UNDOTSN 在这段时间undo事务的数量
    UNDOBLKS在这段时间占用的undo块的数量
    TXNCOUNT事务的总数量
    MAXCON这些UNDO事务过程中的最大数据库连接数
     
    6、更改UNDO RETENTION
    alter system set UNDO_RETENTION = 1800;
     
    7、涉及到UNDO表空间的系统表:
        V$UNDOSTAT
        V$ROLLSTAT
        V$TRANSACTION
        DBA_UNDO_EXTENTS
        WRH$_UNDOSTAT
        WRH$_ROLLSTAT
  • 相关阅读:
    cocos2d 中判断CGPoint或者CGSize是否相等
    object-c cocos2d-x 写程序时注意调试的技巧
    object-c [self class] 和 [self _cmd]
    object-c 协议和委托
    ios cocos2d TexturePacker生成文件后的使用方法
    object-c 要理解协议的几个重要概念
    Linux Mint 没有 language support 语言支持解决方案
    cocos2d ARCH_OPTIMAL_PARTICLE_SYSTEM这个未定义的问题
    CCSpriteBatchNode的优化性能
    Codeforces Round #190 DIV.2 A. Ciel and Dancing
  • 原文地址:https://www.cnblogs.com/quss/p/15220669.html
Copyright © 2011-2022 走看看