Presentation is loading. Please wait.

Presentation is loading. Please wait.

IT 21003 Database Administration Section 05. Rollback Segments: An Introduction  What are they?  Space within a database used to store “before” images.

Similar presentations


Presentation on theme: "IT 21003 Database Administration Section 05. Rollback Segments: An Introduction  What are they?  Space within a database used to store “before” images."— Presentation transcript:

1 IT 21003 Database Administration Section 05

2 Rollback Segments: An Introduction  What are they?  Space within a database used to store “before” images  Made up of extents and blocks (similar to data segments)  Consist of rollback entries  A rollback entry has the necessary information to undo the changes made by one transaction

3 Rollback Segments: An Introduction  What are they used for?  Rollback of transactions  Read Consistency  Recovery

4 Rollback Segments: Structure  Rollback segments contain rollback entries, which consist of  Transaction ID of the transaction, which makes the change to the database  Block information about the affected blocks  The “before” image – an inverse of the transaction

5 Rollback Segments: Structure  Consist of extents and treated as a “ring of extents” for cyclic reuse  Extents may be freed up for “normal” use when the rollback segment is Dropped Dropped Shrunk to its normal size Shrunk to its normal size  Each rollback segment requires a least two extents

6 Rollback Segments: Structure  The rollback entries require protection using the redo logs  They are stored within the database  Needed for rollback when recovering from media failure

7 Rollback Segments: Usage  When are rollback segments required?  Deadlock or statement execution error  Rollback to a savepoint  Rollback of a transaction due to user request  Rollback of a transaction due to abnormal process termination  Rollback of uncommitted transactions on instance failure  Read-consistent snapshots – need old versions of data and index

8 Rollback Segments: Usage  How big should they be?  Rollback segment sizing suffers a fundamental tension  Short transactions – small rollback segments  Long transactions – large rollback segments

9 Rollback Segments: Requirements  How many?  The SYSTEM tablespace requires its own special rollback segment  At least one additional rollback segment is required for databases using more then one tablespace  The quantity depends entirely on the transaction traffic

10 Rollback Segments: Requirements  Oracles recommended number of rollback segments: Number of concurrent transactions Recommended rollback segments Fewer than 16 4 Between 16 and 31 7 Greater than 31 5 but never more than 50

11 Rollback Segments: Public and Private  PUBLIC rollback segments  Used by any instance accessing a database in parallel server mode  Declared as public in Create Public Rollback Segment Create Public Rollback Segment  Once “claimed” by an instance, cannot be used by other instances

12 Rollback Segments: Public and Private  PRIVATE rollback segments  Limited for use by only one instance accessing the database  Explicitly listed in the parameter file and picked up by the instance on startup  Lie dormant if no instance specifies them in the parameter file

13 Rollback Segments: Public and Private  The rollback_segments parameter  Example: rollback_segments = rbs_1, rbs_2 rollback_segments = rbs_1, rbs_2  Default value is NULL, causing the instance to use only the SYSTEM rollback segment plus any available public rollback segments

14 Rollback Segments: Usage  How are rollback segments acquired?  On startup, the instance consults the list of private rollback segments in the parameter file and acquires all those specified  If the number acquired does not satisfy the ratio: Transactions/Transactions_Per_Rollback_Segment 65/20 then Oracle attempts to acquire 4 rollback segments 65/20 then Oracle attempts to acquire 4 rollback segments it attempts to acquire any PUBLIC rollback segments within the database until the ratio is reached it attempts to acquire any PUBLIC rollback segments within the database until the ratio is reached  If the ratio is not satisfied, the segments are used “as-is”

15 Rollback Segments: Creating Rollback Segments  Create [Public] Rollback Segment rs_name  [Tablespace tablespacename]  [Storage ( [Initial n] [Next n] [Minextents n]  [Maxextents n] [Optimal n] ) ];

16 Rollback Segments: Creating Rollback Segments  It is recommended to set INITIAL equal to NEXT in order to make all extents the same size  Size of extents should be  Small enough to minimize page faulting in the buffer cache  Large enough to minimize excessive recursive SQL due to dynamic allocation of space and to support read consistency  After creation, rollback segments must be altered to be brought online for use  Alter Rollback Segment rs_name Online;

17 Rollback Segments: Guidelines  Must have a minimum of two extents (preferably more) on creation  Set MINEXTENTS to a value between 8 and 20  MAXEXTENTS should be “high” to cater to large normal transactions Initial default value for MAXEXTENTS depends on the value of DB_BLOCK_SIZE Initial default value for MAXEXTENTS depends on the value of DB_BLOCK_SIZE  Transactions use rollback segments on an extent- by-extent basis, so the value of INITIAL should be equal to NEXT

18 Rollback Segments: Guidelines  Use PRIVATE rollback segments when possible  PUBLIC rollback segments are mainly used in parallel server mode  Make a list of them in the parameter file  Cannot set a value for PCTINCREASE  It is set by Oracle to Zero

19 Rollback Segments: Guidelines  Make all rollback segments the same size  Rollback segments allocated to transactions on a round-robin basis (Cyclic Reuse)  Could define on large rollback segment and manually direct large transactions to it  Include the following statement at the start of the transaction:  Set Transaction Use Rollback Segment rs_name;

20 Rollback Segments: Guidelines  Size of rollback segment – a rule of thumb  On average, each rollback segment should be about 10 percent of the size of the largest table  So:  Total size of rollback segment = T  Number of Initial extents specified = n  Then size of each extent(s) = T/n

21 Rollback Segments: Positioning  Rollback segments are critical for normal running of a database  Loss of rollback segment(s) can interrupt database availability  Rollback segments may be stored in any tablespace  SYSTEM rollback segment must be in the SYSTEM tablespace  Could store all rollback segments in the SYSTEM tablespace

22 Rollback Segments: Positioning  Store a rollback segment in each tablespace  Balances I/O but makes every disk critical and is not recommended  Tablespaces with active rollback segments cannot be taken offline  Store all rollback segments on a disk of their own this is the recommended way  Create a tablespace for rollback segments  Makes it easier to take tablespaces offline

23 Rollback Segments: OPTIMAL Clause  Your chance to specify an optimum working size for a rollback segment  OPTIMAL is the amount of residual space to which rollback segments will truncate when inactive extents are discovered by transactions  Small values of OPTIMAL help to keep rollback segments small enough to fit in memory  Suitable for systems with high frequency of short transactions  Do not set OPTIMAL such that the rollback segments shrinks to below 8 to 20 extents

24 Rollback Segments: OPTIMAL Clause  Large values reduce the number of shrink and extend operations (Dynamic Space Allocation)  Suitable for large transactions or long-running queries  v$rollstat – provides information about rollback segments

25 Rollback Segments: v$rollstat table  Select *  From v$rollstat;  Contains information about:  Current size and average active size of rollback segment  Number of shrink and extend operations  Largest size to which the rollback segment has extended (represented by HWMSIZE known as the high watermark

26 Rollback Segments: OPTIMAL Clause  Setting Guidelines for OPTIMAL Shrinks Avg Size Shrunk HighHigh Periodic long transactions could cause this, set OPTIMAL higher until shrinks are low HighLow OPTIMAL is too small (too many shrinks) LowLow If average active size = OPTIMAL then OPTIMAL is Ok else OPTIMAL is too large (not many shrinks being performed) LowHigh OPTIMAL is set correctly – Do Nothing

27 Rollback Segments: Setting OPTIMAL  Rollback segments can also be manually shrunk  Alter Rollback Segment rs_name Shrink To 2M;  Do not set a value for OPTIMAL for the SYSTEM rollback segment

28 Rollback Segments: How Transactions Use them  On initiation a transaction is allocated a rollback segment on a round-robin (cyclic reuse) basis  Once a rollback segment is allocated, the transaction can use no other  The transaction places its ID in a transaction table held in the header block of the rollback segment  Usual to have a number of rollback segments to prevent transactions from queuing and waiting for others to insert their IDs

29 Rollback Segments: How Transactions Use them  Each rollback segment has cyclically reusable extents and a head and tail pointer  The “Head” is the position at which the new rollback information is to be written  The “Tail” is the position of the oldest active data written by an uncommitted transaction (cannot yet be overwritten)  The Head cannot proceed past the Tail

30 Rollback Segments: How Transactions Use them  A transaction writes rollback data into the rollback segment on an extent-by-extent basis  Starts writing into the current extent This is the extent containing the “Head” pointer This is the extent containing the “Head” pointer  When the extent fills – the head moves on to the next extent  If the next extent is not yet free (contains the tail), a new extent is allocated  Extents can be shared by transactions, but not blocks within the extents  Inactive extents contain no active rollback entries from transactions

31 Rollback Segments: Removal of Extents  A rollback segment may shrink only when an extent fills and the Head is able to move into the next extent  At this point, further “Next” extents are investigated and if they are also inactive, they are deallocated from the rollback segment until the OPTIMAL size is reached  In this way server processes looking for free extents deallocate the oldest inactive extents first  This means it could be some time before the rollback segment actually shrinks

32 Rollback Segments: Processing Transaction 1 Transaction 2 Extent 4 Extent 3 Extent 1 Extent 2 Active Extent without space Active Extent with space Rollback Segment Phase 1

33 Rollback Segments: Processing Transaction 1 Transaction 2 Extent 4 Extent 3 Extent 1 Extent 2 Active Extent without space Active Extent with space Rollback Segment Phase 2

34 Rollback Segments: Processing Transaction 3 Transaction 4 Extent 3Extent 1 Extent 2 Active Extent without space Active Extent with space Rollback Segment Phase 3, Option 1 Available Extents Extent 1 has become inactive Extent 4

35 Rollback Segments: Processing Transaction 3 Transaction 4 Extent 2 Extent 5 Extent 1 Active Extent without space Active Extent with space Rollback Segment Phase 3, Option 2 No Available Extents Extent 1 remains active Extent 3 Extent 4

36 Rollback Segments: Dropping  Statement  Drop [Public] Rollback Segment rs_name;  Performed when the rollback segment extents have caused free-space fragmentation, or when it needs to be relocated  All storage is returned to free space  The rollback segment must be Offline  Remember to remove its name from the parameter file

37 Rollback Segments: Manipulation  To set a rollback segment offline (unavailable for transactions)  Alter [Public] Rollback Segment rs_name Offline;  The segment will not actually go offline until all its active transactions have completed  The SYSTEM rollback segment cannot be taken offline  Manipulation is similar to tables

38 Rollback Segments: “Snapshot Too Old” Error  This error normally occurs when a long- running query needs to access rollback information to obtain a consistent view of the data  Oracle always presents queries with a consistent set of data from a combination of data in the database tables and rollback segments  Transactions are given priority in the use of rollback segments  A transaction can overwrite data in inactive extents even if that information may be needed to construct a read-consistent view for queries

39 Rollback Segments: “Snapshot Too Old” Error  This is the reason for maintaining a reasonable number of extents in a rollback segment  Avoids a rollback segment wrapping around too quickly on the extents  When the “Before Image” doesn’t exists

40 Questions?


Download ppt "IT 21003 Database Administration Section 05. Rollback Segments: An Introduction  What are they?  Space within a database used to store “before” images."

Similar presentations


Ads by Google