Pages

Saturday, July 26, 2014

Oracle : Rejected the attempt to advance SCN over limit

What is SCN?
SCN (System Change Number) is a primary mechanism to maintain data consistency in Oracle database. SCN is used primarily in the following areas, of course, this is not a complete list:
  1. Every redo record has an SCN version of the redo record in the redo header (and redo records can have non-unique SCN). Given redo records from two threads (as in the case of RAC), Recovery will order them in SCN order, essentially maintaining a strict sequential order. As explained in my paper, every redo record has multiple change vectors too.
  2. Every data block also has block SCN (aka block version). In addition to that, a change vector in a redo record also has expected block SCN. This means that a change vector can be applied to one and only version of the block. Code checks if the target SCN in a change vector is matching with the block SCN before applying the redo record. If there is a mismatch, corruption errors are thrown.
  3. Read consistency also uses SCN. Every query has query environment which includes an SCN at the start of the query. A session can see the transactional changes only if that transaction commit SCN is lower then the query environment SCN.
  4. Commit. Every commit will generate SCN, aka commit SCN, that marks a transaction boundary. Group commits are possible too.

error : Rejected the attempt to advance SCN over limit by xxx hours worth to

solution : 
_external_scn_logging_threshold_seconds = 600 ; then reboot

upgrade to 11.2.0.3.1 or above.

===
ORA-19706: invalid SCN
Cause: The input SCN is either not a positive integer or too large.
Action: Check the input SCN and make sure it is a valid SCN.


EOF

No comments:

Post a Comment