This content has been marked as final. Show 8 replies
With "shutdown immediate" the rollback will complete successfully.
With "shutdown abort" the rollback will not complete on the way down. Actually, the rollback will be executed when you startup the instance next time.
In a long transaction, the data blocks in the datafile had already been updated by DBW, rollback is indeed a high cost operation anyway...
When this problem happened, I tried to shutdown immediate but it never end. So at the end, I issued shutdown abort. so is that mean the rollback continue running after I restart the DB? How to track the rollback session that continue running after DB bounced?
How to track the rollback session that continue running after DB bounced?What does this mean?
Why do you want/need to "track it"?
If you SHUTDOWN ABORT when there are very many active transactions or transactions being rolled back, then the default FAST_START_PARALLEL_ROLLBACK that occurs on the subsequent Instance Startup will actually mean that the Rollback is executed faster.
However, if it is a single large transaction such as a DELETE against a table with an Index, then it is better to disable FAST_START_PARALLEL_ROLLBACK before restarting the Instance immediately after a SHUTDOWN ABORT. The Parallel Rollback of a single large transaction with an Index can be slower !
FAST_START_PARALLEL_ROLLBACK is an instance parameter which default to LOW (ie a setting of 2 x CPU_COUNT) and can be set to HIGH or FALSE.
Note : If you SHUTDOWN ABORT and STARTUP the database, Oracle only has to do a Rollforward from Redo Logs (for database blocks that haven't been updated) before it does an OPEN. This is generally a very fast operation. The Rollback of uncomitted transactions is a deferred operation -- this means that the Rollback is initiated by SMON or the Parallel Slaves after the Database is OPEN. If a block containing a row that was updated and not committed is referenced by a database session after the OPEN but before it has been rolled back, Oracle does an expedited rollback for that row of the block and then continues doing the rollback of other rows in the background.
Thus, if the transaction had been on Table "A" and the database is SHUTDOWN ABORT and STARTUP, then users can continue accessing and updating all other tables other than Table "A" while the transaction is being rolled back, in the background, after the OPEN.
Hemant K Chitale
Yes, the rollback will start again after the instance startup.
One of our customer had the same problem.
The better is to let the rollback operation finish. It's very important for the dabase coherence.
You can follow the activity of the Rollback segments with the view "v$rollback".
Hope it can help,
Thank you very much. Now I understand. And I can check the status from below command after DB bounced.
undoblocksdone / undoblockstotal * 100
Yes, you can query V$FAST_START_TRANSACTIONS.
Hemant K Chitale