You are on page 1of 7

DATABASE CLONING USING COLD BACKUP

[root@localhost ~]# su - raman


[raman@localhost ~]$ ls -ltrh
-rw-r--r-- 1 raman dba1 167 Apr 6 11:33 raman.env
-rw-r--r-- 3 raman dba1 4096 Apr 6 13:11 raman1.env
[raman@localhost ~]$ . raman.env
[raman@localhost ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on Sun Apr 22 04:48:40 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 272011264 bytes
Fixed Size
1299344 bytes
Variable Size
230689904 bytes
Database Buffers
37748736 bytes
Redo Buffers
2273280 bytes
Database mounted.
Database opened.
Check all the datafiles in the database and take only the backup of datafiles,
not the backup of redolog files and control files because it is a clean
shutdown, so no need of taking the backup of redolog files and we will also
create control files, so no need of taking the backup of control files also.
SQL> select name from v$datafile;
NAME
-------------------------------------------------------------------------------/d01/oracle/oradata/raman/system01.dbf

/d01/oracle/oradata/raman/sysaux01.dbf
/d01/oracle/oradata/raman/undotbs01.dbf
/d01/oracle/oradata/raman/users01.dbf
Take the backup of control file to trace only because we need to change the
database name while creating the control file.
SQL> alter database backup controlfile to trace;
Database altered.
Check the alert log file locations using either v$diag_info or
background_dump_dest parameter;
SQL> show parameter background_dump_dest;
NAME
VALUE
------------------------------------ ----------- -----------------------------background_dump_dest
/d01/oracle/diag/rdbms/raman/raman/trace
Create pfile from spfile and do the appropriate changes in stage database.
SQL> create pfile from spfile;
Go to datafile locations and copy all the datafiles to backup locations.
[raman@localhost ~]$ cd /d01/oracle/oradata/raman
[raman@localhost raman]$ ll
-rw-r----- 1 raman dba1 9748480 Apr 22 04:52 control01.ctl
-rw-r----- 1 raman dba1 9748480 Apr 22 04:52 control02.ctl
-rw-r----- 1 raman dba1 9748480 Apr 22 04:52 control03.ctl
-rw-r----- 1 raman dba1 52429312 Apr 22 04:48 redo01.log
-rw-r----- 1 raman dba1 52429312 Apr 22 04:52 redo02.log
-rw-r----- 1 raman dba1 52429312 Apr 22 04:48 redo03.log
-rw-r----- 1 raman dba1 590880768 Apr 22 04:52 sysaux01.dbf
-rw-r----- 1 raman dba1 713039872 Apr 22 04:52 system01.dbf
-rw-r----- 1 raman dba1 20979712 Apr 22 04:21 temp01.dbf

-rw-r----- 1 raman dba1 41951232 Apr 22 04:52 undotbs01.dbf


-rw-r----- 1 raman dba1 5251072 Apr 22 04:52 users01.dbf
Before copying the datafiles, create directory clonedb inside oradata because
physically it should exist.
[raman@localhost oradata]$ cd /d01/oracle/oradata
[raman@localhost oradata]$ mkdir clonedb
Now, copy all the datafiles to backup locations.
[raman@localhost raman]$ cp *.dbf /d01/oracle/oradata/clonedb
Now, come to alert log file and find out the trace files for creation of control
file.
[raman@localhost ~]$ cd d01/oracle/diag/rdbms/raman/raman/trace
[raman@localhost ~]$ vi alert_raman.log
Sun Apr 22 04:49:32 2012
Completed: ALTER DATABASE OPEN
Sun Apr 22 04:51:50 2012
alter database backup controlfile to trace
Backup controlfile written to trace file
d01/oracle/diag/rdbms/raman/raman/trace/raman_ora_7774.trc
Completed: alter database backup controlfile to trace
Sun Apr 22 04:52:11 2012
Stopping background process SMCO
Stopping background process FBDA
Shutting down instance: further logons disabled
[raman@localhost trace]$ cp
/d01/oracle/diag/rdbms/raman/raman/trace/raman_ora_7774.trc
/d01/raman.sql
Edit the trace file script and do the appropriate changes i.e. change REUSE
to SET, NORESETLOGS to RESETLOGS and database name also.

[raman@localhost trace]$ vi /d01/raman.sql


STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "CLONEDB" RESETLOGS
NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/d01/oracle/oradata/clonedb/redo01.log' SIZE 50M,
GROUP 2 '/d01/oracle/oradata/clonedb/redo02.log' SIZE 50M,
GROUP 3 '/d01/oracle/oradata/clonedb/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/d01/oracle/oradata/clonedb/system01.dbf',
'/d01/oracle/oradata/clonedb/sysaux01.dbf',
'/d01/oracle/oradata/clonedb/undotbs01.dbf',
'/d01/oracle/oradata/clonedb/users01.dbf'
CHARACTER SET WE8MSWIN1252
;
:%s/raman/clonedb/g (change the name raman to clonedb)
Note: All the locations of this control file creation script should exist
physically, so create the appropriate directory physically.
Now, come to parameter file locations and copy the pfile.
[raman@localhost dbs]$ cd $ORACLE_HOME/dbs
[raman@localhost dbs]$ cp initraman.ora initclonedb.ora
Edit the parameter file and do the appropriate changes.
Note: All the locations of this parameter file should exist physically, so create
the appropriate directory physically and change the database name also
[raman@localhost dbs]$ vi initclonedb.ora
clonedb.__db_cache_size=37748736

clonedb.__java_pool_size=4194304
clonedb.__large_pool_size=4194304
clonedb.__oracle_base='/d01/oracle'#ORACLE_BASE set from environment
clonedb.__pga_aggregate_target=121634816
clonedb.__sga_target=150994944
clonedb.__shared_io_pool_size=0
clonedb.__shared_pool_size=100663296
clonedb.__streams_pool_size=0
*.audit_file_dest='/d01/oracle/admin/clonedb/adump'
*.audit_trail='db'
*.compatible='11.1.0.0.0'
*.control_files='/d01/oracle/oradata/clonedb/control01.ctl','/d01/oracle/oradata
/clonedb/control02.ctl','/d01/oracle/oradata/clonedb/control03.ctl'
*.db_block_size=8192
*.db_domain='xcellit.com'
*.db_name='clonedb'
*.db_recovery_file_dest='/d01/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.diagnostic_dest='/d01/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=clonedbXDB)'
*.memory_target=269484032
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
:%s/raman/clonedb/g
Copy the environment file to backup locations and give the appropriate name
of new environment file and change the ORACLE_SID parameter.
[raman@localhost ~]$ cp raman.env clonedb.env
export ORACLE_BASE=/d01/oracle
export ORACLE_HOME=/d01/oracle/11gR2
export ORACLE_SID=clonedb
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

[raman@localhost ~]$ ll
total 32
-rw-r--r-- 1 raman dba1 169 Apr 22 05:09 clonedb.env
-rw-r--r-- 1 raman dba1 168 Apr 6 12:47 raman1.env
-rw-r--r-- 1 raman dba1 167 Apr 6 11:33 raman.env
Now run the environment file in stage server.
[raman@localhost ~]$ . clonedb.env
[raman@localhost ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on Sun Apr 22 05:19:24 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to an idle instance.
Start the database in nomount stage.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 272011264 bytes
Fixed Size
1299344 bytes
Variable Size
230689904 bytes
Database Buffers
37748736 bytes
Redo Buffers
2273280 bytes
Run the trace file script to create control file
SQL> @/d01/raman.sql
Control file created.
Now, the database is in mount stage, so open it with reset logs.
SQL> alter database open resetlogs;
Database altered.

Now, verify whether cloning is done or not successfully.


SQL> select name from v$database;
NAME
--------CLONEDB
STEPS OF DATABASE CLONING USING COLD BACKUP:
1. Check all the datafiles in database.
2. Take the backup of control file to trace.
3. Shutdown the database cleanly with IMMEDIATE, NORMAL, OR
TRANSACTIONAL.
4. Copy all the datafiles to backup locations (no need of taking the backup of redo
log files and control files because it is clean shutdown and we will create control file
also).
[root@localhost ~]# scp r backup root@172.25.15.15:/d01/oracle/
5. Create pfile from spfile and copy to stage server.
[root@localhost ~]# scp initraman.ora root@172.25.15.15:/d01/oracle/11gR2/dbs
6. Copy the control file script to stage server and do the appropriate changes.
7. Copy the environment file to backup location.
8. Now, log on to stage server and create environment file and change
ORACLE_SID parameter to new name.
9. Edit in pfile: dbname, control file parameter etc.
10. Run the environment file.
11. Start the database in nomount stage.
12. Execute the control file script.
13. Open the database with reset logs.
14. Verify whether the cloning is done or not.

You might also like