Cloning Database Method
Cloning Database Method
STEP 1: On the old system, go into SQL*Plus, sign on as SYSDBA and issue: alter database
backup controlfile to trace. This will put the create database syntax in the trace file directory. The trace keyword tells oracle to generate a script containing a create controlfile command and store it in the trace directory identified in the user_dump_dest parameter of the init.ora file. It will look something like this:
STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "OLD" NORESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 2 MAXDATAFILES 240 MAXINSTANCES 1 MAXLOGHISTORY 113 LOGFILE GROUP 1 ('/u03/oradata/OLD/log1a.dbf', '/u03/oradata/olslsq/log1b.dbf') SIZE 30M, GROUP 2 ('/u04/oradata/OLD/log2a.dbf', '/u04/oradata/OLD/log2b.dbf') SIZE 30M DATAFILE '/u01/oradata/OLD/system01.dbf', '/u01/oradata/OLD/mydatabase.dbf' ; # Recovery is required if any of the datafiles are restored # backups, or if the last shutdown was not normal or immediate. RECOVER DATABASE # Database can now be opened normally. ALTER DATABASE OPEN;
STEP 2: Shutdown the old database STEP 3: Copy all data files into the new directories on the new server. You may change the file names if you want, but you must edit the controlfile to reflect the new data files names on the new server.
rcp rcp rcp rcp /u01/oradata/OLD/* /u01/oradata/OLD/* /u03/oradata/OLD/* /u04/oradata/OLD/* newhost:/u01/oradata/CLONE newhost:/u01/oradata/CLONE newhost:/u03/oradata/CLONE newhost:/u04/oradata/CLONE
STEP 4: Copy and Edit the Control file Using the output syntax from STEP 1, modify the controlfile creation script by changing the following: Old:
CREATE CONTROLFILE REUSE DATABASE "OLD" NORESETLOGS
New:
CREATE CONTROLFILE SET DATABASE "CLONE" RESETLOGS
STEP 5: Remove the recover database and alter database open syntax
# Recovery is required if any of the datafiles are restored # backups, or if the last shutdown was not normal or immediate. RECOVER DATABASE # Database can now be opened normally. ALTER DATABASE OPEN;
STEP 6: Re-names of the data files names that have changed. Save as db_create_controlfile.sql. Old:
DATAFILE '/u01/oradata/OLD/system01.dbf', '/u01/oradata/OLD/mydatabase.dbf'
New:
DATAFILE '/u01/oradata/CLONE/system01.dbf', '/u01/oradata/CLONE/mydatabase.dbf'