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
‘/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
UNDO_MANAGEMENT=AUTO
UNDO_TABLESPACE=myundo
Now Oracle Database will use Automatic Undo Space
Management.
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
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;
|
No comments:
Post a Comment