10 Replies Latest reply: Oct 7, 2013 8:53 PM by Hemant K Chitale RSS

    Restore DB from RAC (two nodes) DB to single node

    Mody82

      Hi guys,

       

           Environment:

                DB on RAC (2 nodes)

                OS Windows 2008R2

                Oracle 11gR2

                Backup : EMC Networker.

       

           Requirements :

                Need to do restore for this DB on another machine (one node) , for testing and updating purpose.

       

           Issue :

           Recovery is not succeeded , but restore of Controlfiles and DataFiles is done successfully to the new machine with new directory structures.

       

           Error:

      ORA-10879: error signaled in parallel recovery slave

      ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

      ORA-01152: file 1 was not restored from a sufficiently old backup

      ORA-01110: data file 1: 'D:\APP\DATA\SYSTEM01.DBF'

       

           Now, wants to open the DB after recovery, How can I do that ? (need a scripts ...)

       

       

      FYI , Scripts using ##

      --------------------

      run

      {

      ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE'

      parms 'ENV=(NSR_SERVER=bkpsrv,NSR_CLIENT=dbsrv)';

      ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE'

      parms 'ENV=(NSR_SERVER=bkpsrv,NSR_CLIENT=dbsrv)';

      SET NEWNAME FOR DATAFILE '+DBDATA/SYSTEM.256.777377935' TO 'D:\app\data\SYSTEM01.DBF';

      SET NEWNAME FOR DATAFILE '+DBDATA/sysaux.257.777377935' to 'D:\app\data\sysaux.dbf';

      SET NEWNAME FOR DATAFILE '+DBDATA/undotbs1.258.777377935' to 'D:\app\data\undotbs01.dbf';

      SET NEWNAME FOR DATAFILE '+DBDATA/users.259.777377935' to 'D:\app\data\users01.dbf';

      SET NEWNAME FOR DATAFILE '+DBDATA/undotbs2.264.777378113' to 'D:\app\data\undotbs02.dbf';

      set until sequence 16510;

      restore database;

      recover database;

      RELEASE CHANNEL ch00;

      RELEASE CHANNEL ch01;

      }

      ---------------------------------------------------------

        • 1. Re: Restore DB from RAC (two nodes) DB to single node
          Javier Francisco Ruiz

          Are you sure you used the correct sequence number?

          • 2. Re: Restore DB from RAC (two nodes) DB to single node
            DK2010

            Hi,

             

            You are changing the datafile name here, you have to  use command switch datafile as well.

            What backup you are using COLD or Hot

            • 3. Re: Restore DB from RAC (two nodes) DB to single node
              Mody82

              Are you sure you used the correct sequence number?

               

              yep .. correct seq.

               

              What backup you are using COLD or Hot ?

               

              Hot backup (Online)

              • 4. Re: Restore DB from RAC (two nodes) DB to single node
                DK2010

                Hi,

                 

                use switch datafile all; in your restore command

                Check the Alert log for ant hint

                You can also check the link :Database Migration | Levi Pereira

                 

                HTH

                • 5. Re: Restore DB from RAC (two nodes) DB to single node
                  TSharma-Oracle

                  Use 'switch datafile all' Or 'switch database to copy' command after restore database command. This command updates the control file with new file names.The switch directive tells RMAN that any further recovery options should apply to the renamed (copied) datafiles.

                  Also,

                  When you get this error,

                  1) go to the sqlplus,

                  2) open the database in the mount stage,

                  3) run this following query and post the output

                   

                  select status,checkpoint_change#,checkpoint_time,count(*), fuzzy from v$datafile_header group by status,checkpoint_change#,checkpoint_time, fuzzy;

                  • 6. Re: Restore DB from RAC (two nodes) DB to single node
                    Hemant K Chitale

                    When recovering a RAC database (2 nodes), you have 2 threads of redo to recover.  Which thread is the specified sequence 16510 from ?  What about the other thread ?  What were the sequence numbers at that time ?  Do you have the archivelogs from both threads ?  When you did the RECOVER DATABASE commands, what messages were logged to the alert.log ? -- these would show which archive log sequences being applied.

                     

                    Hemant K Chitale

                    • 7. Re: Restore DB from RAC (two nodes) DB to single node
                      Mody82

                      Dear all ,

                       

                      I solved the issue by edit a line into my init<SID>.ora

                      _allow_resetlogs_corruption=true

                      [make sure it starts with the '_' [underscore] character

                       

                      Then :

                      1. startup mount

                      2. recover database until cancel using backup controlfile

                      3. on return of the prompt input - cancel

                      4. alter database open resetlogs

                       

                      it works fine and opened successfully ....

                       

                      But is it right way ? and it will loss any data .. or it will be corrupt my database ?

                       

                      Regards

                      • 8. Re: Restore DB from RAC (two nodes) DB to single node
                        Hemant K Chitale

                        Yes, you very likely have lost data.  You can't guarantee that all the data that you have is consistent (not corrupt) either.

                         

                         

                        Hemant  K Chitale

                        • 9. Re: Restore DB from RAC (two nodes) DB to single node
                          Mody82

                          HemantKChitale wrote:

                           

                          When recovering a RAC database (2 nodes), you have 2 threads of redo to recover.  Which thread is the specified sequence 16510 from ?  What about the other thread ?  What were the sequence numbers at that time ?  Do you have the archivelogs from both threads ?  When you did the RECOVER DATABASE commands, what messages were logged to the alert.log ? -- these would show which archive log sequences being applied.

                           

                          Hemant K Chitale

                          The thread number is 2  ,,,, u mean that I have to specify it like this

                           

                          set until sequence 16510 thread 2;

                           

                          and should I mention the other thread with sequence also ? like this ...

                          set until sequence <seq> thread 1;

                           

                          HemantKChitale wrote:

                           

                          Yes, you very likely have lost data.  You can't guarantee that all the data that you have is consistent (not corrupt) either.

                           

                           

                          Hemant  K Chitale

                           

                          So, that's mean never to use this parameter ( _allow_resetlogs... ),  if there's possibility of losing data ...

                           

                          Waiting your reply

                           

                          Regards

                          • 10. Re: Restore DB from RAC (two nodes) DB to single node
                            Hemant K Chitale

                            Yes, for RAC, the SET UNTIL clause is SET UNTIL SEQUENCE n  THREAD m

                             

                            For example, if you specified SET UNTIL SEQUENCE 16510 THREAD 2, you must also have all the ArchiveLogs of THREAD 1 upto the same point in time as 16510 of THREAD 1.   Oracle needs *both* threads to be able to RECOVER the database because transactions occur in both threads.

                             

                            The _allow_resetlogs_corruption is a LAST OPTION choice only if Oracle Support tells you that you have no other options.  It can result in an inconsistent database --- e.g. an uncomitted transaction may appear as commited because the rollback information did not get applied OR a transaction that was committed by users does not get applied because the redo for it is ignored.

                             

                            Hemant K Chitale