How to Resolve ORA-00600 [3020] Stuck Recovery

  • by

When recovering standby database 8i, I met the following errors:

SQL> recover standby database;
...
ORA-00279: change 439587243345 generated at 11/24/2010 02:23:39 needed for thread 1
ORA-00289: suggestion : /oracle/archive/ORCL_1349587.arc
ORA-00280: change 439587243345 for thread 1 is in sequence #9347569
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00283: recovery session canceled due to errors
ORA-00600: internal error code, arguments: [3020], [593450128], [1], [9347569], [3459], [317], [], []
...

Found a document 30866.1 from MOS, here is the quot:

...This is called a 'STUCK RECOVERY'.
There is an inconsistency between the information stored in the redo and the information stored in a database block being recovered.
ARGUMENTS:
For Oracle 9.2 and earlier:
Arg [a] Block DBA
Arg [b] Redo Thread
Arg [c] Redo RBA Seq
Arg [d] Redo RBA Block No
Arg [e] Redo RBA Offset....

Since the primary database has no problems at all, I suspected some transactions in sequence #9347569 had logical problems. So the best solution might be to advance the sequence (archive log) by copying problematic data files to standby database and let the recovery proceeds. Here are the steps:

  1. Identify the problematic data files.
  2. (Optionally) Alter system to switch log file in primary database.
  3. Let the data files to enter backup mode by altering tablespace xxx begin backup.
  4. Copy the data files from primary to standby.
  5. Let the data files to exit backup mode by altering tablespace xxx end backup.
  6. Recover standby database.

Leave a Reply

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