当前位置:Gxlcms > 数据库问题 > 数据库不完全恢复:

数据库不完全恢复:

时间:2021-07-01 10:21:17 帮助过:7人阅读



This note assumes an RMAN catalog is not available. The use of a catalog is optional in this scenario as the backup information is available in the controlfile.

Prior to restoring a database you must ensure you have a valid RMAN backup.

In this example we will assume all files are required to be restored:

* Datafiles
* Controlfiles
* Archivelogs (In order to perform recovery)

Online redo logs and temp files are recreated automatically by RMAN when a resetlogs is issued. Online redo logs and temp files are not backed up by RMAN

Step 1:  Identify controlfile backup to restore


Note: If  you do not need to restore a controlfile proceed to step 3.


* Locate the RMAN backup you wish to restore.
* These files should be located in the directory where they were backed up to.
* If you have the RMAN backup log available this will also be of assistance.

Within the RMAN backup log you will see the controlfile is backed up last the the piece handle is shown.

....
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2009/01/01 12:00:00
channel ORA_DISK_1: finished piece 1 at 2009/01/01 12:00:02
piece handle=/recovery_area/V11/backupset/2009_05_0 /o1_mf_ncsnf_TAG20090506T11_501tr0h7_.bkp tag=TAG20090506T11 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02

If you do not have an RMAN backup log simply locate the last file RMAN backed up.  This should contain the controlfile backup.

Step 2:  Restore the controlfile

2a) If you DO NOT have a spfile.

If you do have an spfile or init.ora move to Step 2b

If you do not have a valid spfile or init.ora RMAN has the ability to nomount an instance without the requirement of a spfile. This will allow you to restore your spfile from a valid backup.

% rman target /

RMAN> startup nomount force;

You will see this message:

..
starting Oracle instance without parameter file for retrieval of spfile
..

At this point you can restore the spfile:

RMAN> restore spfile from ‘/recovery_area/V11/backupset/2009_05_05/o1_mf_ncsnf_TAG20_501tr0h7_.bkp‘;

RMAN> shutdown immediate;

Once the spfile has been successfully restored proceed to Step 2b.

2b)

SQL> startup nomount;

Following the successful nomount of the instance you are ready to restore the
controlfile;

NOTE: The controlfile will be restored to the following location:

SQL> show parameter control_files

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /oradata/V11/control01.ctl

% rman target /

You will see the message:

connected to target database: V11 (not mounted)


RMAN> restore controlfile from ‘/recovery_area/V11/backupset/2009_05_06/o1_mf_ncsnf_TAG20090506T113947_501tr0h7_.bkp‘;

Starting restore at 2009/05/11 11:01:26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=151 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oradata/V11/control01.ctl
Finished restore at 2009/05/11 11:01:27

In this example the controlfile has been restored to ‘/oradata/V11/control01.ctl‘

Step 3:  Restore and recover the database

Your next task is to restore the database and perform recovery.  Mount the database now that the controlfile has been restored:

RMAN> alter database mount;

Now you have two options for recovery.

1) Full/Complete recovery.
2) Point In Time Recovery (PIT)

In both examples it is assumed that all archivelogs are available to perform the recovery.

 

Full recovery
==========

To Perform a full restore and recovery.

run{
restore database;
recover database;
alter database open resetlogs;
}


If you performed a complete recovery with current controlfile and online redologs in place, you might get below error when opening the database with resetlogs:

ORA-01139: RESET LOGS option only valid after an incomplete database recovery

At this point simply open the database without resetlogs option.

PITR Recovery
===========


Point-In-Time Recovery (PITR) would be used if you have decided to restore a database to a particular point in time. This may be warranted for a hardware fault or if you are aware of a database corruption that occured at a certain date/time.

run{
set until time "to_date(‘Aug 16 2014 10:30:00‘,‘Mon DD YYYY HH24:MI:SS‘)";
restore database;
recover database;
sql ‘alter database open resetlogs‘;
}



NOTE: The above scripts may be altered to allocate more channels. Good practice would be to review the backup log and use the same number of channels for restore as that used by the backup. 

数据库不完全恢复:

标签:sch   success   hardware   sim   tag   com   error   over   let   

人气教程排行