zoukankan      html  css  js  c++  java
  • Managing the UNDO TABLESPACE

    Managing the UNDO TABLESPACE
     

    Every Oracle Database must have a method of maintaining information that is used to roll back, or undo, changes to the database. Such information consists of records of the actions of transactions, primarily before they are committed. These records are collectively referred to as undo.

    Undo records are used to:

    • Roll back transactions when a ROLLBACK statement is issued
    • Recover the database
    • Provide read consistency
    • Analyze data as of an earlier point in time by using Flashback Query
    • Recover from logical corruptions using Flashback features

    Earlier releases of Oracle Database used rollback segments to store undo. Oracle 9i introduced automatic undo management, which simplifies undo space management by eliminating the complexities associated with rollback segment management. Oracle strongly recommends that you use undo tablespace to manage undo rather than rollback segments.

    Switching to Automatic Management of Undo Space

    To go for automatic management of undo space set the following parameter.

    Steps:-

    1    If you have not created an undo tablespace at the time of creating a database then, create an undo tablespace by typing the following command

    SQL>create undo tablespace myundo datafile  
             ‘/u01/oracle/ica/undo_tbs.dbf’ size 500M
                            autoextend ON next 5M ;

    When the system is first running in the production environment, you may be unsure of the space requirements of the undo tablespace. In this case, you can enable automatic extension for datafiles of the undo tablespace so that they automatically increase in size when more space is needed

    2.    Shutdown the Database and set the following parameters in parameter file.

    UNDO_MANAGEMENT=AUTO
    UNDO_TABLESPACE=myundo

    3.    Start the Database.

    Now Oracle Database will use Automatic Undo Space Management. 

    Calculating the Space Requirements For Undo Retention

    You can calculate space requirements manually using the following formula:

    UndoSpace = UR * UPS + overhead

    where:

    • UndoSpace is the number of undo blocks
    • UR is UNDO_RETENTION in seconds. This value should take into consideration long-running queries and any flashback requirements.
    • UPS is undo blocks for each second
    • overhead is the small overhead for metadata (transaction tables, bitmaps, and so forth)

    As an example, if UNDO_RETENTION is set to 3 hours, and the transaction rate (UPS) is 100 undo blocks for each second, with a 8K block size, the required undo space is computed as follows:

    (3 * 3600 * 100 * 8K) = 8.24GBs

    To get the values for UPS, Overhead query the V$UNDOSTAT view. By giving the following statement

    SQL> Select * from V$UNDOSTAT;

     

    Altering UNDO Tablespace

    If the Undo tablespace is full, you can resize existing datafiles or add new datafiles to it

    The following example extends an existing datafile

    SQL> alter database datafile ‘/u01/oracle/ica/undo_tbs.dbf’ resize 700M

    The following example adds a new datafile to undo tablespace

    SQL> ALTER TABLESPACE myundo ADD DATAFILE '/u01/oracle/ica/undo02.dbf' SIZE 200M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;

    Dropping an Undo Tablespace

    Use the DROP TABLESPACE statement to drop an undo tablespace. The following example drops the undo tablespace undotbs_01:

    SQL> DROP TABLESPACE myundo;

    An undo tablespace can only be dropped if it is not currently used by any instance. If the undo tablespace contains any outstanding transactions (for example, a transaction died but has not yet been recovered), the DROP TABLESPACE statement fails.

    Switching Undo Tablespaces

    You can switch from using one undo tablespace to another. Because the UNDO_TABLESPACE initialization parameter is a dynamic parameter, the ALTER SYSTEM SET statement can be used to assign a new undo tablespace.

    The following statement switches to a new undo tablespace:

    ALTER SYSTEM SET UNDO_TABLESPACE = myundo2;

    Assuming myundo is the current undo tablespace, after this command successfully executes, the instance uses myundo2 in place of myundo as its undo tablespace.

    Viewing Information about Undo Tablespace

    To view statistics for tuning undo tablespace query the following dictionary

    SQL>select * from v$undostat;

    To see how many active Transactions are there and to see undo segment information give the following command

    SQL>select * from v$transaction;

    To see the sizes of extents in the undo tablespace give the following query

    SQL>select * from DBA_UNDO_EXTENTS;

  • 相关阅读:
    php调用dll的实例操作动画
    刚用Mootools写了一个随着鼠标移动而背景图也跟着移动的东西
    Jquery内存溢出实况,录像会说话
    自己写个扩展把Mootools的语法改的和Jquery的语法一模一样
    一个PHP的QRcode类,与大家分享
    使用Mootools动态添加Css样式表代码,兼容各浏览器
    分享一個用Mootools剛寫的小玩意
    一周学会Mootools 1.4中文教程:(2)函数
    计算机精品学习资料大放送
    30天学会 MooTools 教学(3): 数组管理DOM元素
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/12247130.html
Copyright © 2011-2022 走看看