everythingOracle.bizhat.com

 

'Everything you wanted
to know about Oracle'

Training References Syntax Tell A Friend Contact Us

 

 

Performance

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
<< Previous

Chapter # 10

Next >>


 

Tuning rollback or undo segment

 

Introduction

As a DBA, you are responsible for tuning rollback or undo segments in case of performance problems. Your job’s responsibilities dictate that you should at least be informed of the following basic fundamental subjects:

 

Tuning Rollback or UNDO Segments

Setting the UNDO_MANAGEMENT parameter

Setting the UNDO _RETENTION parameter

Setting the UNDO_TABLESPACE parameter

Calculate an estimate of UNDO spaces for

The UNDO retention requirement

Tuning the manual UNDO segments

Listing block contentions

Calculating the UNDO segment Hit Ratio

Using the V$UNDOSTAT view

Using the V$ROLLNAME view

Using the V$ROLLSTAT view

Using the V$WAITSTAT view

Using the V$SYSSTAT view

Checking the DB BLOCK GETS parameter

Checking the CONSISTENT GETS parameter

Checking the SHRINKS column

Checking the AVESHRINKS column

 

Hands-on
In this exercise you will learn how to: tune rollback or undo segments, set the UNDO_SEGMENT parameter to AUTO, calculate an estimate of UNDO spaces to meet the UNDO retention requirement, tune the MANUAL UNDO segments, list block contention, calculate the UNDO segment Hit Ratio, and more.

So, let's connect to SQLPlus as the SYSTEM/MANAGER user.
SQL> CONNECT system/manager AS SYSDBA
 

View UNDO parameters
First, check the UNDO_MANAGEMENT parameter.
SQL> SHOW PARAMETER undo

Always set the UNDO_MANAGEMENT parameter to AUTO. In the AUTO option, the database takes control of how to manage the UNDO segments. The UNDO_RETENTION parameter indicates the number of seconds that the database keeps the UNDO segments. The UNDO_TABLESPACE parameter indicates the UNDO tablespace.

 

Spaces to meet UNDO retention

Use the V$UNDOSTAT view to calculate an estimate of undo spaces to meet the undo retention requirement for 15 minutes.

SQL> SELECT (xx*(ups*overhead) + overhead) AS "Bytes"
FROM (SELECT value AS xx

FROM v$parameter WHERE name = 'undo_retention'),
(SELECT (SUM(undoblks)/SUM((end_time-begin_time)*86400))

AS ups
FROM v$undostat),
(SELECT value AS overhead

FROM v$parameter

WHERE name = 'db_block_size')
/
The result of this query shows how much UNDO space we need to meet the UNDO retention requirement.
 

List all UNDO segments
Query the V$ROLLNAME dictionary view to list the UNDO segments.
SQL> SELECT * FROM v$rollname
/
 

Shrinking UNOD segments
Query the V$ROLLSTAT, and V$ROLLNAME dictionary views where the number of SHRINKS are more than 1. This is only applicable if you are using UNDO segments manually.
SQL> SELECT a.name, b.extents, b.optsize, b.shrinks,
b.aveshrink, writes
FROM v$rollname a, v$rollstat b
WHERE a.usn = b.usn
AND b.shrinks > 1
/
The WRITES column indicates the number of bytes written in the rollback segment. Notice that if the UNDO segment size is not big enough you may get the following error message: ORA-01555: snapshot too old.

If the UNDO_MANAGEMENT is AUTO ignore the optimal size.
If it is MANUAL, then be sure that the UNDO segments have an optimal size.
If the SHRINKS value is HIGH and the AVESHRINKS value is HIGH then increase the Optimal size.
If the SHRINKS value is HIGH and the AVESHRINKS value is LOW then increase the Optimal size.
If the SHRINKS value is LOW and the AVESHRINKS value is LOW then decrease the Optimal size.
If the SHRINKS value is LOW and the AVESHRINKS value is HIGH then the Optimal size is okay.
 

Block contention statistics
Query the V$WAITSTAT view to list block contention statistics.
SQL> SELECT *
FROM v$waitstat
WHERE class LIKE '%undo%'
/
Note the UNDO header.
 

DB BLOCK GETS and CONSISTENT GETS values
Then, query the V$SYSSTAT to gather statistics for the DB BLOCK GETS and the CONSISTENT GETS parameters.
SQL> COL name FORMAT a40
SQL> SELECT name, value
FROM v$sysstat
WHERE name in ('db block gets','consistent gets')
/
Note the DB BLOCK GETS, and CONSISTENT GETS values.
 

Calculate Cache Buffer Hit Ratio

Calculate the Hit Ratio from following formula.
Hit Ratio = (db block gets + consistent gets - undo header) /
(db block gets + consistent gets)

If the UNDO_MANAGEMENT parameter is MANUAL and the Hit Ratio is less than 99 you may have problem with Rollback Segment contentions. You may have to increase the number of Rollback Segments. This is not applicable when the UNDO_MANAGEMENT parameter is set to AUTO.
 

View UNOD activities
Query the V$SYSSTAT directory view to gather statistics for the Rollback and UNDO activities.
SQL> COL name FORMAT a60
SQL> SELECT name, value
FROM v$sysstat
WHERE name LIKE '%roll%'
OR name LIKE '%undo%'
/
 

Questions:

Q: How do you tune the UNDO segments?

Q: Describe the UNDO_MANAGEMENT parameter?

Q: Describe the UNDO_RETENTION parameter?

Q: Describe the UNDO_TABLESPACE parameter?

Q: Describe the V$UNDOSTAT view?

Q: Describe the V$ROLLNAME view?

Q: Describe the V$ROLLSTAT view?

Q: How do you monitor the DB_BLOCK_GETS, and CONSISTENT GETS parameters?

Q: When do you monitor the SHRINKS and AVESHRINS columns in the V$ROLLSTAT dictionary view?

Q: How do you calculate an estimate of undo spaces to meet the undo retention requirement for 15 minutes?

Q: How do you get a list of UNDO segments?

Q: What does the WRITES column indicate in the V$ROLLSTAT dictionary view?

Q: When do you get the following undo segment error message?

ORA-01555: snapshot too old.

Q: What is an optimal size when you use an undo segments manually?

Q: What does the following SQL statement?

SQL> SELECT name, value
FROM v$sysstat
WHERE name in ('db block gets','consistent gets');

     Reviews and Templates for FrontPage
     

Copyright © everythingOracle.bizhat.com 2006 All Rights Reserved.