• 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
     
     更多精彩Oracle内容 请关注我:
  • 相关阅读:
    创建类以及引用一个类
    修改hosts文件
    微信第三方登录接口开发
    Android定位
    Leetcode 102. Binary Tree Level Order Traversal
    Leetcode 725. Split Linked List in Parts
    Leetcode 445. Add Two Numbers II
    Leetcode 328. Odd Even Linked List
    Leetcode 237. Delete Node in a Linked List
    Leetcode 234. Palindrome Linked List
  • 原文地址:https://www.cnblogs.com/da605839633/p/5477705.html
Copyright © 2020-2023  润新知