Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • When to rebuld B-tree index Oracle
  • Trace a SQL session from another session using ORADEBUG Oracle
  • 276434.1 Modifying the VIP or VIP Hostname of a 10g or 11g Oracle Clusterware Node Oracle
  • Reading parameter file and printing Linux/Unix
  • switchover for primary database Oracle
  • oracle 10g on linux Linux/Unix
  • find_string_in_database.sql Oracle
  • remove archfiles only when it is applied to DR rm_archfiles.sh Linux/Unix
  • Locally Managed Tablespace and Dictionary managed tablespace (LMT-DMT) Oracle
  • Global Unique Identifier Generation in Oracle 9.2 SYS_GUID() Oracle
  • Optimizer_Index init.ora parameter explaination. Oracle
  • Running PDB on single node in RAC Oracle
  • Free conference number from http://www.freeconference.com Oracle
  • Wait time tuning research Oracle
  • Kernel Parameter setting explaination for Processes Parameter Linux/Unix

Facts about SCN and Rollback Segment

Posted on 21-Apr-2007 By Admin No Comments on Facts about SCN and Rollback Segment

1. When should you create more rollback segments?

The number of rollback segments needed to prevent contention between processes can be determined with the help of the monitor rollback display and with the use of the v$waitstat table. The rollback monitor column “header waits/sec” gives an indication of the current rollback segment contention. Waits are a definite indication of contention. The following v$waitstat query will display number of waits since instance startup:

SELECT * FROM V$WAITSTAT;

Any non-zero value for ‘undo header’ in the CLASS column of “v$waitstat” indicates contention for rollback segment header blocks.

You may want to add a rollback segment when you know you have a large transaction.

2. Is PCTINCREASE for rollback segments always 0?

True.

3. What DML creates the most undo?

Delete and update will probably create the most undo. INSERT STATEMENT creates the least undo because oracle only needs to store the rowid.

The number of bytes required for storage of undo, or information that is needed in case of rollback, depends on two things: 1) the type of transaction being performed (insert, update, delete, etc.) and 2) the actual data being processed. In general, inserting a given record into a table generates less undo than deleting the same record, because while rolling back an insert only requires deleting the row, rolling back a delete requires reinserting that row. (It would take less bytes to store a rowid than to store information to reconstruct the actual row itself.)

Additionally, the undo generated for an update on a fraction of a row is not proportionate to the amount generated for the entire row, due to additional overhead required.

4. If you have a table with an index and you insert a row, does Oracle create undo for the index as well?

Yes. When inserting into a table with an index, there is considerably more undo created than when inserting into a table without an index

Here is an example:

Update emp set empno=15; when no one else is on the system.

In v$rollstat, these numbers were compared:

1,214,058 writes (no indexes)

4,688,328 writes (one index)

Update can cause a key to change, meaning Oracle is deleting from one part of the index and inserting into potentially an entirely different part of the index. If the block has to split then more undo is generated.

5. How does Oracle determine which rollback segment to use?

The rules are:

(i) always assign to rbs which has least number of active txns

(ii) if two or more rbs have the same “least number of active txns” , then assign to the one which is after the last one used. This ensures that undo is kept for a longer time.

6. Can a transaction span several rollback segments?

No. A transaction can span several extents but must remain in the same rollback segment throughout the duration of the transaction.

7. What do you record in the data block when DML occurs?

Here are the generic steps:

a. Pin the current version of the block in database buffer cache.

b. Write the change to the block in the buffer cache. This is the real change that was poited by DML.

c. Write the undo information to a redo record in the redo buffers.

d. Write the undo information to a block in the rollback segment.

e. Write the change to a redo record in the redo buffers.

f. LGWR writes out redo buffers at some later time. DBWR writes out the changed blocks at some later time. LGWR always writes out redo records before DBWR can write out the changed block.

g. When you commit, Oracle updates transaction table and record the SCN for that transaction.

Oracle, SQL scripts

Post navigation

Previous Post: logminer and my_lbu
Next Post: Session_info.ksh

Related Posts

  • Explain Plan Output 2 Oracle
  • get_ratio.sql get the ratio of users from v$session and this uses CASE-WHEN-THEN clause Oracle
  • Parallel DML Oracle
  • findx.sql /* Find Indexes on specified USER.TABLE_NAME */ Oracle
  • Specify the Rollback segment to use in Transaction Oracle
  • Oracle 10g for solaris 10 Oracle

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Categories

  • AMC10 (0)
  • Ansible (0)
  • AWS (2)
  • Azure (1)
  • Django (0)
  • GIT (1)
  • Linux/Unix (150)
  • MYSQL (5)
  • Oracle (403)
  • PHP/MYSQL/Wordpress (10)
  • POSTGRESQL (1)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (18)
  • rman-dataguard (26)
  • shell (151)
  • SQL scripts (349)
  • SQL Server (6)
  • Uncategorized (6)
  • Videos (0)

Recent Posts

  • AMC1020-Sep-2026
  • Key Management in Oracle: The Core Issue: Missing Master Key12-May-2026
  • SAT Mathematics 10 questions and answer at the end.30-Apr-2026
  • top 10 AI news today30-Apr-2026
  • runon_allpdbs_show_conname.sh23-Apr-2026
  • runon_allcdbs_find_pdbs.sh23-Apr-2026
  • Running PDB on single node in RAC09-Apr-2026
  • find_arc.sql09-Apr-2026
  • pvm_pre_change.sql08-Apr-2026
  • find_encr_wallet.sql08-Apr-2026

Archives

  • 2026
  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • grep multuple patterns Linux/Unix
  • database trigger failing Oracle
  • fkwoindex.sql /* Find FK without Index */ Oracle
  • RAC 11g with vmware Oracle
  • standard Monitoring – 1 Oracle
  • T-SQL Vs PL/SQL Syntax SQL Server
  • Oracle Material from OTN Oracle
  • runsql_once.ksh Linux/Unix

Copyright © 2026 pvmehta.com.

Powered by PressBook News WordPress theme