RE: Rollback per transaction %:73 %?

From: Tanel Poder <>
Date: Wed, 30 Jul 2008 23:22:53 +0800
Message-id: <D1477D01C990434BB4E291E61475B8FD@windows01>

Rollbacks per transaction % is calculated using "transaction rollbacks / transaction rollbacks + transaction commits" formula I think. As this is a ratio, we need more info like how many transactions did you have during AWR sample period.  

There is also the question how much do those rollbacks affect your application response time... which is not trivial to find out as the rollback generates similar wait events as normal processing (physical reads, log file sync's and CPU usage).    

Anyway, if you have lots of transactions and 73% of them roll back, you have a lot of waste.  

Couple reasons that come into my mind are:  

  1. Bad application design / coding practices (e.g. insert -> if failed -> then update)
  2. ASSM bugs (failed space allocations which are rolled back)

If all you have is AWR data then check the "transaction rollbacks" vs "user rollbacks" stats as first step just to make sure the application code is not manually issuing all those rollbacks (application-initiated rollbacks are counted in "user rollbacks" in addition to "transaction rollbacks")  

As the next step I would pick a session causing most of the transaction rollbacks (which you can easily identify using Snapper for example) and see what it's doing (e.g. what SQL or PL/SQL code its running).  

If nothing obvious shows up (like you don't see such "insert->if failed->then update" sequence I mentioned above) you need to identify where else do these transaction rollbacks come from (like a failed/buggy ASSM space allocation operation).
One way to find this out is getting process stack traces - but the best method depends on how frequent those rollbacks are (many rollbacks per second?) and whether thats a production system you're investigating.


Tanel Poder

From: [] On Behalf Of VIVEK_SHARMA
Sent: Wednesday, July 30, 2008 15:32
Subject: RE: Rollback per transaction %:73 %?


Is "Rollback per transaction %: 73.06" under "Load Profile" section of AWR Report abnormally High? ..., If so, what does this imply? ... How is the issue to be approached? . Any values for this which are generally considered acceptable as per best practices?  

NOTE - This was observed during a Benchmark run of a Banking Java Application using Oracle thin driver to connect to the Database. Dedicated Server process connections to Database. OLTP Nature of Transactions used.  

Cheers & Advice pls  


P.S. AWR Stats:-  

Elapsed 16.71 (mins)

Load Profile  

% Blocks changed per Read:


Recursive Call %:


Rollback per transaction %:


Rows per Sort:



Oracle 10.2  

  • CAUTION - Disclaimer *****************

This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely

for the use of the addressee(s). If you are not the intended recipient, please

notify the sender by e-mail and delete the original message. Further, you are not

to copy, disclose, or distribute this e-mail or its contents to any other person and

any such actions are unlawful. This e-mail may contain viruses. Infosys has taken

every reasonable precaution to minimize this risk, but is not liable for any damage

you may sustain as a result of any virus in this e-mail. You should carry out your

own virus checks before opening the e-mail or attachment. Infosys reserves the

right to monitor and review the content of all messages sent to or from this e-mail

address. Messages sent to or from this e-mail address may be stored on the

Infosys e-mail system.

***INFOSYS******** End of Disclaimer ********INFOSYS***

-- Received on Wed Jul 30 2008 - 10:22:53 CDT

Original text of this message