How to clone ORACLE_HOME in 19c

I find that’s a good idea to have a different ORACLE_HOME when it comes to patching or maybe you want to have the same oracle home setup in a lower environment than PROD. The cloning comes in very handy rather doing the whole installation (including whatever patches have been deployed in the past) again.

One may start thinking that can be achieved with utility, but as Oracle stated, this utility is deprecated starting with 19c. Now we have “golden image” concept.

Below I will clone the existing ORACLE_HOME to the same server but different path. This strategy is very good if you want to have minimum downtime for patching.

Let’s consider the following setup:

Actual ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1
New    ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_2
  1. Create GOLDEN IMAGE
--- create the folder for golden image
[oracle@ol8-19-dg1 u01]$ mkdir -p /u01/19.3_goldimage
[oracle@ol8-19-dg1 u01]$ echo $ORACLE_HOME

--- create the golden image
[oracle@ol8-19-dg1 u01]$ $ORACLE_HOME/runInstaller -createGoldImage -destinationLocation /u01/19.3_goldimage -silent
Launching Oracle Database Setup Wizard...

Successfully Setup Software.
Gold Image location: /u01/19.3_goldimage/

2. Unzip the golden image to the new ORACLE_HOME

[oracle@ol8-19-dg1 u01]$ mkdir -p /u01/app/oracle/product/19.0.0/dbhome_2
[oracle@ol8-19-dg1 u01]$ cd /u01/app/oracle/product/19.0.0/dbhome_2
[oracle@ol8-19-dg1 dbhome_2]$ unzip  -oq /u01/19.3_goldimage/

3. Proceed with installation

[oracle@ol8-19-dg1 dbhome_2]$ export CV_ASSUME_DISTID=OEL7.6
[oracle@ol8-19-dg1 dbhome_2]$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_2
[oracle@ol8-19-dg1 dbhome_2]$
[oracle@ol8-19-dg1 dbhome_2]$
[oracle@ol8-19-dg1 dbhome_2]$
[oracle@ol8-19-dg1 dbhome_2]$ echo $ORACLE_HOME
[oracle@ol8-19-dg1 dbhome_2]$ ${ORACLE_HOME}/runInstaller -ignorePrereq -waitforcompletion -silent \
         -responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
         oracle.install.option=INSTALL_DB_SWONLY \
         UNIX_GROUP_NAME=oinstall \
         oracle.install.db.InstallEdition=EE \
         oracle.install.db.OSDBA_GROUP=dba \
         oracle.install.db.OSBACKUPDBA_GROUP=dba \
         oracle.install.db.OSDGDBA_GROUP=dba \
         oracle.install.db.OSKMDBA_GROUP=dba \
         oracle.install.db.OSRACDBA_GROUP=dba \
Launching Oracle Database Setup Wizard...

[WARNING] [INS-13014] Target environment does not meet some optional requirements.
   CAUSE: Some of the optional prerequisites are not met. See logs for details. /u01/app/oraInventory/logs/InstallActions2021-06-16_10-26-20AM/installActions2021-06-16_10-26-20AM.log
   ACTION: Identify the list of failed prerequisite checks from the log: /u01/app/oraInventory/logs/InstallActions2021-06-16_10-26-20AM/installActions2021-06-16_10-26-20AM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:

You can find the log of this install session at:

As a root user, execute the following script(s):
        1. /u01/app/oracle/product/19.0.0/dbhome_2/

Execute /u01/app/oracle/product/19.0.0/dbhome_2/ on the following nodes:

Successfully Setup Software with warning(s).
[oracle@ol8-19-dg1 dbhome_2]$

3. Execute script from the new ORACLE_HOME

[root@ol8-19-dg1 ~]# /u01/app/oracle/product/19.0.0/dbhome_2/
Check /u01/app/oracle/product/19.0.0/dbhome_2/install/root_ol8-19-dg1.local_2021-06-16_10-28-28-680868456.log for the output of root script
[root@ol8-19-dg1 ~]#

That’s all.


  1. Pingback: Rolling Database Upgrade from to Using Transient Logical Standby – Another Oracle blog

Leave Comment

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