zoukankan      html  css  js  c++  java
  • Managing Undo Data

    Summary

    • Configuration Automaitc Undo Management
      • 将undo_management设置为auto
      • 设置当前的undo tablespace
    • Create an UNDO tablespace
    • Properly size an UND tablespace
    • Obtain undo segment information

    little demo

    查看一个事务占用了多少undo block?

    SQL> create table t2 as select * from all_objects where 1=0;
    
    Table created.
    
    SQL> select * from t2;
    
    no rows selected
    
    SQL> desc t2;
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     OWNER                                     NOT NULL VARCHAR2(30)
     OBJECT_NAME                               NOT NULL VARCHAR2(30)
     SUBOBJECT_NAME                                     VARCHAR2(30)
     OBJECT_ID                                 NOT NULL NUMBER
     DATA_OBJECT_ID                                     NUMBER
     OBJECT_TYPE                                        VARCHAR2(19)
     CREATED                                   NOT NULL DATE
     LAST_DDL_TIME                             NOT NULL DATE
     TIMESTAMP                                          VARCHAR2(19)
     STATUS                                             VARCHAR2(7)
     TEMPORARY                                          VARCHAR2(1)
     GENERATED                                          VARCHAR2(1)
     SECONDARY                                          VARCHAR2(1)
     NAMESPACE                                 NOT NULL NUMBER
     EDITION_NAME                                       VARCHAR2(30)
    
    SQL> insert into t2 select * from all_objects;
    
    56374 rows created.
    
    SQL> 
    1、创建表及插入测试数据;
    SQL> show user
    USER is "SYS"
    SQL> select addr,used_ublk from v$transaction;
    
    ADDR              USED_UBLK
    ---------------- ----------
    00000000776652E0         28
    
    SQL> 
    查看这个事务占用了多少undo block

    如何设计规划undo表空间的大小?

    SQL> select end_time,begin_time,undoblks from v$undostat;
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/16 13:00:27 2013/07/16 12:51:53        104
    2013/07/16 12:51:53 2013/07/16 12:41:53         14
    2013/07/16 12:41:53 2013/07/16 12:31:53         15
    2013/07/16 12:31:53 2013/07/16 12:21:53         14
    2013/07/16 12:21:53 2013/07/16 12:11:53         17
    2013/07/16 12:11:53 2013/07/16 12:01:53         12
    2013/07/16 12:01:53 2013/07/16 11:51:53        160
    2013/07/16 11:51:53 2013/07/16 11:41:53         13
    2013/07/16 11:41:53 2013/07/16 11:31:53         25
    2013/07/16 11:31:53 2013/07/16 11:21:53         12
    2013/07/16 11:21:53 2013/07/16 11:11:53         17
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/16 11:11:53 2013/07/16 11:01:53         15
    2013/07/16 11:01:53 2013/07/16 10:51:53         97
    2013/07/16 10:51:53 2013/07/16 10:41:53         17
    2013/07/16 10:41:53 2013/07/16 10:31:53         12
    2013/07/16 10:31:53 2013/07/16 10:21:53         15
    2013/07/16 10:21:53 2013/07/16 10:11:53         18
    2013/07/16 10:11:53 2013/07/16 10:01:53         12
    2013/07/16 10:01:53 2013/07/16 09:51:53        121
    2013/07/16 09:51:53 2013/07/16 09:41:53         16
    2013/07/16 09:41:53 2013/07/16 09:31:53         18
    2013/07/16 09:31:53 2013/07/16 09:21:53         19
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/16 09:21:53 2013/07/16 09:11:53         13
    2013/07/16 09:11:53 2013/07/16 09:01:53         18
    2013/07/16 09:01:53 2013/07/16 08:51:53         83
    2013/07/16 08:51:53 2013/07/16 08:41:53         16
    2013/07/16 08:41:53 2013/07/16 08:31:53         14
    2013/07/16 08:31:53 2013/07/16 08:21:53         13
    2013/07/16 08:21:53 2013/07/16 08:11:53         13
    2013/07/16 08:11:53 2013/07/16 08:01:53         11
    2013/07/16 08:01:53 2013/07/16 07:51:53        109
    2013/07/16 07:51:53 2013/07/16 07:41:53         13
    2013/07/16 07:41:53 2013/07/16 07:31:53         14
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/16 07:31:53 2013/07/16 07:21:53         21
    2013/07/16 07:21:53 2013/07/16 07:11:53         14
    2013/07/16 07:11:53 2013/07/16 07:01:53         13
    2013/07/16 07:01:53 2013/07/16 06:51:53         91
    2013/07/16 06:51:53 2013/07/16 06:41:53         12
    2013/07/16 06:41:53 2013/07/16 06:31:53         16
    2013/07/16 06:31:53 2013/07/16 06:21:53         15
    2013/07/16 06:21:53 2013/07/16 06:11:53         16
    2013/07/16 06:11:53 2013/07/16 06:01:53         13
    2013/07/16 06:01:53 2013/07/16 05:51:53        101
    2013/07/16 05:51:53 2013/07/16 05:41:53         13
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/16 05:41:53 2013/07/16 05:31:53         14
    2013/07/16 05:31:53 2013/07/16 05:21:53         18
    2013/07/16 05:21:53 2013/07/16 05:11:53         12
    2013/07/16 05:11:53 2013/07/16 05:01:53         10
    2013/07/16 05:01:53 2013/07/16 04:51:53        111
    2013/07/16 04:51:53 2013/07/16 04:41:53         15
    2013/07/16 04:41:53 2013/07/16 04:31:53         14
    2013/07/16 04:31:53 2013/07/16 04:21:53         12
    2013/07/16 04:21:53 2013/07/16 04:11:53         19
    2013/07/16 04:11:53 2013/07/16 04:01:53         16
    2013/07/16 04:01:53 2013/07/16 03:51:53         92
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/16 03:51:53 2013/07/16 03:41:53         15
    2013/07/16 03:41:53 2013/07/16 03:31:53         14
    2013/07/16 03:31:53 2013/07/16 03:21:53         14
    2013/07/16 03:21:53 2013/07/16 03:11:53         15
    2013/07/16 03:11:53 2013/07/16 03:01:53         15
    2013/07/16 03:01:53 2013/07/16 02:51:53         93
    2013/07/16 02:51:53 2013/07/16 02:41:53         11
    2013/07/16 02:41:53 2013/07/16 02:31:53         17
    2013/07/16 02:31:53 2013/07/16 02:21:53         15
    2013/07/16 02:21:53 2013/07/16 02:11:53         22
    2013/07/16 02:11:53 2013/07/16 02:01:53         12
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/16 02:01:53 2013/07/16 01:51:53        107
    2013/07/16 01:51:53 2013/07/16 01:41:53         13
    2013/07/16 01:41:53 2013/07/16 01:31:53         12
    2013/07/16 01:31:53 2013/07/16 01:21:53         15
    2013/07/16 01:21:53 2013/07/16 01:11:53         14
    2013/07/16 01:11:53 2013/07/16 01:01:53         31
    2013/07/16 01:01:53 2013/07/16 00:51:53        252
    2013/07/16 00:51:53 2013/07/16 00:41:53         15
    2013/07/16 00:41:53 2013/07/16 00:31:53         13
    2013/07/16 00:31:53 2013/07/16 00:21:53         13
    2013/07/16 00:21:53 2013/07/16 00:11:53         16
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/16 00:11:53 2013/07/16 00:01:53         21
    2013/07/16 00:01:53 2013/07/15 23:51:53        110
    2013/07/15 23:51:53 2013/07/15 23:41:53         14
    2013/07/15 23:41:53 2013/07/15 23:31:53         13
    2013/07/15 23:31:53 2013/07/15 23:21:53         18
    2013/07/15 23:21:53 2013/07/15 23:11:53         18
    2013/07/15 23:11:53 2013/07/15 23:01:53         16
    2013/07/15 23:01:53 2013/07/15 22:51:53        118
    2013/07/15 22:51:53 2013/07/15 22:41:53         14
    2013/07/15 22:41:53 2013/07/15 22:31:53         14
    2013/07/15 22:31:53 2013/07/15 22:21:53         19
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/15 22:21:53 2013/07/15 22:11:53         17
    2013/07/15 22:11:53 2013/07/15 22:01:53         28
    2013/07/15 22:01:53 2013/07/15 21:51:53       1253
    2013/07/15 21:51:53 2013/07/15 21:41:53         17
    2013/07/15 21:41:53 2013/07/15 21:31:53         10
    2013/07/15 21:31:53 2013/07/15 21:21:53         13
    2013/07/15 21:21:53 2013/07/15 21:11:53         16
    2013/07/15 21:11:53 2013/07/15 21:01:53         12
    2013/07/15 21:01:53 2013/07/15 20:51:53         89
    2013/07/15 20:51:53 2013/07/15 20:41:53         14
    2013/07/15 20:41:53 2013/07/15 20:31:53         13
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/15 20:31:53 2013/07/15 20:21:53         12
    2013/07/15 20:21:53 2013/07/15 20:11:53         15
    2013/07/15 20:11:53 2013/07/15 20:01:53         14
    2013/07/15 20:01:53 2013/07/15 19:51:53         94
    2013/07/15 19:51:53 2013/07/15 19:41:53         17
    2013/07/15 19:41:53 2013/07/15 19:31:53         13
    2013/07/15 19:31:53 2013/07/15 19:21:53         16
    2013/07/15 19:21:53 2013/07/15 19:11:53         18
    2013/07/15 19:11:53 2013/07/15 19:01:53         14
    2013/07/15 19:01:53 2013/07/15 18:51:53         93
    2013/07/15 18:51:53 2013/07/15 18:41:53         14
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/15 18:41:53 2013/07/15 18:31:53         12
    2013/07/15 18:31:53 2013/07/15 18:21:53         19
    2013/07/15 18:21:53 2013/07/15 18:11:53         16
    2013/07/15 18:11:53 2013/07/15 18:01:53         11
    2013/07/15 18:01:53 2013/07/15 17:51:53         95
    2013/07/15 17:51:53 2013/07/15 17:41:53         12
    2013/07/15 17:41:53 2013/07/15 17:31:53         13
    2013/07/15 17:31:53 2013/07/15 17:21:53         14
    2013/07/15 17:21:53 2013/07/15 17:11:53         14
    2013/07/15 17:11:53 2013/07/15 17:01:53         10
    2013/07/15 17:01:53 2013/07/15 16:51:53        118
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/15 16:51:53 2013/07/15 16:41:53         11
    2013/07/15 16:41:53 2013/07/15 16:31:53         17
    2013/07/15 16:31:53 2013/07/15 16:21:53         16
    2013/07/15 16:21:53 2013/07/15 16:11:53         19
    2013/07/15 16:11:53 2013/07/15 16:01:53         12
    2013/07/15 16:01:53 2013/07/15 15:51:53         92
    2013/07/15 15:51:53 2013/07/15 15:41:53         16
    2013/07/15 15:41:53 2013/07/15 15:31:53         13
    2013/07/15 15:31:53 2013/07/15 15:21:53         13
    2013/07/15 15:21:53 2013/07/15 15:11:53         15
    2013/07/15 15:11:53 2013/07/15 15:01:53         14
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/15 15:01:53 2013/07/15 14:51:53        109
    2013/07/15 14:51:53 2013/07/15 14:41:53         14
    2013/07/15 14:41:53 2013/07/15 14:31:53         14
    2013/07/15 14:31:53 2013/07/15 14:21:53         12
    2013/07/15 14:21:53 2013/07/15 14:11:53         15
    2013/07/15 14:11:53 2013/07/15 14:01:53         12
    2013/07/15 14:01:53 2013/07/15 13:51:53         94
    2013/07/15 13:51:53 2013/07/15 13:41:53         18
    2013/07/15 13:41:53 2013/07/15 13:31:53         12
    2013/07/15 13:31:53 2013/07/15 13:21:53         17
    2013/07/15 13:21:53 2013/07/15 13:11:53         14
    
    END_TIME            BEGIN_TIME            UNDOBLKS
    ------------------- ------------------- ----------
    2013/07/15 13:11:53 2013/07/15 13:01:53         12
    2013/07/15 13:01:53 2013/07/15 12:51:53        101
    2013/07/15 12:51:53 2013/07/15 12:41:53         16
    2013/07/15 12:41:53 2013/07/15 12:31:53         12
    2013/07/15 12:31:53 2013/07/15 12:21:53         15
    2013/07/15 12:21:53 2013/07/15 12:11:53         16
    2013/07/15 12:11:53 2013/07/15 12:01:53         87
    2013/07/15 12:01:53 2013/07/15 11:51:53         22
    
    151 rows selected.
    
    SQL> 
    v$undostat视图,记录了undo表空间的历史数据,据此可以设计undo表空间的大小.

    查询undo tablespace

    查看数据库有哪些表空间?

    SQL> select tablespace_name,status,contents from dba_tablespaces;
    
    TABLESPACE_NAME                STATUS    CONTENTS
    ------------------------------ --------- ---------
    SYSTEM                         ONLINE    PERMANENT
    SYSAUX                         ONLINE    PERMANENT
    UNDOTBS1                       ONLINE    UNDO
    TEMP                           ONLINE    TEMPORARY
    USERS                          ONLINE    PERMANENT
    EXAMPLE                        ONLINE    PERMANENT
    APP_FGPS                       ONLINE    PERMANENT
    RMAN_TS                        ONLINE    PERMANENT
    MYUNDOTBS                      ONLINE    UNDO
    TESTUNDOTBS                    ONLINE    UNDO
    
    10 rows selected.
    View dba_tablespaces;

    查看数据库有哪些表空间文件? 

    SQL> select name,status from v$datafile;
    
    NAME                                                         STATUS
    ------------------------------------------------------------ -------
    /u01/app/oracle/oradata/testdb/system01.dbf                  SYSTEM
    /u01/app/oracle/oradata/testdb/sysaux01.dbf                  ONLINE
    /u01/app/oracle/oradata/testdb/undotbs01.dbf                 ONLINE
    /u01/app/oracle/oradata/testdb/users01.dbf                   ONLINE
    /u01/app/oracle/oradata/testdb/example01.dbf                 ONLINE
    /u01/app/oracle/oradata/testdb/DATACENTER01.dbf              ONLINE
    /u01/app/oracle/oradata/testdb/rman_ts01.dbf                 ONLINE
    /u01/app/oracle/oradata/testdb/myundotbs01.dbf               ONLINE
    /u01/app/oracle/oradata/testdb/testundotbs01.dbf             ONLINE
    
    9 rows selected.
    View v$datafile;

    查看当前系统正在使用哪个undo tablespace? 

    SQL> show parameter undo;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    undo_management                      string      AUTO
    undo_retention                       integer     900
    undo_tablespace                      string      MYUNDOTBS
    View parameter;

    查询指定undo tablespace有哪些undo segments?

    SQL> select segment_name,tablespace_name from dba_rollback_segs where tablespace_name='UNDOTBS1';
    
    SEGMENT_NAME                   TABLESPACE_NAME
    ------------------------------ ------------------------------
    _SYSSMU1_1240252155$           UNDOTBS1
    _SYSSMU2_111974964$            UNDOTBS1
    _SYSSMU3_4004931649$           UNDOTBS1
    _SYSSMU4_1126976075$           UNDOTBS1
    _SYSSMU5_4011504098$           UNDOTBS1
    _SYSSMU6_3654194381$           UNDOTBS1
    _SYSSMU7_4222772309$           UNDOTBS1
    _SYSSMU8_3612859353$           UNDOTBS1
    _SYSSMU9_3945653786$           UNDOTBS1
    _SYSSMU10_3271578125$          UNDOTBS1
    
    10 rows selected.
    View Code

    创建undo tablespace

    SQL> create undo tablespace testundotbs datafile '/u01/app/oracle/oradata/testdb/testundotbs01.dbf' size 2M;
    
    Tablespace created.
    
    SQL> 
    1、创建undo表空间
    SQL> create undo tablespace testundotbs datafile '/u01/app/oracle/oradata/testdb/testundotbs01.dbf' size 2M autoextend off;
    
    Tablespace created.
    
    SQL> 
    创建undo表空间,并且不扩展;

    删除undo tablespace

    SQL> drop tablespace testundotbs;
    
    Tablespace dropped.
    逻辑删除undo表空间;
    11203ora-> ll
    total 2618412
    -rw-r----- 1 oracle oinstall   9814016 Jul 16 16:27 control01.ctl
    -rw-r----- 1 oracle oinstall 209723392 Jul 16 16:05 DATACENTER01.dbf
    -rw-r----- 1 oracle oinstall 362422272 Jul 16 16:05 example01.dbf
    -rw-r----- 1 oracle oinstall 120594432 Jul 16 16:26 myundotbs01.dbf
    -rw-r----- 1 oracle oinstall  52429312 Jul 15 22:00 redo01.log
    -rw-r----- 1 oracle oinstall  52429312 Jul 16 16:00 redo02.log
    -rw-r----- 1 oracle oinstall  52429312 Jul 16 16:26 redo03.log
    -rw-r----- 1 oracle oinstall 209723392 Jul 16 16:05 rman_ts01.dbf
    -rw-r----- 1 oracle oinstall 671096832 Jul 16 16:26 sysaux01.dbf
    -rw-r----- 1 oracle oinstall 765468672 Jul 16 16:26 system01.dbf
    -rw-r----- 1 oracle oinstall  30416896 Jul 16 16:18 temp01.dbf
    -rw-r----- 1 oracle oinstall   2105344 Jul 16 16:26 testundotbs01.dbf
    -rw-r----- 1 oracle oinstall 120594432 Jul 16 16:05 undotbs01.dbf
    -rw-r----- 1 oracle oinstall  23601152 Jul 16 16:05 users01.dbf
    11203ora-> rm -rf testundotbs01.dbf 
    11203ora-> ll
    total 2616356
    -rw-r----- 1 oracle oinstall   9814016 Jul 16 16:27 control01.ctl
    -rw-r----- 1 oracle oinstall 209723392 Jul 16 16:05 DATACENTER01.dbf
    -rw-r----- 1 oracle oinstall 362422272 Jul 16 16:05 example01.dbf
    -rw-r----- 1 oracle oinstall 120594432 Jul 16 16:26 myundotbs01.dbf
    -rw-r----- 1 oracle oinstall  52429312 Jul 15 22:00 redo01.log
    -rw-r----- 1 oracle oinstall  52429312 Jul 16 16:00 redo02.log
    -rw-r----- 1 oracle oinstall  52429312 Jul 16 16:26 redo03.log
    -rw-r----- 1 oracle oinstall 209723392 Jul 16 16:05 rman_ts01.dbf
    -rw-r----- 1 oracle oinstall 671096832 Jul 16 16:26 sysaux01.dbf
    -rw-r----- 1 oracle oinstall 765468672 Jul 16 16:26 system01.dbf
    -rw-r----- 1 oracle oinstall  30416896 Jul 16 16:18 temp01.dbf
    -rw-r----- 1 oracle oinstall 120594432 Jul 16 16:05 undotbs01.dbf
    -rw-r----- 1 oracle oinstall  23601152 Jul 16 16:05 users01.dbf
    11203ora-> 
    物理删除undo tablespace;
    SQL> drop tablespace testundotbs including contents and datafiles;
    
    Tablespace dropped.
    
    SQL> 
    逻辑删除、物理删除undo tablespace;

    切换undo tablespace 

    SQL> alter system set undo_tablespace=testundotbs;
    
    System altered.
    
    SQL> show parameter undo
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    undo_management                      string      AUTO
    undo_retention                       integer     900
    undo_tablespace                      string      TESTUNDOTBS
    SQL> 
    切换undo tablespace

    little demo 

    将undo tablespace设置很小(2M),往表中插入超过2M的数据,会出现什么结果?

    result:ora-30036

    SQL> create undo tablespace testundotbs datafile '/u01/app/oracle/oradata/testdb/testundotbs01.dbf' size 2M autoextend off;
    
    Tablespace created.
    create undo tablespace
    SQL> select tablespace_name,status,contents from dba_tablespaces;
    
    TABLESPACE_NAME                STATUS    CONTENTS
    ------------------------------ --------- ---------
    SYSTEM                         ONLINE    PERMANENT
    SYSAUX                         ONLINE    PERMANENT
    UNDOTBS1                       ONLINE    UNDO
    TEMP                           ONLINE    TEMPORARY
    USERS                          ONLINE    PERMANENT
    EXAMPLE                        ONLINE    PERMANENT
    APP_FGPS                       ONLINE    PERMANENT
    RMAN_TS                        ONLINE    PERMANENT
    MYUNDOTBS                      ONLINE    UNDO
    TESTUNDOTBS                    ONLINE    UNDO
    
    10 rows selected.
    View undo tablespace
    SQL> alter system set undo_tablespace=testundotbs;
    
    System altered.
    switch undo tablespace
    SQL> show parameter undo
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    undo_management                      string      AUTO
    undo_retention                       integer     900
    undo_tablespace                      string      TESTUNDOTBS
    查看验证结果;
    SQL> show user
    USER is "HR"
    SQL> select * from t;
    
            ID NAME
    ---------- --------------------
             0 arcerzhang
    
    SQL> truncate table t;
    
    Table truncated.
    
    SQL> select * from t;
    
    no rows selected
    
    SQL> begin
      2      for i in 1..1000000
      3      loop
      4         insert into t values(i,'arcerzhang');
      5      end loop;
      6  end;
      7  /
    begin
    *
    ERROR at line 1:
    ORA-30036: unable to extend segment by 8 in undo tablespace 'TESTUNDOTBS'
    ORA-06512: at line 4
    以hr用户进行测试;

    little demo

    由于undo tablespace size过小,导致查询失败;ora-01555错误;

    看图通晓原理

    关于undo tablespace size的调整 

    SQL> select max(undoblks / ((end_time - begin_time)*24*3600)) from v$undostat;
    
    MAX(UNDOBLKS/((END_TIME-BEGIN_TIME)*24*3600))
    ---------------------------------------------
                                       2.08833333
    
    SQL> 
    最大值算法:计算每秒钟需要的undoblks;最大值算法;
    SQL> select sum(undoblks) / sum((end_time - begin_time)*24*3600) from v$undostat;
    
    SUM(UNDOBLKS)/SUM((END_TIME-BEGIN_TIME)*24*3600)
    ------------------------------------------------
                                          .062157134
    
    SQL> 
    平均值算法:计算每秒钟需要的undoblks;
    • Determining a size for the UNDO tablespace requires three pieces of information:
      • (UR)UNDO_RETENTION in seconds
      • (UPS)Number of undo data blocks generated per second
      • (DBS)Overhead varies based on extent and file size(db_block_size)

    计算undo tablespace size的方法一(最大值算法):参数1 * 参数2 * 参数3

    SQL> select max(undoblks / ((end_time - begin_time)*24*3600)) from v$undostat;
    
    MAX(UNDOBLKS/((END_TIME-BEGIN_TIME)*24*3600))
    ---------------------------------------------
                                       2.08833333
    参数1
    SQL> show parameter undo_retention
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    undo_retention                       integer     900
    SQL> 
    参数2
    SQL> show parameter db_block_size
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_block_size                        integer     8192
    参数3

    计算undo tablespace size的方法二(平均值算法):参数1 * 参数2 * 参数3

    SQL> select sum(undoblks) / sum((end_time - begin_time)*24*3600) from v$undostat;
    
    SUM(UNDOBLKS)/SUM((END_TIME-BEGIN_TIME)*24*3600)
    ------------------------------------------------
                                          .062157134
    参数1
    SQL> show parameter undo_retention
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    undo_retention                       integer     900
    SQL> 
    参数2
    SQL> show parameter db_block_size
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_block_size                        integer     8192
    参数3

    undo tablespace quota-使用undo tablepsace quota来进行undo tablespace的管理

    背景:undo tablespace事关全局,每个用户不可能在一个时间点占用全部的undo tablespace,这就牵扯到undo tablespace quota的问题.对于undo tablespace quota的问题,主要与undo_pool参数有关,属于resource manager中的内容;

    •Long transactions and improperly written transactions can consume valuable resources.
    •With undo quota,users can be grouped and a maximum undo space limit can be assigned to the group.
    •UNDO_POOL,a Resource Manager directive,defines the amount of space allowed for a resource group.
    •When a group exceeds its limit,no new transactions are possible for the group,until undo space is freed by current transactio which are either completing or aborting.

    undo segment可以被多个transaction所共享; 

    Get Undo Segment Info

    • Information about undo segments can be obtained by querying the following views: ---DBA_ROLLBACK_SEGS
    • SQL> select segment_name,tablespace_name from dba_rollback_segs;
      
      SEGMENT_NAME                   TABLESPACE_NAME
      ------------------------------ ------------------------------
      SYSTEM                         SYSTEM
      _SYSSMU10_3271578125$          UNDOTBS1
      _SYSSMU9_3945653786$           UNDOTBS1
      _SYSSMU8_3612859353$           UNDOTBS1
      _SYSSMU7_4222772309$           UNDOTBS1
      _SYSSMU6_3654194381$           UNDOTBS1
      _SYSSMU5_4011504098$           UNDOTBS1
      _SYSSMU4_1126976075$           UNDOTBS1
      _SYSSMU3_4004931649$           UNDOTBS1
      _SYSSMU2_111974964$            UNDOTBS1
      _SYSSMU1_1240252155$           UNDOTBS1
      
      SEGMENT_NAME                   TABLESPACE_NAME
      ------------------------------ ------------------------------
      _SYSSMU20_383735042$           MYUNDOTBS
      _SYSSMU19_3345254938$          MYUNDOTBS
      _SYSSMU18_1415882764$          MYUNDOTBS
      _SYSSMU17_3557938328$          MYUNDOTBS
      _SYSSMU16_1859217099$          MYUNDOTBS
      _SYSSMU15_1154943744$          MYUNDOTBS
      _SYSSMU14_1909609757$          MYUNDOTBS
      _SYSSMU13_3542379076$          MYUNDOTBS
      _SYSSMU12_1217287258$          MYUNDOTBS
      _SYSSMU11_1756135178$          MYUNDOTBS
      _SYSSMU28_3554829085$          TESTUNDOTBS
      
      SEGMENT_NAME                   TABLESPACE_NAME
      ------------------------------ ------------------------------
      _SYSSMU27_2132966396$          TESTUNDOTBS
      _SYSSMU26_3800527619$          TESTUNDOTBS
      _SYSSMU25_1675500269$          TESTUNDOTBS
      _SYSSMU24_1510368484$          TESTUNDOTBS
      _SYSSMU23_2344035146$          TESTUNDOTBS
      _SYSSMU22_702459267$           TESTUNDOTBS
      _SYSSMU21_544576415$           TESTUNDOTBS
      
      29 rows selected.
      
      SQL> 
      View Code
    • Dynamic Performance Views
      • V$ROLLNAME
      • SQL> select * from v$rollname;
        
               USN NAME
        ---------- ------------------------------
                 0 SYSTEM
                21 _SYSSMU21_544576415$
                22 _SYSSMU22_702459267$
                23 _SYSSMU23_2344035146$
                24 _SYSSMU24_1510368484$
                25 _SYSSMU25_1675500269$
                26 _SYSSMU26_3800527619$
                27 _SYSSMU27_2132966396$
                28 _SYSSMU28_3554829085$
        
        9 rows selected.
        View Code
      • V$ROLLSTAT(在线undo tablespace信息)
      • SQL> select usn,status from v$rollstat;
        
               USN STATUS
        ---------- ---------------
                 0 ONLINE
                21 ONLINE
                22 ONLINE
                23 ONLINE
                24 ONLINE
                25 ONLINE
                26 ONLINE
                27 ONLINE
                28 ONLINE
        
        9 rows selected.
        View Code
      • V$UNDOSTAT
      • SQL> select begin_time,end_time,undoblks from v$undostat;
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 21:31:53 2013/07/16 21:36:01          4
        2013/07/16 21:21:53 2013/07/16 21:31:53         17
        2013/07/16 21:11:53 2013/07/16 21:21:53         13
        2013/07/16 21:01:53 2013/07/16 21:11:53         14
        2013/07/16 20:51:53 2013/07/16 21:01:53         48
        2013/07/16 20:41:53 2013/07/16 20:51:53         13
        2013/07/16 20:31:53 2013/07/16 20:41:53         20
        2013/07/16 20:21:53 2013/07/16 20:31:53         14
        2013/07/16 20:11:53 2013/07/16 20:21:53         13
        2013/07/16 20:01:53 2013/07/16 20:11:53         22
        2013/07/16 19:51:53 2013/07/16 20:01:53         43
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 19:41:53 2013/07/16 19:51:53         11
        2013/07/16 19:31:53 2013/07/16 19:41:53         14
        2013/07/16 19:21:53 2013/07/16 19:31:53         14
        2013/07/16 19:11:53 2013/07/16 19:21:53         15
        2013/07/16 19:01:53 2013/07/16 19:11:53         14
        2013/07/16 18:51:53 2013/07/16 19:01:53         47
        2013/07/16 18:41:53 2013/07/16 18:51:53         13
        2013/07/16 18:31:53 2013/07/16 18:41:53         14
        2013/07/16 18:21:53 2013/07/16 18:31:53         16
        2013/07/16 18:11:53 2013/07/16 18:21:53         18
        2013/07/16 18:01:53 2013/07/16 18:11:53         15
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 17:51:53 2013/07/16 18:01:53         48
        2013/07/16 17:41:53 2013/07/16 17:51:53         14
        2013/07/16 17:31:53 2013/07/16 17:41:53         13
        2013/07/16 17:21:53 2013/07/16 17:31:53         17
        2013/07/16 17:11:53 2013/07/16 17:21:53         16
        2013/07/16 17:01:53 2013/07/16 17:11:53         18
        2013/07/16 16:51:53 2013/07/16 17:01:53         48
        2013/07/16 16:41:53 2013/07/16 16:51:53         14
        2013/07/16 16:31:53 2013/07/16 16:41:53         31
        2013/07/16 16:21:53 2013/07/16 16:31:53         17
        2013/07/16 16:11:53 2013/07/16 16:21:53         18
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 16:01:53 2013/07/16 16:11:53         13
        2013/07/16 15:51:53 2013/07/16 16:01:53        111
        2013/07/16 15:41:53 2013/07/16 15:51:53         13
        2013/07/16 15:31:53 2013/07/16 15:41:53         18
        2013/07/16 15:21:53 2013/07/16 15:31:53         12
        2013/07/16 15:11:53 2013/07/16 15:21:53         16
        2013/07/16 15:01:53 2013/07/16 15:11:53         17
        2013/07/16 14:51:53 2013/07/16 15:01:53        116
        2013/07/16 14:41:53 2013/07/16 14:51:53         13
        2013/07/16 14:31:53 2013/07/16 14:41:53         15
        2013/07/16 14:21:53 2013/07/16 14:31:53         13
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 14:11:53 2013/07/16 14:21:53         16
        2013/07/16 14:01:53 2013/07/16 14:11:53         20
        2013/07/16 13:51:53 2013/07/16 14:01:53        101
        2013/07/16 13:41:53 2013/07/16 13:51:53         15
        2013/07/16 13:31:53 2013/07/16 13:41:53         15
        2013/07/16 13:21:53 2013/07/16 13:31:53         13
        2013/07/16 13:11:53 2013/07/16 13:21:53         17
        2013/07/16 13:01:53 2013/07/16 13:11:53         16
        2013/07/16 12:51:53 2013/07/16 13:01:53        115
        2013/07/16 12:41:53 2013/07/16 12:51:53         14
        2013/07/16 12:31:53 2013/07/16 12:41:53         15
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 12:21:53 2013/07/16 12:31:53         14
        2013/07/16 12:11:53 2013/07/16 12:21:53         17
        2013/07/16 12:01:53 2013/07/16 12:11:53         12
        2013/07/16 11:51:53 2013/07/16 12:01:53        160
        2013/07/16 11:41:53 2013/07/16 11:51:53         13
        2013/07/16 11:31:53 2013/07/16 11:41:53         25
        2013/07/16 11:21:53 2013/07/16 11:31:53         12
        2013/07/16 11:11:53 2013/07/16 11:21:53         17
        2013/07/16 11:01:53 2013/07/16 11:11:53         15
        2013/07/16 10:51:53 2013/07/16 11:01:53         97
        2013/07/16 10:41:53 2013/07/16 10:51:53         17
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 10:31:53 2013/07/16 10:41:53         12
        2013/07/16 10:21:53 2013/07/16 10:31:53         15
        2013/07/16 10:11:53 2013/07/16 10:21:53         18
        2013/07/16 10:01:53 2013/07/16 10:11:53         12
        2013/07/16 09:51:53 2013/07/16 10:01:53        121
        2013/07/16 09:41:53 2013/07/16 09:51:53         16
        2013/07/16 09:31:53 2013/07/16 09:41:53         18
        2013/07/16 09:21:53 2013/07/16 09:31:53         19
        2013/07/16 09:11:53 2013/07/16 09:21:53         13
        2013/07/16 09:01:53 2013/07/16 09:11:53         18
        2013/07/16 08:51:53 2013/07/16 09:01:53         83
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 08:41:53 2013/07/16 08:51:53         16
        2013/07/16 08:31:53 2013/07/16 08:41:53         14
        2013/07/16 08:21:53 2013/07/16 08:31:53         13
        2013/07/16 08:11:53 2013/07/16 08:21:53         13
        2013/07/16 08:01:53 2013/07/16 08:11:53         11
        2013/07/16 07:51:53 2013/07/16 08:01:53        109
        2013/07/16 07:41:53 2013/07/16 07:51:53         13
        2013/07/16 07:31:53 2013/07/16 07:41:53         14
        2013/07/16 07:21:53 2013/07/16 07:31:53         21
        2013/07/16 07:11:53 2013/07/16 07:21:53         14
        2013/07/16 07:01:53 2013/07/16 07:11:53         13
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 06:51:53 2013/07/16 07:01:53         91
        2013/07/16 06:41:53 2013/07/16 06:51:53         12
        2013/07/16 06:31:53 2013/07/16 06:41:53         16
        2013/07/16 06:21:53 2013/07/16 06:31:53         15
        2013/07/16 06:11:53 2013/07/16 06:21:53         16
        2013/07/16 06:01:53 2013/07/16 06:11:53         13
        2013/07/16 05:51:53 2013/07/16 06:01:53        101
        2013/07/16 05:41:53 2013/07/16 05:51:53         13
        2013/07/16 05:31:53 2013/07/16 05:41:53         14
        2013/07/16 05:21:53 2013/07/16 05:31:53         18
        2013/07/16 05:11:53 2013/07/16 05:21:53         12
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        
        2013/07/16 05:01:53 2013/07/16 05:11:53         10
        2013/07/16 04:51:53 2013/07/16 05:01:53        111
        2013/07/16 04:41:53 2013/07/16 04:51:53         15
        2013/07/16 04:31:53 2013/07/16 04:41:53         14
        2013/07/16 04:21:53 2013/07/16 04:31:53         12
        2013/07/16 04:11:53 2013/07/16 04:21:53         19
        2013/07/16 04:01:53 2013/07/16 04:11:53         16
        2013/07/16 03:51:53 2013/07/16 04:01:53         92
        2013/07/16 03:41:53 2013/07/16 03:51:53         15
        2013/07/16 03:31:53 2013/07/16 03:41:53         14
        2013/07/16 03:21:53 2013/07/16 03:31:53         14
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 03:11:53 2013/07/16 03:21:53         15
        2013/07/16 03:01:53 2013/07/16 03:11:53         15
        2013/07/16 02:51:53 2013/07/16 03:01:53         93
        2013/07/16 02:41:53 2013/07/16 02:51:53         11
        2013/07/16 02:31:53 2013/07/16 02:41:53         17
        2013/07/16 02:21:53 2013/07/16 02:31:53         15
        2013/07/16 02:11:53 2013/07/16 02:21:53         22
        2013/07/16 02:01:53 2013/07/16 02:11:53         12
        2013/07/16 01:51:53 2013/07/16 02:01:53        107
        2013/07/16 01:41:53 2013/07/16 01:51:53         13
        2013/07/16 01:31:53 2013/07/16 01:41:53         12
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/16 01:21:53 2013/07/16 01:31:53         15
        2013/07/16 01:11:53 2013/07/16 01:21:53         14
        2013/07/16 01:01:53 2013/07/16 01:11:53         31
        2013/07/16 00:51:53 2013/07/16 01:01:53        252
        2013/07/16 00:41:53 2013/07/16 00:51:53         15
        2013/07/16 00:31:53 2013/07/16 00:41:53         13
        2013/07/16 00:21:53 2013/07/16 00:31:53         13
        2013/07/16 00:11:53 2013/07/16 00:21:53         16
        2013/07/16 00:01:53 2013/07/16 00:11:53         21
        2013/07/15 23:51:53 2013/07/16 00:01:53        110
        2013/07/15 23:41:53 2013/07/15 23:51:53         14
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/15 23:31:53 2013/07/15 23:41:53         13
        2013/07/15 23:21:53 2013/07/15 23:31:53         18
        2013/07/15 23:11:53 2013/07/15 23:21:53         18
        2013/07/15 23:01:53 2013/07/15 23:11:53         16
        2013/07/15 22:51:53 2013/07/15 23:01:53        118
        2013/07/15 22:41:53 2013/07/15 22:51:53         14
        2013/07/15 22:31:53 2013/07/15 22:41:53         14
        2013/07/15 22:21:53 2013/07/15 22:31:53         19
        2013/07/15 22:11:53 2013/07/15 22:21:53         17
        2013/07/15 22:01:53 2013/07/15 22:11:53         28
        2013/07/15 21:51:53 2013/07/15 22:01:53       1253
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/15 21:41:53 2013/07/15 21:51:53         17
        2013/07/15 21:31:53 2013/07/15 21:41:53         10
        2013/07/15 21:21:53 2013/07/15 21:31:53         13
        2013/07/15 21:11:53 2013/07/15 21:21:53         16
        2013/07/15 21:01:53 2013/07/15 21:11:53         12
        2013/07/15 20:51:53 2013/07/15 21:01:53         89
        
        2013/07/15 20:41:53 2013/07/15 20:51:53         14
        2013/07/15 20:31:53 2013/07/15 20:41:53         13
        2013/07/15 20:21:53 2013/07/15 20:31:53         12
        2013/07/15 20:11:53 2013/07/15 20:21:53         15
        2013/07/15 20:01:53 2013/07/15 20:11:53         14
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/15 19:51:53 2013/07/15 20:01:53         94
        2013/07/15 19:41:53 2013/07/15 19:51:53         17
        2013/07/15 19:31:53 2013/07/15 19:41:53         13
        2013/07/15 19:21:53 2013/07/15 19:31:53         16
        2013/07/15 19:11:53 2013/07/15 19:21:53         18
        2013/07/15 19:01:53 2013/07/15 19:11:53         14
        2013/07/15 18:51:53 2013/07/15 19:01:53         93
        2013/07/15 18:41:53 2013/07/15 18:51:53         14
        2013/07/15 18:31:53 2013/07/15 18:41:53         12
        2013/07/15 18:21:53 2013/07/15 18:31:53         19
        2013/07/15 18:11:53 2013/07/15 18:21:53         16
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/15 18:01:53 2013/07/15 18:11:53         11
        2013/07/15 17:51:53 2013/07/15 18:01:53         95
        2013/07/15 17:41:53 2013/07/15 17:51:53         12
        2013/07/15 17:31:53 2013/07/15 17:41:53         13
        2013/07/15 17:21:53 2013/07/15 17:31:53         14
        2013/07/15 17:11:53 2013/07/15 17:21:53         14
        2013/07/15 17:01:53 2013/07/15 17:11:53         10
        2013/07/15 16:51:53 2013/07/15 17:01:53        118
        2013/07/15 16:41:53 2013/07/15 16:51:53         11
        2013/07/15 16:31:53 2013/07/15 16:41:53         17
        2013/07/15 16:21:53 2013/07/15 16:31:53         16
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/15 16:11:53 2013/07/15 16:21:53         19
        2013/07/15 16:01:53 2013/07/15 16:11:53         12
        2013/07/15 15:51:53 2013/07/15 16:01:53         92
        2013/07/15 15:41:53 2013/07/15 15:51:53         16
        2013/07/15 15:31:53 2013/07/15 15:41:53         13
        2013/07/15 15:21:53 2013/07/15 15:31:53         13
        2013/07/15 15:11:53 2013/07/15 15:21:53         15
        2013/07/15 15:01:53 2013/07/15 15:11:53         14
        2013/07/15 14:51:53 2013/07/15 15:01:53        109
        2013/07/15 14:41:53 2013/07/15 14:51:53         14
        2013/07/15 14:31:53 2013/07/15 14:41:53         14
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/15 14:21:53 2013/07/15 14:31:53         12
        2013/07/15 14:11:53 2013/07/15 14:21:53         15
        2013/07/15 14:01:53 2013/07/15 14:11:53         12
        2013/07/15 13:51:53 2013/07/15 14:01:53         94
        2013/07/15 13:41:53 2013/07/15 13:51:53         18
        2013/07/15 13:31:53 2013/07/15 13:41:53         12
        2013/07/15 13:21:53 2013/07/15 13:31:53         17
        2013/07/15 13:11:53 2013/07/15 13:21:53         14
        2013/07/15 13:01:53 2013/07/15 13:11:53         12
        2013/07/15 12:51:53 2013/07/15 13:01:53        101
        2013/07/15 12:41:53 2013/07/15 12:51:53         16
        
        BEGIN_TIME          END_TIME              UNDOBLKS
        ------------------- ------------------- ----------
        2013/07/15 12:31:53 2013/07/15 12:41:53         12
        2013/07/15 12:21:53 2013/07/15 12:31:53         15
        2013/07/15 12:11:53 2013/07/15 12:21:53         16
        2013/07/15 12:01:53 2013/07/15 12:11:53         87
        2013/07/15 11:51:53 2013/07/15 12:01:53         22
        
        203 rows selected.
        
        SQL>
        View Code
      • V$SESSION(常规)
      • V$TRANSACTION(常规)

    oracle数据库crash时前滚与回滚的区别

    数据库的记录先写到log然后写到datafile,这样的话就存在一些redo已经写到logfile但是还没有写到datafile内,log中存储了transaction信息,包括commited or uncommited data。可能这些修改信息并没有被oracle正确的来处理,包含两种情况:已经提交的还没有写入数据文件,或者没有提交的却被写入了数据文件。此时如果instance crash了,在实例恢复时针对已经提交的还没有写入数据文件就要发生前滚,在前滚过程中,smon会根据online redo log中的记录来完成对datafile的修改。保证已经提交的数据写入数据文件datafile。
    接下来,前滚结束后,数据库正常open,此时用户可以正常连接,可以访问已经recover的commited data,但是对于那些属于unrecoverable transaction的uncommited data,会被oracle 加锁,是不可以访问的。rolling back:假如有进程访问这些加锁的data,此时smon会对这些数据块做rollback回滚,从数据文件中撤销没有提交却被写入数据文件的数据。

    /*如何实现undo segments and space 的自动化管理*/

    1、创建一个undo_tablespace,名称为undo_tbs1

    2、设置参数undo_tablespace

    SQL> show parameter undo_tabl
    
    NAME                                 TS Type      VALUE
    ------------------------------------ ------------ ------------------------------
    undo_tablespace                      string       UNDOTBS1
    View Code

    3、设置参数undo_management

    SQL> show parameter undo_manage
    
    NAME                                 TS Type      VALUE
    ------------------------------------ ------------ ------------------------------
    undo_management                      string       AUTO
    View Code
  • 相关阅读:
    平均值(Mean)、方差(Variance)、标准差(Standard Deviation) (转)
    4.3 使用 SQL 语句操作数据框
    4.2 数据框的行、列选择
    4.1 基本数据管理
    2.2.5 因子的使用
    Python执行时间的计算方法
    pypy安装与使用
    win7下查看进程端口
    python去除BOM头ufeff等特殊字符
    java查看线程的堆栈信息
  • 原文地址:https://www.cnblogs.com/arcer/p/3193139.html
Copyright © 2011-2022 走看看