- The
variables that will be used in the document and their explanation are as
follows:
FROM_SERVER = Where
production database is up and running.
TO_SERVER = Where
the duplicate database will be up and running.
FROM_DATABASE = Production
database that has been backed up using RMAN
TO_DATABASE = The database
to be refreshed on
Make sure the filesystems on Production
(FROM_SERVER) exactly match the filesystems on the Dev/UAT (TO_SERVER) server.
In case there is a
difference in the filesystems layout or directory structure of the source and
the target server; contact server team
Make sure there is enough space in
/data/oracle//backup to store the backup pieces from
.
Log in to
Make directory to keep the backup
pieces of and scripts
$mkdir –p
/data/oracle//backup//script
A.
TO REFRESH FROM CURRENT BACKUP ON
Copy the following files from
FROM_SERVER to TO_SERVER using the “scp –p” command.
Log in to
- All RMAN backup pieces including archive logs pieces.
$ scp –p
/data/oracle//backup/database/*rmn
- A backup controlfile (*ctl*Z or *ctl*gz) or the file generated from
controlfile autobackup (c-*).
$ scp –p
/data/oracle//backup/database/*ctl*Z
OR
$ scp –p
/data/oracle//backup/database/*ctl*gz
OR
$scp –p /data/oracle//backup/database/c-*
- A duplicate script (duplicate*.ksh) that dbbackup generates a
template to clone database.
$ scp –p /data/oracle//backup/database/duplicate*.ksh
- A backup init.ora file.
$ scp –p
/data/oracle//backup/database/init*
- A controlfile creation script generated from dbbackup. It is used to
add temporary files after
open
resetlogs.
$ scp –p
/data/oracle//backup/database/create_control*sql
It is important to use
"scp -p" to preserve the original file timestamp, when the above
files are transferred to the host where RMAN refresh will be implemented.
B.
TO REFRESH FROM PREVIOUS RMAN BACKUP
Restore required RMAN backup files to
the from tape
After
restore to the “touch” one of the controlfiles on
as:
$touch
/data/oracle//backup//
- Four refresh scripts need to be
copied to the refresh host from
US golden::/export/applications/oracle/rman/refresh
- refresh.ksh -
is main script that will be executing RMAN refresh.
- refresh.begin -
is one of templates to generate a running script start_refresh.ksh
- refresh.end -
is one of templates to generate a running script start_refresh.ksh
- rman_refresh.config - is a configuration file needed to be
customized
Log in to US golden and :
$ scp –p
/export/applications/oracle/rman/refresh/refresh*
$ scp –p
/export/applications/oracle/rman/refresh/ rman_refresh.config
No modification is required for refresh.ksh, refresh.begin and refresh.end.
- Log in to
-
Change directory to
/data/oracle//backup//script
-
Update the parameters in
rman_refresh.config
In most cases, we only need to
update TO_ORACLE_SID, BACKUP_DIR, BASE_DATA_DIR and
INIT_ORA_OVERWRITE
TO_ORACLE_SID -
is the database to be refreshed (SID name at TO
location)
BACKUP_DIR - /
data/oracle//backup/
is the directory where source database backup pieces, init.ora,
backup
controlfile, duplicate script and controlfile creation script
BASE_DATA_DIR - is the base directory where the database is
to be refreshed.
INIT_ORA_OVERWRITE -
determines if init.ora is generated from the source
init.ora (Y if init.ora is created from the backup
one.
N if existing init.ora is reused, but ensure
UNDO_TABLESPACE uses same tablespace as the source database.
The following parameters need to
be modified ONLY IF a special filename or script is used:
DUPLICATE_SCRIPT - is
a duplicate script created by dbbackup.
CONTROLFILE_SQL - is a source database controlfile creation
sql script
BACKUP_CONTROLFILE - is either a backup controlfile or a
file generated from autobackup
We can take default value for the
following parameters:
CLEANUP - is a flag for housekeeping for refresh
process. Turn off CLEANUP for
debugging.
TRACE - determines whether "set
-vx" is enabled or not. Useful for debugging.
ARCHIVING - determines
if the database to be refreshed runs in ARCHIVE/NOARCHIVE
mode.
RMAN_TARGET_LOGIN - determines
how to connect to database instance.
ABORT_ON_ERROR - determines
whether the refresh script aborts or not when an error occurs.
- To
perform refresh to the time of backup, go to step 6.
- To perform point-to-time recovery
Setting RECOVER_UNTIL_TIME
parameter in rman_refresh.config will enable point-to-time
Recovery.
a.
If the point in time is a time before the backup was taken
then:
In the
rman_refresh.config update the RECOVER_UNTIL_TIME as
"MM-DD-YYYY:HH24:MI:SS".
Go to step 5. And
run the refresh.ksh
b.
If the time to recover is (far) ahead of the previous RMAN
backup, it means the backup controlfile or autobackup controlfile from dbbackup
may be obsolete.
The
following list steps to make point-to-time recovery work:
- Make sure dbbackup
version should be 4.09 or higher (can be seen on the second line of
backup.log)
- Make sure
controlfile autobackup is enabled for the . To see the
conguration do the
following:
Log in to
Log in or
sudo – su to
$ rman target
/
RMAN> show
all;
If not already configured or the
value is OFF, give the following command:
RMAN>
configure CONTROLFILE AUTOBACKUP
ON ;
RMAN>
exit;
Run
"arc2adsm.ksh -f $ORACLE_SID" forces to perform rman backup for
archive logs and
generates
new autobackup controlfile for the
source database.
$/data/oracle//admin/DBBACKUP/scripts/arc2adsm.sh
–f $ORACLE_SID
- Copy latest rman
backup pieces and autobackup controlfile to the backup directory on the
- Run the refresh.ksh script on the
to get the database refreshed on the
-
Log in to
-
Change directory to
/data/oracle//backup//script
$ cd /data/oracle//backup//script
-
Run the script refresh.ksh
$ nohup refresh.ksh &
-
Monitor the refresh process
$ tail –f nohup.out
- Please ensure the log file for the refresh is
stored in the following location normally /data/oracle/
/admin/logs;
$ORA_ADMIN/logs/refresh_${ORACLE_SID}_$(date
+%Y%m%d).log
The potential issues:
- point-to-time recovery may fail if a tablespace name or data file is
dropped because the duplicate
script from dbbackup becomes
obsolete.
This comment has been removed by the author.
ReplyDeleteunable to understand your steps. totally confused.
ReplyDeletess
Deletess.. exactly
ReplyDelete