iSelfSchooling.com  Since 1999     References  |  Search more  | Oracle Syntax  | Free Online Oracle Training

    Home      .Services     Login       Start Learning     Certification      .                 .Share your BELIEF(s)...

 

. Online Accounting        .Copyright & User Agreement   |
    .Vision      .Biography     .Acknowledgement

.Contact Us      .Comments/Suggestions       Email2aFriend    |

 

Online Oracle Training for beginners and advanced - The most comprehensive Oracle tutorial

The authors do not guarantee or take any responsibility for the accuracy, or completeness of the information.

DBAs - Performance

 

Lesson 01 | Lesson 02 | Lesson 03 | Lesson 04 | Lesson 05 | Lesson 06 | Lesson 07 | Lesson 08 | Lesson 09 | Lesson 10 | Lesson 11 | Lesson 12 | Lesson 13 | Lesson 14 | Lesson 15 |

 

Lesson 10

"Complaining is good for you as long as you're not complaining to the person you're complaining about." Lynn Johnston (1947 - ), For Better or For Worse, 11-06-03

 

Read first then play the video:

   PRF-VIDEO -Tuning Rollback or UNDO Segment

   

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%'
/

 

"Life is a zoo in a jungle." Peter De Vries

 

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');