|
|
|
Oracle 10g database restore/recovery - Test your tape backup - Part 1: Different dbid
|
By Haili Jiao Jun 04, 2008
|
digg!
Print
Email to Friend
Note: This article was written for educational purpose only. Please refer to the related vendor documentation for detail.
|
|
|
|
Oracle 10g database restore/recovery - Test your tape
backup - Part 1: Different dbid
Step-by-step instructions on how to using RMAN DUPLICATE
to restore/duplicate a database
To test my backup and recovery procedures, I restore the Production database
backup into the testing database once a year, and conduct tests against the new
database through the testing application. Since the DBID is different, I can’t
use RESTORE and RECOVER commands. RMAN DUPLICATE is used for restore/recovery
instead.
Here I list steps instructions on how to using RMAN DUPLICATE to
restore/duplicate a database on Windows and UNIX servers, either on a new
machine or local machine.
My settings in this case are:
- The Database version is 10.2.0.3;
- The production database (the target database) is called TARG and the testing
database (the duplicate database) is called DUPL;
- Archive log mode is enabled on TARG. Weekly hot whole database backup of TARG
is taken to disk by RMAN and then copied to tape. The archive log files are also
backed up and deleted with the weekly backup.
- The Tape backup and archived log files on disk are used for restore/recovery
in this example;
- I use Flash Recovery Area to store backup related files;
- The directory structure of two systems are identical;
- No recovery catalog is used.
1 Before you get started:
1) Make sure the operating system on the target and duplicate systems are the
same.
2) Make sure the same Oracle software release is used on the target and
duplicate databases.
3) Make sure you have the necessary backups of the target database. Ensure sure
the backups, and the archived redo logs if needed, are accessible from the
duplicate site.
4) Exam your RMAN configuration. Login to target database as a user with sysdba
privileges.
$rman target <user>/<password>@TARG
RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; #
default
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SNCFTARG.ORA'; # default
2 Delete the testing database using Oracle DBCA.
Retain a backup of the testing database in case the duplicate fails and you need
to restore the original testing database.
If you want to restore/duplicate the database to a new server, install Oracle
Database software without the starter database, and then patch it if needed.
3 Copy the appropriate tape backup files to Target database backup location
using your tape management tool.
I renamed the original disk backup of TARG instead of overwriting it.
4 Create a password file for the testing database DUPL. The password for SYS
must be identical on both databases.
- On Windows:
$cd %ORACLE_HOME%\database
$orapwd file=pwdDUPL.ora password=xxxxxxxx force=y
(Note: Replace xxxxxxxxx with your actual password for the SYS user.)
- On UNIX:
$cd $ORACLE_HOME/dbs
$Orapwd file=pwdDUPL.ora password=xxxxxxxx force=y
(Note: Replace xxxxxxxxx with your actual password for the SYS user.)
5 Update tnsnames.ora and listener.ora of the Target database to add the
duplicate database entries.
6 Create an Initialization parameter for the duplicate database.
On Target database TARG, issue the following command:
- On Windows:
SQL>create pfile=’<Oracle_home>\database\pfileDUPL.ora’ from spfile;
(Note- specify your Oracle home path to replace ‘<Oracle_home>’).
- On UNIX:
SQL>create pfile=’<Oracle_home>/dbs/pfileDUPL.ora’ from spfile;
(Note- specify your Oracle home path to replace ‘<Oracle_home>’).
7 Copy pfileDUPL.ora to duplicate database site and edit it.
1) Copy it to <ORACLE_HOME>\database directory on Windows or <ORACLE_HOME>/dbs
directory on UNIX.
2) Modify this pfile to include parameters DB_NAME, CONTROL_FILES,
DB_FILE_NAME_CONVERT and LOG_FILE_NAME_CONVERT. For example (here the file paths
are from a windows system. For UNIX system, specify the path accordingly):
db_name='DUPL'
control_files='E:\ORACLE\PRODUCT\10.2.0\ORADATA\DUPL\CONTROLFILE\CONTROL01.CTL',
'F:\ORACLE\FLASH_RECOVERY_AREA\DEVL\CONTROLFILE\CONTROL02.CTL'
# Specify the location of the target DB datafiles followed by the duplicate
location
db_file_name_convert='E:\oracle\product\10.2.0\oradata\TARG\DATAFILE',
'E:\oracle\Product\10.2.0\oradata\DUPL\DATAFILE'
# Specify the location of the target DB online redo log files followed by the
duplicate location
log_file_name_convert='E:\oracle\product\10.2.0\oradata\TARG\ONLINELOG',
'E:\oracle\product\10.2.0\oradata\DUPL\ONLINELOG',
'F:\oracle\flash_recovery_area\TARG\ONLINELOG','F:\oracle\flash_recovery_area\DUPL\ONLINELOG'
Modify some other parameters for DUPL such as adump, bdump, cdump, udump, and
dpdump.
8 Create following dump directories for the duplicate database.
Create adump, bdump, cdump, udump, dpdump directories.
9 Create data directories where you want to store new data files.
Create directories for controlfile, datafile and onlinelog.
10 On Windows start the Oracle Services.
$oradim –new –sid DUPL –startmode auto
Now go to control panel>administrative tools, open services and see whether
oracle services for DUPL is running.
Change the Oracle DB Server account from local system to a user with
administrative account. After the change, stop and start Oracle DB Services.
11 Startup nomount the Duplicate instance and generate a spfile.
- On Windows:
SQL>shutdown immediate
SQL>startup nomount pfile=’<Oracle_home>\database\initDUPL.ora’;
SQL> create spfile from pfile=’<Oracle_home>\database\initDUPL.ora';
-- Restart the duplicate instance using the newly created SPFILE.
SQL>shutdown immediate;
SQL>startup mount;
- On UNIX:
SQL>shutdown immediate
SQL>startup nomount pfile=’<Oracle_home>/dbs/initDUPL.ora’;
SQL> create spfile from pfile=’<Oracle_home>/dbs/initDUPL.ora';
-- Restart the duplicate instance using the newly created SPFILE.
SQL>shutdown immediate;
SQL>startup mount;
12 Mount or open the target database TARG if it is not already mount or open.
13 Ensure you have the necessary backups and archived redo logs.
$rman target <user>/<password>@TARG
Rman>list backup summary
Rman>exit
14 Resote/Duplicate the database using RMAN DUPLICATE command.
1) Login to the target and duplicate database
$rman target <user>/<password>@TARG auxiliary <user>/<password>@DUPL
2) Run the RMAN duplicate command:
RMAN>run {
allocate auxiliary channel ch1 type disk;
duplicate target database to DUPL;
}
15 Create DB console for the duplicate database.
- On Windows
$cd %ORACLE_HOME%\bin
$emca –config dbcontrol db
- On UNIX
$cd $ORACLE_HOME/bin
$emca –config dbcontrol db
Enter SID, password for users sys, sysman, dbsnmp when prompted.
16 Modify settings in Application and the DUPL database to reflect the changes
if necessary.
17 Test the duplicate database through Oracle tools and through the front-end
application.
Reference:
Oracle® Database Backup and Recovery Advanced User’s Guide,
10g Release 2 (10.2), B14191-02
|
Comments/Reviews on this article: |
Ferhat Ozturk Aug 09, 2008 |
hi, below commands give error:
- On Windows:
SQL>shutdown immediate
SQL>startup nomount pfile=’\database\initDUPL.ora’;
SQL> create spfile from pfile=’\database\initDUPL.ora';
-- Restart the duplicate instance using the newly created SPFILE.
SQL>shutdown immediate;
SQL>startup mount;
error is :
ORA-00202: control file: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\DUPL\CONTROL01.CTL'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.
i guess this error is normal, because we have not created a control file for new DUPL db, am i right pls post me back asap, i m trying your steps. |
Ferhat Ozturk Aug 10, 2008 |
i guess i solved the problem, before we use rman duplicate command, dupl db must be in nomount status, not mount status. because rman will create control files from backup. |
john edward Jun 13, 2008 |
Very nice! Thanks for sharing!! |
|
About author:
Haili Jiao works as Oracle DBA at Baltimore, Maryland, USA. She is an Oracle 10g Certified Professional and 9i Certified Associate.
|
|
| Our Premium Sponsor |
|
|
|