|
|
|
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:
Earlier releases of Oracle Database
used rollback segments to store undo. Oracle9i 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:-
SQL>create undo tablespace myundo datafile 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
UNDO_MANAGEMENT=AUTO
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:
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 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; |
|
|