12
Oracle database Backup and Recovery FAQ - Oracle FAQ http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM] Complete Database For Desktop, CS, and Web Download the Free Trial here www.4d.com/trial Tableau Evaluation Independent reviewof BI tools. Tested hands on. In-depth. www.biscorecard.com site navigation Wiki Home Forum Home Blogger Home site highlights Blog Aggregator FAQ's Mailing Lists Usenet News RSS Feeds wiki navigation Categories Recent changes Random page Help toolbox What links here Related changes Special pages Printable version Permanent link discussion edit history Log in / create account Oracle database Backup and Recovery FAQ: Contents [ hide] 1 General Backup and Recovery questions 1.1 Why and when should I backup my database? 1.2 What strategies are available for backing-up an Oracle database? 1.3 What is the difference between online and offline backups? 1.4 What is the difference between restoring and recovering? 1.5 My database is down and I cannot restore. What now? 1.6 How does one backup a database using the export utility? 1.7 How does one put a database into ARCHIVELOG mode? 1.8 I've lost an archived/online REDO LOG file, can I get my DB back? 2 User managed backup and recovery 2.1 How does one do off-line database backups? 2.2 How does one do on-line database backups? 2.3 My database was terminated while in BACKUP MODE, do I need to recover? 2.4 Does Oracle write to data files in begin/hot backup mode? 3 RMAN backup and recovery 3.1 What is RMAN and how does one use it? 3.2 How does one backup and restore a database using RMAN? 3.3 How does one backup and restore archived log files? 3.4 How does one create a RMAN recovery catalog? 3.5 How does one integrate RMAN with third-party Media Managers? 3.6 How does one clone/duplicate a database with RMAN? 3.7 Can one restore RMAN backups without a CONTROLFILE and RECOVERY CATALOG? Backup and recovery is one of the most important aspects of a DBA's job. If you lose your company's data, you could very well lose your job. Hardware and software can always be replaced, but your data may be irreplaceable! Normally one would schedule a hierarchy of daily, weekly and monthly backups, however consult with your users before deciding on a backup schedule. Backup frequency normally depends on the following factors: Rate of data change/ transaction rate Database availability/ Can you shutdown for cold backups? Criticality of the data/ Value of the data to the company Oracle database Backup and Recovery FAQ [ edit] General Backup and Recovery questions [ edit] Why and when should I backup my database? page search

Oracle Database Backup and Recovery FAQ - Oracle FAQ

Embed Size (px)

DESCRIPTION

oracle

Citation preview

Page 1: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

Complete DatabaseFor Desktop, CS, and Web Downloadthe Free Trial herewww.4d.com/trial

Tableau EvaluationIndependent reviewof BI tools. Testedhands on. In-depth.www.biscorecard.com

site navigation

Wiki HomeForum HomeBlogger Home

site highlights

Blog AggregatorFAQ'sMailing ListsUsenet NewsRSS Feeds

wiki navigation

CategoriesRecent changesRandom pageHelp

toolbox

What links hereRelated changesSpecial pagesPrintable versionPermanent link

discussion edit historyLog in / create account

Oracle database Backup and Recovery FAQ:

Contents [hide]

1 General Backup and Recovery questions1.1 Why and when should I backup my database?1.2 What strategies are available for backing-up an Oracle database?1.3 What is the difference between online and offline backups?1.4 What is the difference between restoring and recovering?1.5 My database is down and I cannot restore. What now?1.6 How does one backup a database using the export utility?1.7 How does one put a database into ARCHIVELOG mode?1.8 I've lost an archived/online REDO LOG file, can I get my DB back?

2 User managed backup and recovery2.1 How does one do off-line database backups?2.2 How does one do on-line database backups?2.3 My database was terminated while in BACKUP MODE, do I need to recover?2.4 Does Oracle write to data files in begin/hot backup mode?

3 RMAN backup and recovery3.1 What is RMAN and how does one use it?3.2 How does one backup and restore a database using RMAN?3.3 How does one backup and restore archived log files?3.4 How does one create a RMAN recovery catalog?3.5 How does one integrate RMAN with third-party Media Managers?3.6 How does one clone/duplicate a database with RMAN?3.7 Can one restore RMAN backups without a CONTROLFILE and RECOVERY CATALOG?

Backup and recovery is one of the most important aspects of a DBA's job. If you lose your company'sdata, you could very well lose your job. Hardware and software can always be replaced, but your datamay be irreplaceable!

Normally one would schedule a hierarchy of daily, weekly and monthly backups, however consult withyour users before deciding on a backup schedule. Backup frequency normally depends on the followingfactors:

Rate of data change/ transaction rateDatabase availability/ Can you shutdown for cold backups?Criticality of the data/ Value of the data to the company

Oracle database Backup and Recovery FAQ

[edit]General Backup and Recovery questions

[edit]Why and when should I backup my database?

page

search

Page 2: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

Read-only tablespace needs backing up just once right after you make it read-onlyIf you are running in archivelog mode you can backup parts of a database over an extended cycle ofdaysIf archive logging is enabled one needs to backup archived log files timeously to prevent databasefreezesEtc.

Carefully plan backup retention periods. Ensure enough backup media (tapes) are available and thatold backups are expired in-time to make media available for new backups. Off-site vaulting is alsohighly recommended.

Frequently test your ability to recover and document all possible scenarios. Remember, it's the littlethings that will get you. Most failed recoveries are a result of organizational errors andmiscommunication.

The following methods are valid for backing-up an Oracle database:

Export/Import - Exports are "logical" database backups in that they extract logical definitions anddata from the database to a file. See the Import/ Export FAQ for more details.

Cold or Off-line Backups - shut the database down and backup up ALL data, log, and controlfiles.

Hot or On-line Backups - If the database is available and in ARCHIVELOG mode, set thetablespaces into backup mode and backup their files. Also remember to backup the control files andarchived redo log files.

RMAN Backups - while the database is off-line or on-line, use the "rman" utility to backup thedatabase.

It is advisable to use more than one of these methods to backup your database. For example, if youchoose to do on-line database backups, also cover yourself by doing database exports. Also test ALLbackup and recovery scenarios carefully. It is better to be safe than sorry.

Regardless of your strategy, also remember to backup all required software libraries, parameter files,password files, etc. If your database is in ARCHIVELOG mode, you also need to backup archived logfiles.

A hot (or on-line) backup is a backup performed while the database is open and available for use (readand write activity). Except for Oracle exports, one can only do on-line backups when the database isARCHIVELOG mode.

A cold (or off-line) backup is a backup performed while the database is off-line and unavailable to itsusers. Cold backups can be taken regardless if the database is in ARCHIVELOG or NOARCHIVELOGmode.

It is easier to restore from off-line backups as no recovery (from archived logs) would be required tomake the database consistent. Nevertheless, on-line backups are less disruptive and don't requiredatabase downtime.

Point-in-time recovery (regardless if you do on-line or off-line backups) is only available when thedatabase is in ARCHIVELOG mode.

Restoring involves copying backup files from secondary storage (backup media) to disk. This can be

[edit]What strategies are available for backing-up an Oracledatabase?

[edit]What is the difference between online and offline backups?

[edit]What is the difference between restoring and recovering?

Page 3: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

done to replace damaged files or to copy/move a database to a new location.

Recovery is the process of applying redo logs to the database to roll it forward. One can roll-forwarduntil a specific point-in-time (before the disaster occurred), or roll-forward until the last transactionrecorded in the log files.

SQL> connect SYS as SYSDBASQL> RECOVER DATABASE UNTIL TIME '2001-03-06:16:00:00' USING BACKUP CONTROLFILE;

RMAN> run { set until time to_date('04-Aug-2004 00:00:00', 'DD-MON-YYYY HH24:MI:SS'); restore database; recover database;}

This is probably not the appropriate time to be sarcastic, but, recovery without backups are notsupported. You know that you should have tested your recovery strategy, and that you should alwaysbackup a corrupted database before attempting to restore/recover it.

Nevertheless, Oracle Consulting can sometimes extract data from an offline database using a utilitycalled DUL (Disk UnLoad - Life is DUL without it!). This utility reads data in the data files and unloads itinto SQL*Loader or export dump files. Hopefully you'll then be able to load the data into a workingdatabase.

Note that DUL does not care about rollback segments, corrupted blocks, etc, and can thus notguarantee that the data is not logically corrupt. It is intended as an absolute last resort and will mostlikely cost your company a lot of money!

DUDE (Database Unloading by Data Extraction) is another non-Oracle utility that can be used to extractdata from a dead database. More info about DUDE is available at http://www.ora600.nl/ .

Oracle exports are "logical" database backups (not physical) as they extract data and logical definitionsfrom the database into a file. Other backup strategies normally back-up the physical data files.

One of the advantages of exports is that one can selectively re-import tables, however one cannotroll-forward from an restored export. To completely restore a database from an export file onepractically needs to recreate the entire database.

Always do full system level exports (FULL=YES). Full exports include more information about thedatabase in the export file than user level exports. For more information about the Oracle export andimport utilities, see the Import/ Export FAQ.

The main reason for running in archivelog mode is that one can provide 24-hour availability andguarantee complete data recoverability. It is also necessary to enable ARCHIVELOG mode before onecan start to use on-line database backups.

Issue the following commands to put a database into ARCHIVELOG mode:

SQL> CONNECT sys AS SYSDBASQL> STARTUP MOUNT EXCLUSIVE;SQL> ALTER DATABASE ARCHIVELOG;SQL> ARCHIVE LOG START;

[edit]My database is down and I cannot restore. What now?

[edit]How does one backup a database using the export utility?

[edit]How does one put a database into ARCHIVELOG mode?

Page 4: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

SQL> ALTER DATABASE OPEN;

Alternatively, add the above commands into your database's startup command script, and bounce thedatabase.

The following parameters needs to be set for databases in ARCHIVELOG mode:

log_archive_start = TRUElog_archive_dest_1 = 'LOCATION=/arch_dir_name'log_archive_dest_state_1 = ENABLElog_archive_format = %d_%t_%s.arc

NOTE 1: Remember to take a baseline database backup right after enabling archivelog mode. Withoutit one would not be able to recover. Also, implement an archivelog backup to prevent the archive logdirectory from filling-up.

NOTE 2:' ARCHIVELOG mode was introduced with Oracle 6, and is essential for database point-in-time recovery. Archiving can be used in combination with on-line and off-line database backups.

NOTE 3: You may want to set the following INIT.ORA parameters when enabling ARCHIVELOGmode: log_archive_start=TRUE, log_archive_dest=..., and log_archive_format=...

NOTE 4: You can change the archive log destination of a database on-line with the ARCHIVE LOGSTART TO 'directory'; statement. This statement is often used to switch archiving between a set ofdirectories.

NOTE 5: When running Oracle Real Application Clusters (RAC), you need to shut down all nodesbefore changing the database to ARCHIVELOG mode. See the RAC FAQ for more details.

The following INIT.ORA/SPFILE parameter can be used if your current redologs are corrupted or blownaway. It may also be handy if you do database recovery and one of the archived log files are missingand cannot be restored.

NOTE: Caution is advised when enabling this parameter as you might end-up losing your entiredatabase. Please contact Oracle Support before using it.

_allow_resetlogs_corruption = true

This should allow you to open the database. However, after using this parameter your database will beinconsistent (some committed transactions may be lost or partially applied).

Steps:

Do a "SHUTDOWN NORMAL" of the databaseSet the above parameterDo a "STARTUP MOUNT" and "ALTER DATABASE OPEN RESETLOGS;"If the database asks for recovery, use an UNTIL CANCEL type recovery and apply all availablearchive and on-line redo logs, then issue CANCEL and reissue the "ALTER DATABASE OPENRESETLOGS;" command.Wait a couple of minutes for Oracle to sort itself outDo a "SHUTDOWN NORMAL"Remove the above parameter!Do a database "STARTUP" and check your ALERT.LOG file for errors.Extract the data and rebuild the entire database

[edit]I've lost an archived/online REDO LOG file, can I get my DBback?

Page 5: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

This section deals with user managed, or non-RMAN backups.

Shut down the database from sqlplus or server manager. Backup all files to secondary storage (eg.tapes). Ensure that you backup all data files, all control files and all log files. When completed, restartyour database.

Do the following queries to get a list of all files that needs to be backed up:

select name from sys.v_$datafile;select member from sys.v_$logfile;select name from sys.v_$controlfile;

Sometimes Oracle takes forever to shutdown with the "immediate" option. As workaround to thisproblem, shutdown using these commands:

alter system checkpoint;shutdown abortstartup restrictshutdown immediate

Note that if your database is in ARCHIVELOG mode, one can still use archived log files to roll forwardfrom an off-line backup. If you cannot take your database down for a cold (off-line) backup at aconvenient time, switch your database into ARCHIVELOG mode and perform hot (on-line) backups.

Each tablespace that needs to be backed-up must be switched into backup mode before copying thefiles out to secondary storage (tapes). Look at this simple example.

ALTER TABLESPACE xyz BEGIN BACKUP;! cp xyzFile1 /backupDir/ALTER TABLESPACE xyz END BACKUP;

It is better to backup tablespace for tablespace than to put all tablespaces in backup mode. Backingthem up separately incurs less overhead. When done, remember to backup your control files. Look atthis example:

ALTER SYSTEM SWITCH LOGFILE; -- Force log switch to update control file headers ALTER DATABASE BACKUP CONTROLFILE TO '/backupDir/control.dbf';

NOTE: Do not run on-line backups during peak processing periods. Oracle will write complete databaseblocks instead of the normal deltas to redo log files while in backup mode. This will lead to excessivedatabase archiving and even database freezes.

If a database was terminated while one of its tablespaces was in BACKUP MODE (ALTERTABLESPACE xyz BEGIN BACKUP;), it will tell you that media recovery is required when you try torestart the database. The DBA is then required to recover the database and apply all archived logs tothe database. However, from Oracle 7.2, one can simply take the individual datafiles out of backup

[edit]User managed backup and recovery

[edit]How does one do off-line database backups?

[edit]How does one do on-line database backups?

[edit]My database was terminated while in BACKUP MODE, do Ineed to recover?

Page 6: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

mode and restart the database.

ALTER DATABASE DATAFILE '/path/filename' END BACKUP;

One can select from V$BACKUP to see which datafiles are in backup mode. This normally saves asignificant amount of database down time. See script end_backup2.sql in the Scripts section of thissite.

From Oracle9i onwards, the following command can be used to take all of the datafiles out ofhotbackup mode:

ALTER DATABASE END BACKUP;

This command must be issued when the database is mounted, but not yet opened.

When a tablespace is in backup mode, Oracle will stop updating its file headers, but will continue towrite to the data files.

When in backup mode, Oracle will write complete changed blocks to the redo log files. Normally onlydeltas (change vectors) are logged to the redo logs. This is done to enable reconstruction of a block ifonly half of it was backed up (split blocks). Because of this, one should notice increased log activity andarchiving during on-line backups.

To solve this problem, simply switch to RMAN backups.

This section deals with RMAN backups:

Recovery Manager (or RMAN) is an Oracle provided utility for backing-up, restoring and recoveringOracle Databases. RMAN ships with the database server and doesn't require a separate installation.The RMAN executable is located in your ORACLE_HOME/bin directory.

In fact RMAN, is just a Pro*C application that translates commands to a PL/SQL interface. The PL/SQLcalls are statically linked into the Oracle kernel, and does not require the database to be opened(mapped from the ?/rdbms/admin/recover.bsq file).

RMAN can do off-line and on-line database backups. It cannot, however, write directly to tape, butvarious 3rd-party tools (like Veritas, Omiback, etc) can integrate with RMAN to handle tape librarymanagement.

RMAN can be operated from Oracle Enterprise Manager, or from command line. Here are thecommand line arguments:

Argument Value Description-----------------------------------------------------------------------------target quoted-string connect-string for target databasecatalog quoted-string connect-string for recovery catalognocatalog none if specified, then no recovery catalogcmdfile quoted-string name of input command filelog quoted-string name of output message log filetrace quoted-string name of output debugging message log fileappend none if specified, log is opened in append modedebug optional-args activate debuggingmsgno none show RMAN-nnnn prefix for all messages

[edit]Does Oracle write to data files in begin/hot backup mode?

[edit]RMAN backup and recovery

[edit]What is RMAN and how does one use it?

Page 7: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

send quoted-string send a command to the media managerpipe string building block for pipe namestimeout integer number of seconds to wait for pipe input-----------------------------------------------------------------------------

Here is an example:

[oracle@localhost oracle]$ rmanRecovery Manager: Release 10.1.0.2.0 - ProductionCopyright (c) 1995, 2004, Oracle. All rights reserved.

RMAN> connect target;

connected to target database: ORCL (DBID=1058957020)

RMAN> backup database;...

The biggest advantage of RMAN is that it only backup used space in the database. RMAN doesn't puttablespaces in backup mode, saving on redo generation overhead. RMAN will re-read database blocksuntil it gets a consistent image of it. Look at this simple backup example.

rman target sys/*** nocatalog run { allocate channel t1 type disk; backup format '/app/oracle/backup/%d_t%t_s%s_p%p' (database); release channel t1; }

Example RMAN restore:

rman target sys/*** nocatalog run { allocate channel t1 type disk; # set until time 'Aug 07 2000 :51'; restore tablespace users; recover tablespace users; release channel t1; }

The examples above are extremely simplistic and only useful for illustrating basic concepts. By defaultOracle uses the database controlfiles to store information about backups. Normally one would rathersetup a RMAN catalog database to store RMAN metadata in. Read the Oracle Backup and RecoveryGuide before implementing any RMAN backups.

Note: RMAN cannot write image copies directly to tape. One needs to use a third-party media managerthat integrates with RMAN to backup directly to tape. Alternatively one can backup to disk and thenmanually copy the backups to tape.

One can backup archived log files using RMAN or any operating system backup utility. Remember todelete files after backing them up to prevent the archive log directory from filling up. If the archive logdirectory becomes full, your database will hang! Look at this simple RMAN backup scripts:

[edit]How does one backup and restore a database using RMAN?

[edit]How does one backup and restore archived log files?

Page 8: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

RMAN> run {2> allocate channel dev1 type disk;3> backup4> format '/app/oracle/archback/log_%t_%sp%p'5> (archivelog all delete input);6> release channel dev1;7> }

The "delete input" clause will delete the archived logs as they are backed-up.

List all archivelog backups for the past 24 hours:

RMAN> LIST BACKUP OF ARCHIVELOG FROM TIME 'sysdate-1';

Here is a restore example:

RMAN> run {2> allocate channel dev1 type disk;3> restore (archivelog low logseq 78311 high logseq 78340 thread 1 all);4> release channel dev1;5> }

Start by creating a database schema (usually called rman). Assign an appropriate tablespace to it andgrant it the recovery_catalog_owner role. Look at this example:

sqlplus sysSQL> create user rman identified by rman;SQL> alter user rman default tablespace tools temporary tablespace temp;SQL> alter user rman quota unlimited on tools;SQL> grant connect, resource, recovery_catalog_owner to rman;SQL> exit;

Next, log in to rman and create the catalog schema. Prior to Oracle 8i this was done by running thecatrman.sql script.

rman catalog rman/rmanRMAN> create catalog tablespace tools;RMAN> exit;

You can now continue by registering your databases in the catalog. Look at this example:

rman catalog rman/rman target backdba/backdbaRMAN> register database;

One can also use the "upgrade catalog;" command to upgrade to a new RMAN release, or the "dropcatalog;" command to remove an RMAN catalog. These commands need to be entered twice to confirmthe operation.

The following Media Management Software Vendors have integrated their media management softwarewith RMAN (Oracle Recovery Manager):

Veritas NetBackup - http://www.veritas.com/

[edit]How does one create a RMAN recovery catalog?

[edit]How does one integrate RMAN with third-party MediaManagers?

Page 9: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

EMC Data Manager (EDM) - http://www.emc.com/HP OMNIBack/ DataProtector - http://www.hp.com/IBM's Tivoli Storage Manager (formerly ADSM) - http://www.tivoli.com/storage/EMC Networker - http://www.emc.com/BrightStor ARCserve Backup - http://www.ca.com/us/data-loss-prevention.aspxSterling Software's SAMS:Alexandria (formerly from Spectralogic) - http://www.sterling.com/sams/SUN's Solstice Backup - http://www.sun.com/software/whitepapers/backup-n-storage/CommVault Galaxy - http://www.commvault.com/etc...

The above Media Management Vendors will provide first line technical support (and installation guides)for their respective products.

A complete list of supported Media Management Vendors can be found at:http://www.oracle.com/technology/deploy/availability/htdocs/bsp.htm

When allocating channels one can specify Media Management spesific parameters. Here are someexamples:

Netbackup on Solaris:

allocate channel t1 type 'SBT_TAPE' PARMS='SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so.1';

Netbackup on Windows:

allocate channel t1 type 'SBT_TAPE' send "NB_ORA_CLIENT=client_machine_name";

Omniback/ DataProtector on HP-UX:

allocate channel t1 type 'SBT_TAPE' PARMS='SBT_LIBRARY= /opt/omni/lib/libob2oracle8_64bit.sl';

or:

allocate channel 'dev_1' type 'sbt_tape' parms 'ENV=OB2BARTYPE=Oracle8,OB2APPNAME=orcl,OB2BARLIST=machinename_orcl_archlogs)'

The first step to clone or duplicate a database with RMAN is to create a new INIT.ORA and passwordfile (use the orapwd utility) on the machine you need to clone the database to. Review all parametersand make the required changed. For example, set the DB_NAME parameter to the new database'sname.

Secondly, you need to change your environment variables, and do a STARTUP NOMOUNT fromsqlplus. This database is referred to as the AUXILIARY in the script below.

Lastly, write a RMAN script like this to do the cloning, and call it with "rman cmdfile dupdb.rcv":

connect target sys/secure@origdbconnect catalog rman/rman@catdbconnect auxiliary /

[edit]How does one clone/duplicate a database with RMAN?

Page 10: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

run {set newname for datafile 1 to '/ORADATA/u01/system01.dbf';set newname for datafile 2 to '/ORADATA/u02/undotbs01.dbf';set newname for datafile 3 to '/ORADATA/u03/users01.dbf';set newname for datafile 4 to '/ORADATA/u03/indx01.dbf';set newname for datafile 5 to '/ORADATA/u02/example01.dbf';

allocate auxiliary channel dupdb1 type disk;set until sequence 2 thread 1;

duplicate target database to dupdblogfile GROUP 1 ('/ORADATA/u02/redo01.log') SIZE 200k REUSE, GROUP 2 ('/ORADATA/u03/redo02.log') SIZE 200k REUSE;}

The above script will connect to the "target" (database that will be cloned), the recovery catalog (to getbackup info), and the auxiliary database (new duplicate DB). Previous backups will be restored and thedatabase recovered to the "set until time" specified in the script.

Notes: the "set newname" commands are only required if your datafile names will different from thetarget database.

The newly cloned DB will have its own unique DBID.

Details of RMAN backups are stored in the database control files and optionally a Recovery Catalog. Ifboth these are gone, RMAN cannot restore the database. In such a situation one must extract a controlfile (or other files) from the backup pieces written out when the last backup was taken. Let's look at anexample:

Let's take a backup (partial in our case for ilustrative purposes):

$ rman target / nocatalogRecovery Manager: Release 10.1.0.2.0 - 64bit ProductionCopyright (c) 1995, 2004, Oracle. All rights reserved.

connected to target database: ORCL (DBID=1046662649)using target database controlfile instead of recovery catalog

RMAN> backup datafile 1;

Starting backup at 20-AUG-04allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=146 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfchannel ORA_DISK_1: starting piece 1 at 20-AUG-04channel ORA_DISK_1: finished piece 1 at 20-AUG-04piece handle=/flash_recovery_area/ORCL/backupset/2004_08_20/o1_mf_nnndf_TAG20040820T153256_0comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:45channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetincluding current controlfile in backupsetincluding current SPFILE in backupsetchannel ORA_DISK_1: starting piece 1 at 20-AUG-04channel ORA_DISK_1: finished piece 1 at 20-AUG-04piece handle=/flash_recovery_area/ORCL/backupset/2004_08_20/o1_mf_ncsnf_TAG20040820T153256_0comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:04Finished backup at 20-AUG-04[/code]

[edit]Can one restore RMAN backups without a CONTROLFILE andRECOVERY CATALOG?

Page 11: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

Now, let's destroy one of the control files:

SQL> show parameters CONTROL_FILESNAME TYPE VALUE------------------------------------ ----------- ------------------------------control_files string /oradata/orcl/control01.ctl, /oradata/orcl/control02.ctl, /oradata/orcl/control03.ctlSQL> shutdown abort;ORACLE instance shut down.SQL> ! mv /oradata/orcl/control01.ctl /tmp/control01.ctl</pre>

Now, let's see if we can restore it. First we need to start the databaase in NOMOUNT mode:

SQL> startup NOMOUNTORACLE instance started.

Total System Global Area 289406976 bytesFixed Size 1301536 bytesVariable Size 262677472 bytesDatabase Buffers 25165824 bytesRedo Buffers 262144 bytes</pre>

Now, from SQL*Plus, run the following PL/SQL block to restore the file:

DECLARE v_devtype VARCHAR2(100); v_done BOOLEAN; v_maxPieces NUMBER;

TYPE t_pieceName IS TABLE OF varchar2(255) INDEX BY binary_integer; v_pieceName t_pieceName;BEGIN -- Define the backup pieces... (names from the RMAN Log file) v_pieceName(1) := '/flash_recovery_area/ORCL/backupset/2004_08_20/o1_mf_ncsnf_TAG20040820T153256_

v_pieceName(2) := '/flash_recovery_area/ORCL/backupset/2004_08_20/o1_mf_nnndf_TAG20040820T153256_

v_maxPieces := 2;

-- Allocate a channel... (Use type=>null for DISK, type=>'sbt_tape' for TAPE) v_devtype := DBMS_BACKUP_RESTORE.deviceAllocate(type=>NULL, ident=>'d1');

-- Restore the first Control File... DBMS_BACKUP_RESTORE.restoreSetDataFile;

-- CFNAME mist be the exact path and filename of a controlfile taht was backed-up DBMS_BACKUP_RESTORE.restoreControlFileTo(cfname=>'/app/oracle/oradata/orcl/cont

dbms_output.put_line('Start restoring '||v_maxPieces||' pieces.'); FOR i IN 1..v_maxPieces LOOP dbms_output.put_line('Restoring from piece '||v_pieceName(i)); DBMS_BACKUP_RESTORE.restoreBackupPiece(handle=>v_pieceName(i), done=>v_done, params=>null); exit when v_done;

Page 12: Oracle Database Backup and Recovery FAQ - Oracle FAQ

Oracle database Backup and Recovery FAQ - Oracle FAQ

http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ[21/08/2012 01:06:19 PM]

This page was last modified on 1 May 2012, at 10:17. Privacy policy About Oracle Wiki Disclaimers .:: Wiki Home :: Blogger Home :: Forum Home :: Contact :: Privacy ::.

END LOOP;

-- Deallocate the channel... DBMS_BACKUP_RESTORE.deviceDeAllocate('d1');EXCEPTION WHEN OTHERS THEN DBMS_BACKUP_RESTORE.deviceDeAllocate; RAISE;END;/

Let's see if the controlfile was restored:

SQL> ! ls -l /oradata/orcl/control01.ctl-rw-r----- 1 oracle dba 3096576 Aug 20 16:45 /oradata/orcl/control01.ctl[/code]

We should now be able to MOUNT the database and continue recovery...

SQL> ! cp /oradata/orcl/control01.ctl /oradata/orcl/control02.ctl

SQL> ! cp /oradata/orcl/control01.ctl /oradata/orcl/control03.ctl

SQL> alter database mount;

SQL> recover database using backup controlfile;ORA-00279: change 7917452 generated at 08/20/2004 16:40:59 needed for thread 1ORA-00289: suggestion :/flash_recovery_area/ORCL/archivelog/2004_08_20/o1_mf_1_671_%u_.arcORA-00280: change 7917452 for thread 1 is in sequence #671

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}/oradata/orcl/redo02.logLog applied.Media recovery complete.

Database altered.

SQL> alter database open resetlogs;

Database altered.

See Metalink Note 60545.1 for detailed examples.

Categories: Frequently Asked Questions Backup and Recovery