|
The ADJUST_SCN event is useful in some recovery situations where the current SCN needs to be incremented by a large value to ensure it is ahead of the highest SCN in the database. This is typically required if either: a. An ORA-600 [2662] error is signalled against database blocks or b. ORA-1555 errors keep occuring after forcing the database open or ORA-604 / ORA-1555 errors occur during database open. (Note: If startup reports ORA-704 & ORA-1555 errors together then the ADJUST_SCN event cannot be used to bump the SCN as the error is occuring during bootstrap. Repeated startup/shutdown attempts may help if the SCN mismatch is small) or c. If a database has been forced open used _ALLOW_RESETLOGS_CORRUPTION (See <Parameter:Allow_Resetlogs_Corruption> ) The ADJUST_SCN event acts as described below. **NOTE: You can check that the ADJUST_SCN event has fired as it should write a message to the alert log in the form "Debugging event used to advance scn to %s". If this message is NOT present in the alert log the event has probably not fired. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If the database will NOT open: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Take a backup. You can use event 10015 to trigger an ADJUST_SCN on database open: startup mount; alter session set events '10015 trace name adjust_scn level 1'; (NB: You can only use IMMEDIATE here on an OPEN database. If the database is only mounted use the 10015 trigger to adjust SCN, otherwise you get ORA 600 [2251], [65535], [4294967295] ) alter database open; If you get an ORA 600:2256 shutdown, use a higher level and reopen. Do *NOT* set this event in init.ora or the instance will crash as soon as SMON or PMON try to do any clean up. Always use it with the "alter session" command. ~~~~~~~~~~~~~~~~~~~~~~~~~~ If the database *IS* OPEN: ~~~~~~~~~~~~~~~~~~~~~~~~~~ You can increase the SCN thus: alter session set events 'IMMEDIATE trace name ADJUST_SCN level 1'; LEVEL: Level 1 is usually sufficient - it raises the SCN to 1 billion (1024*1024*1024) Level 2 raises it to 2 billion etc... If you try to raise the SCN to a level LESS THAN or EQUAL to its current setting you will get <OERI:2256> - See below. Ie: The event steps the SCN to known levels. You cannot use the same level twice. Calculating a Level from 600 errors: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ To get a LEVEL for ADJUST_SCN: a) Determine the TARGET scn: ora-600 [2662] See <OERI:2662> Use TARGET >= blocks SCN ora-600 [2256] See <OERI:2256> Use TARGET >= Current SCN b) Multiply the TARGET wrap number by 4. This will give you the level to use in the adjust_scn to get the correct wrap number. c) Next, add the following value to the level to get the desired base value as well : Add to Level Base ~~~~~~~~~~~~ ~~~~~~~~~~~~ 0 0 1 1073741824 2 2147483648 3 3221225472 (责任编辑:OracleTT) |

