• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
Techgoeasy

Techgoeasy

Learn Oracle, PHP, HTML,CSS,Perl,UNIX shell scripts

  • Home
  • Oracle
    • Oracle database
    • Oracle Ebusiness Suite
    • Oracle weblogic
    • Oracle Performance Tuning
    • Oracle Hyperion
    • Oracle Cloud Tutorials
  • SQL
  • interview questions
  • Linux
  • PHP and HTML
  • Downloads
  • General
Home » Oracle » Oracle Database » How to perform Oracle Database cloning

How to perform Oracle Database cloning

July 4, 2020 by techgoeasy Leave a Comment

Table of Contents

  • What is Oracle Database cloning:
  • What is the need of Database cloning?
  • How the Database cloning is performed
  • How to clone DBMS software
  • FAQ about DBMS software cloning

What is Oracle Database cloning:


A database clone is a complete and separate copy of a database system that includes the business data , the DBMS software and any other application tiers that make up the environment. The cloning can be done on same host or seperate host.

What is the need of Database cloning?

Cloning may be required for several reasons
(1) Create a test env which is replica of Production. IT and Business can test the things before moving the changes to Production
(2) Create a temporary environment to recover the dropped table on Production.Suppose a user drop a table by mistake in Production. We can restore the Production backup on the separate host and recover before the table drop to recover the table data. Then this table can be imported in Production
(3) Many times system which hosts the database get retired then at that we need to relocate the database to the new host.
(4) Creating another Production env from the existing production

There could be many more things.

How the Database cloning is performed

There are two parts of cloning
(1) Oracle software cloning
(2) Database  cloning basically the datafiles  and instance

We will specifically talk about DBMS software cloning in this post

How to clone DBMS software

Prerequiste: Please note that Perl 5.6 or higher is required when cloning Oracle11g Release 2.

Step 1 : Create a tarball of the source home

cd $ORACLE_HOME
tar -cvf /tmp/clone_oracle.tar .

and copy it to the target host

Some points to note
(1) Do not use the command “tar cvf /tmp/clone_oracle.tar $ORACLE_HOME” because the full path for the $ORACLE_HOME will be included in the clone_oracle.tar file and this will cause issues while extracting the tar files on the target note
(2) There should be no requirement to shutdown any databases, listeners, agents etc. that are running from the source home before copying the source installation because any processes that load the static binaries or libraries into memory should not hold a write lock.
(3) If you can run the tar with root owner,then it would be great as the permission and time would be preserved
We can also use cp or rcp in case tar is easily available, use -p option to preserved timestamp

For example:

cp -Rp /u064/app/oracle/11.2.0 /u01/app/oracle/11.2.0_clone

NOTE: This command can be executed by either the ‘root’ user or the owner of the $ORACLE_HOME (for example, ‘oracle’). The intention is to make sure that the ownership of the files is preserved correctly. Some files in $ORACLE_HOME/bin are owned by root and have the SUID / SGID set:

-rws--x--- 1 root oinstall 20872 Apr 24 12:00 nmb
-rws--x--- 1 root oinstall 28720 Apr 24 11:59 nmo
-rwsr-x--- 1 root oinstall 1340408 Sep 25 2011 oradism

Step 2: Un-tar the tarball into the target location

cd <location>
tar -xvf /tmp/clone_oracle.tar

Again it would be good ,if it can be done with root user

Few things to check after the unpacking

(1) If the target host username/group is different, the change the file owner and group

find . -user <UserA> -exec chown <userB> {} \;
find . -group <groupA> -exec chgrp <groupB> {} \;

(2) check that the validity of any symbolic links has been preserved. Ensure that the links point to files/directories in the new target home, not files/directories in the source home. If necessary, re-create the links.

(3) If you are cloning on AIX, make sure that the rootpre.sh script has been executed on the target server. This can be found on the Oracle11g Release 2 media.

Step 3 Run the following command to clone the installation with the Oracle Universal Installer (OUI):

cd $ORACLE_HOME/clone/bin
perl clone.pl ORACLE_HOME="<target_home>" ORACLE_HOME_NAME="<unique_home_name>" ORACLE_BASE="<path_for_ORACLE_BASE>" OSDBA_GROUP=<OSDBA_privileged_group> OSOPER_GROUP=<OSOPER_privileged_group>

Important points to check
(1) OSDBA_GROUP and OSOPER_GROUP can be ignored if the source and target OS username and group are same
If it is different,then it is very important to specify it otherwise you may experience an ORA-1031 error when using SQL*Plus
(2) If no /etc/oraInst.loc (AIX, Linux) or /var/opt/oracle/oraInst.loc (Solaris, HP-UX) file exists on the server because Oracle has never been installed on the server before, create one. The file should contain a line like this:

inventory_loc=<path_to_oraInventory>

For example:

inventory_loc=/u541/app/oracle/oraInventory

If an oraInst.loc file exists on the server but is in a different location, edit the $ORACLE_HOME/clone/config/cs.properties file to add “-invPtrLoc <path>/oraInst.loc” to the clone_command_line.

This file can also be edited to add “-ignoreSysPrereqs” if required.

The alternative method of cloning is to use the following commands:

./runInstaller -clone -silent -ignorePreReq ORACLE_HOME="<target_home>" ORACLE_HOME_NAME="<unique_home_name>" ORACLE_BASE="<path_for_ORACLE_BASE>" oracle_install_OSDBA=OSDBA_privileged_group oracle_install_OSOPER=OSOPER_privileged_group

If necessary, add “-invPtrLoc <path>/oraInst.loc” or “-ignoreSysPrereqs” to the command line.

(3) If the server has more than one Perl version installed then it may be necessary to specify the PERL5LIB environment variable so that the versions of the Perl modules match with the Perl version used.

Note that the full path for the target ORACLE_HOME should be provided

(4) ORACLE_HOME_NAME name must be unique (that is, it must not already exist in the central inventory file <path>/oraInventory/ContentsXML/inventory.xml).

NOTE: if you are cloning on a server which already has a central inventory and the target home already exists in <path>/oraInventory/ContentsXML/inventory.xml then you should run the following command to ‘detach’ this home from the central inventory before performing the clone operation:

./runInstaller -detachHome ORACLE_HOME=<target_home>

To clone an Oracle11g Release 2 client installation, run OUI directly:

./runInstaller -clone -silent -noconfig ORACLE_HOME="<target_home>" ORACLE_HOME_NAME="<unique_home_name>" ORACLE_BASE="<path_for_ORACLE_BASE>" OSDBA_GROUP=OSDBA_privileged_group OSOPER_GROUP=OSOPER_privileged_group

Step 4

On Unix/Linux installations, you will now need to run root.sh (as root) from the target home.

NOTE: When running the root.sh in the clone it overwrites the files in /usr/local/bin (oraenv, coraenv, dbhome). It does not prompt if those files are to be overwritten or give a choice (as in a clean install). These files should be backed up if used.

FAQ about DBMS software cloning

Question 1: Do the source and the destination path (of the Oracle Home to be cloned) need to be the same ?

Answer: The source and the destination path (of the Oracle Home to be cloned) need not be the same.It can be different

Question 2: Are all the changes made by applying one-off patches or PSU or CPU on the source Oracle Home also present after the clone operation?

Answer: Yes, all the changes made by applying one-off patches or PSU or CPU on the source Oracle Home are also present after the clone operation.

Question 3: Can I use the cloned Oracle Home as the source for another cloning operation ?

Answer: Yes, you can also use the cloned Oracle Home as the source for another cloning operation. The cloned installation behaves the same as the source installation. For example, the cloned Oracle Home can be removed using OUI or patched using OPatch.

Question 4: Can I clone the Oracle Home across platforms?

Answer: No, cloning across platforms is not possible because the binaries across platforms are different . So you cannot copy the binary from solaris to linux

Question 5: Can you clone the Oracle Home across different OS versions ?

Answer:Yes, cloning across OS versions is possible provided the Oracle version is certified on the respective OS version.

After software has been cloned, we need to move forward the database cloning. You can look at the below post on how to do that

clone database from cold backup
cloning using hot backup
RMAN DUPLICATE from ACTIVE DATABASE
RMAN Duplicate Database
Hot PDB cloning in Oracle database 12.2

Hope you like this detailed post on Database cloning.

Also Reads
how to check oracle database version

Filed Under: Oracle, Oracle Database Tagged With: Database cloning

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar



Subscribe to our mailing list

Enter your email address to subscribe to this blog and receive notifications of new posts by email

Recent Posts

  • Oracle tkprof utility
  • What is Skew in Database?
  • how to find file based on size in linux
  • SQL trace, 10046 event in Oracle
  • How to use sed replace string in file

Copyright © 2023 : TechGoEasy

  • Hire me
  • Privacy Policy
  • Contact Us
  • New? Start Here
  • About Us