Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters...

28
Chapter 12 Performing Incomplete Recovery

Transcript of Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters...

Page 1: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Chapter 12Performing Incomplete Recovery

Page 2: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Background

Viewed as one of the more difficult chapters to write

Thought it was important to put in material such as restoring to a previous incarnation and restoring a subset of datafiles

Debated on how much information to put in on TSPITR, decided to go with one automated example

Page 3: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Incomplete Recovery

Incomplete recovery in Oracle means that you do not recover all transactions that were committed at the time of the failure

Usually performed because you don’t have all redo required to perform complete recovery

Also performed sometimes on purpose due to a user error (like erroneously deleted data)

Page 4: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Three Methods for Initiating Incomplete Recovery Using RMAN

restore database until restore tablespace until flashback database

Restore database until is the main focus of this chapter

Page 5: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Four Types of RMAN Incomplete Recovery Commands

Time Change (sometimes called system change

number [SCN]) Log sequence number Restore point (Oracle Database 10g Release

2 and newer versions)

Page 6: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Determining the Type of Incomplete Recovery to Perform

You know approximately what time you want to stop the recovery

You know the particular log file for which you want to stop the recovery process You know the SCN at which you want to end the recovery

process You want to restore to a defined restore point You want to restore one tablespace to a point in time You want to restore and recover a subset of your database’s

datafiles You have enabled the flashback database feature and want to

flashback your database.

Page 7: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Consider Alternatives to Incomplete Recovery

Flashback drop Flashback table or Flashback query to restore and recover an

erroneously dropped table or deleted data

Page 8: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Performing Time Based Incomplete Recovery

Specify the time as part of the restore and recover commands

Use the set until time command, and then issue unqualified restore and recover commands

Page 9: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Performing Time Based Incomplete Recovery

connect target /RMAN> startup mount;RMAN> run{RMAN> set until time "to_date('05-oct-2006 14:00:00',

'dd-mon-rrrr hh24:mi:ss')";RMAN> restore database;RMAN> recover database;RMAN> }RMAN> alter database open resetlogs;

Page 10: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Performing Log Sequenced Based Incomplete Recovery

connect target /RMAN> startup mount;RMAN> restore database until sequence 50;RMAN> recover database until sequence 50;RMAN> alter database open resetlogs;

Do you have to open the database with resetlogs?

Page 11: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Performing Log Sequenced Based Recovery

RMAN> connect target /

RMAN> startup mount;

RMAN> run{

2> set until sequence 125 thread 1;

3> restore database;

4> recover database;

5> }

RMAN> alter database open resetlogs;

Page 12: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Performing Cancel Based Recovery

Use RMAN to restore datafiles Get out of RMAN to perform the recovery

portion, use SQL*Plus Why would a DBA want to use SQL*Plus

instead of RMAN? Very similar to log sequence based recovery

Page 13: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Performing Cancel Based Recovery

RMAN> connect target /RMAN> startup mount;RMAN> restore database; # restore database from last

backup Once your database is restored, you can start a

SQL*Plus session and initiate a cancel based recovery, as shown here:

SQL> connect / as sysdbaSQL> recover database until cancel;

Page 14: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Using Log-Miner to find an SCN

1. Specify a set of archived redo log files for LogMiner to analyze.

2. Start LogMiner, and specify a data dictionary.

3. Perform analysis.

4. Stop the LogMiner session.

Page 15: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Performing Change or SCN Based Recovery

RMAN> connect target /

RMAN> startup mount;

RMAN> restore database until scn 950;

RMAN> recover database until scn 950;

RMAN> alter database open resetlogs;

Page 16: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Performing Change or SCN Based Recovery

RMAN> connect target /

RMAN> startup mount;

RMAN> run{

2> set until scn 950;

3> restore database;

4> recover database;

5> }

RMAN> alter database open resetlogs;

Page 17: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Recovering to a Restore Point

New feature with Oracle Database 10g or higher

RMAN> connect target /

RMAN> startup mount;

RMAN> restore database until restore point MY_RP;

RMAN> recover database until restore point MY_RP;

RMAN> alter database open resetlogs;

Page 18: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Restoring a Non-Archivelog Mode Database

You can use RMAN to backup up a non-archivelog mode database

Database must be in mount mode when backing up a non-archivelog mode database

You can use that backup to restore the database back to the point in time that it was backed up

There is no roll forward because there are no archive redo logs to apply

Page 19: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Restoring a Non-Archive redo log database

RMAN> connect target /

RMAN> startup nomount;

RMAN> restore controlfile from autobackup;

RMAN> alter database mount;

RMAN> restore database;

RMAN> alter database open resetlogs;

Page 20: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Recovering to a Previous Incarnation

In 9i and lower, this used to be a difficult task Oracle Support would often be called for

assistance When a database is opened with the

resetlogs command, a new incarnation of the database is created

What if you want to restore to a point prior to a resetlogs?

Page 21: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Restoring and Recovering to a Previous Incarnation of the Database

RMAN> connect target /RMAN> startup nomount;RMAN> restore controlfile from autobackup

until time2> "to_date('03-sep-2006 00:00:00', 'dd-mon-

rrrr hh24:mi:ss')";RMAN> alter database mount;RMAN> list incarnation of database;

Page 22: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Restoring and Recovering to a Previous Incarnation of the Database

RMAN> restore database until time2> "to_date('03-sep-2006 00:00:00', 'dd-mon-rrrr

hh24:mi:ss')";RMAN> recover database until time2> "to_date('03-sep-2006 00:00:00', 'dd-mon-rrrr

hh24:mi:ss')";RMAN> alter database open resetlogs;

Note: page 376, that should say “resetlogs” one word not “reset logs”

Page 23: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Performing Tablespace Point in Time Recovery

1. Determine and resolve any dependencies to objects in tablespaces not included in the TSPITR

2. Determine whether there are objects that will not be recovered

3. Create a destination on disk to temporarily hold the auxiliary database

4. Run the recover tablespace until command

5. Back up the restored tablespace and alter it online

Page 24: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

RMAN Automates TSPITR

1. Creates an auxiliary instance, starts it, and connects to it2. Takes offline tablespaces that are involved with TSPITR3. Restores the backup control file that corresponds to the target restore time4. Restores datafiles to a destination specified by your AUXILIARY DESTINATION5. Recovers restored datafiles in an auxiliary location6. Opens an auxiliary database with the open resetlogs command7. Exports the auxiliary data dictionary metadata about recovered tablespaces and

shuts down the auxiliary database8. Issues a switch command on the target database to update the control file to

point at the recovered auxiliary datafiles9. Imports objects associated with recovered tablespaces into the target database10. Deletes the auxiliary datafiles

Page 25: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Recovering a Subset of Datafiles

What if you only want to perform an incomplete recovery on a subset of datafiles?

When performing incomplete recovery, you must perform recovery on all online datafiles

Any datafiles that you don’t want to recover must be taken offline first

Page 26: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Incomplete Recovery on a Subset of Datafiles

RMAN> connect target /

RMAN> startup mount;

RMAN> sql 'alter database datafile 7, 8, 9 offline for drop';

RMAN> restore database until SCN 314159;

RMAN> recover database until SCN 314159;

RMAN> alter database open resetlogs;

Page 27: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Troubleshooting Incomplete Recovery

Ensure you follow the correct sequence of events

Ensure the same point is used

1. restore database until <specified point>;

2. recover database until <specified point>;

3. alter database open resetlogs;

Page 28: Chapter 12 Performing Incomplete Recovery. Background Viewed as one of the more difficult chapters to write Thought it was important to put in material.

Ensure Datafile SCNs are Aligned

select file#, status, checkpoint_change#,

to_char(checkpoint_time,'dd-mon-rrrrhh24:mi:ss')

from v$datafile_header;