|
|
Super fast Database Copying/Cloning
Oracle Tips by Burleson |
Question:
What are some fast ways to clone my Oracle database? Are there tools for
Oracle database cloning? Is it necessary to purchase software to clone an
Oracle database?
Answer: You can easily do your own fast database
cloning for free (see below) but there are a plethora of software tools for
super fast Oracle cloning. Oracle Corporation offers several Oracle
cloning solutions:
-
Enterprise Manager 13c Cloud Control offers their "Snapclone" software
as part of the extra-cost Oracle Cloud Management pack.
- Oracle also has CloneDB, a a new
Direct NFS (DNFS) feature that was introduced in release 11.2.0.2.
- Oracle
12.1.0.2 and beyond also offers the ability to create a PDB as a clone of a
remote non-CDB database.
There
are also 3rd party Oracle cloning software tools:
- Actifio: The
LiveClone uses data virtualization to clone Oracle databases.
- Delphix: A VC startup ompany.
- CommVault: The CommVault
11 software can do Oracle cloning with "storage snapshots".
- Tivoli: The Tivoli Storage FlashCopy
Manager: This uses their snapshot function for Oracle database
cloning.
However, it is not necessary to purchase expensive software to clone your
Oracle database. Let's look at a fast and free ways to clone your
Oracle database.
Fast cloning of your Oracle
database
This database
cloning procedure is especially useful for the DBA who wants to give his
developers a full-sized TEST and DEV instance by cloning the PROD instance into
the development server areas.
This Oracle clone procedure can be use to quickly migrate a system from one
UNIX server to another. It clones the Oracle database and this
Oracle cloning procedures is often the fastest way to copy a Oracle
database.
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 "OLDLSQ" NORESETLOGS
NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 240
MAXINSTANCES 1
MAXLOGHISTORY 113
LOGFILE
GROUP 1 ('/u03/oradata/oldlsq/log1a.dbf',
'/u03/oradata/olslsq/log1b.dbf') SIZE 30M,
GROUP 2 ('/u04/oradata/oldlsq/log2a.dbf',
'/u04/oradata/oldlsq/log2b.dbf') SIZE 30M
DATAFILE
'/u01/oradata/oldlsq/system01.dbf',
'/u01/oradata/oldlsq/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 /u01/oradata/oldlsq/*
newhost:/u01/oradata/newlsq
rcp /u01/oradata/oldlsq/* newhost:/u01/oradata/newlsq
rcp /u03/oradata/oldlsq/* newhost:/u03/oradata/newlsq
rcp /u04/oradata/oldlsq/* newhost:/u04/oradata/newlsq
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 "OLDLSQ"
NORESETLOGS
New:
CREATE
CONTROLFILE SET DATABASE "NEWLSQ"
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/oldlsq/system01.dbf',
'/u01/oradata/oldlsq/mydatabase.dbf'
New:
DATAFILE
'/u01/oradata/newlsq/system01.dbf',
'/u01/oradata/newlsq/mydatabase.dbf'
STEP 7: Create the bdump, udump and cdump
directories
cd $DBA/admin
mkdir newlsq
cd newlsq
mkdir bdump
mkdir udump
mkdir cdump
mkdir pfile
STEP 8: Copy-over the old init.ora file
rcp $DBA/admin/olslsq/pfile/*.ora
newhost:/u01/oracle/admin/newlsq/pfile
STEP 9: Start the new database
@db_create_controlfile.sql
STEP 10: Place the new database in archivelog mode