EBS 12.2.15 Cloning with Oracle 19c (19.29) Using Rapid Clone (Multitenant CDB/PDB)
In this guide, we will perform Oracle E-Business Suite (EBS) 12.2.15 cloning using Rapid Clone with an Oracle Database 19c (19.29) multitenant architecture. This cloning method is commonly used for EBS refresh, DR setup, test environment creation, and production-to-nonproduction cloning.
This document covers a complete end-to-end procedure including adpreclone, RMAN hot backup, RMAN duplicate, PDB rename, UTL_FILE_DIR configuration, and appsTier configuration.
Environment Details
Source Instance Details
ORACLE_SID=EBSCDB CDB Name : EBSCDB PDB Name : EBSDB EBS Version : 12.2.15 AD/TXK : Delta 17 DB Version : 19.29 OS : OEL 8.10
Target Instance Details
ORACLE_SID=PERPCDB CDB Name : PERPCDB PDB Name : PERP EBS Version : 12.2.15 AD/TXK : Delta 17 DB Version : 19.29 OS : OEL 8.10
Target Directory Structure Used
DB ORACLE_HOME : /u01/db/PERP/19.0.0 DB DATA_TOP : /u01/db/PERP/oradata APPS BASE : /u01/apps/PERP RUN FS (fs2) : /u01/apps/PERP/fs2 PATCH FS (fs1) : /u01/apps/PERP/fs1 FS_NE : /u01/apps/PERP/fs_ne RMAN BACKUP DIR : /u02/backups/RMAN
Pre-Requisite Tasks (Target Server)
Install Required RPM Packages
dnf install -y bc binutils compat-libcap1 compat-libstdc++-33 \ gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel \ libgcc libstdc++ libstdc++-devel libX11 libXau libXi libXtst \ libxcb make sysstat unixODBC unixODBC-devel
Create Oracle and applmgr Users
groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle useradd -g oinstall applmgr
Create Required Directories
mkdir -p /u01/db/PERP mkdir -p /u01/apps/PERP chown -R oracle:oinstall /u01/db/PERP chown -R applmgr:oinstall /u01/apps/PERP
Step 1: Run ADPRECLONE on Source Database Node
export ORACLE_HOME=/u01/db/GOLD/19.0.0 cd $ORACLE_HOME . EBSCDB_foalabsrv.env sqlplus / as sysdba <<EOF select name, open_mode from v\$database; show pdbs; exit; EOF mkdir -p /u01/db/GOLD/19.0.0/appsutil/etcc chmod 755 /u01/db/GOLD/19.0.0/appsutil/etcc/checkDBpatch.sh cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME perl adpreclone.pl dbTier
Step 2: Run ADPRECLONE on Source Application Node (RUN File System)
. EBSapps.env run cd $ADMIN_SCRIPTS_HOME perl adpreclone.pl appsTier
Step 3: Take RMAN Hot Backup (CDB Backup + Archive + Controlfile + SPFILE)
This step is critical for Oracle EBS cloning with RMAN duplicate. We take full backup along with archived logs, controlfile, and spfile.
export ORACLE_HOME=/u01/db/GOLD/19.0.0
cd $ORACLE_HOME
. EBSCDB_foalabsrv.env
mkdir -p /u02/backups/RMAN
rman target / <<EOF
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
BACKUP as compressed backupset FULL FILESPERSET 10
FORMAT '/u02/backups/RMAN/EBSDB_D_%s_%p_%t.bak' DATABASE;
BACKUP as compressed backupset FILESPERSET 10
FORMAT '/u02/backups/RMAN/EBSDB_A_%s_%p_%t.bak' ARCHIVELOG ALL skip inaccessible;
BACKUP FORMAT '/u02/backups/RMAN/EBSDB_C_%s_%p_%t.bak' CURRENT CONTROLFILE;
BACKUP FORMAT '/u02/backups/RMAN/EBSDB_S_%s_%p_%t.bak' SPFILE;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
}
EOF
Step 4: Copy Source Binaries and Stage Files to Target
Source DB Node (Oracle Home + RMAN Backup)
cd /u01/db/GOLD tar -zcvf /u02/backups/19.0.0.tar.gz 19.0.0 cd /u02/backups tar -zcvf RMAN.tar.gz RMAN
Source Apps Node (RUN FS Only)
cd /u01/apps/GOLD/fs2 tar -zcvf /u02/backups/EBSapps_fs2_run.tar.gz EBSapps
Copy to Target Server
scp /u02/backups/19.0.0.tar.gz oracle@<TARGET_HOST>:/u02/backups/ scp /u02/backups/RMAN.tar.gz oracle@<TARGET_HOST>:/u02/backups/ scp /u02/backups/EBSapps_fs2_run.tar.gz applmgr@<TARGET_HOST>:/u02/backups/
Step 5: Prepare Target Server and Untar Binaries
Target DB Node
mkdir -p /u01/db/PERP cd /u01/db/PERP cp /u02/backups/19.0.0.tar.gz . tar -zxvf 19.0.0.tar.gz rm -rf 19.0.0.tar.gz mkdir -p /u02/backups/RMAN cd /u02/backups tar -zxvf RMAN.tar.gz rm -rf RMAN.tar.gz chown -R oracle:oinstall /u01/db/PERP
Target Apps Node
mkdir -p /u01/apps/PERP cd /u01/apps/PERP mkdir -p fs1 fs2 fs_ne cd /u01/apps/PERP/fs2 cp /u02/backups/EBSapps_fs2_run.tar.gz . tar -zxvf EBSapps_fs2_run.tar.gz rm -rf EBSapps_fs2_run.tar.gz chown -R applmgr:oinstall /u01/apps/PERP
Step 6: Configure Target DB Techstack (adcfgclone dbTechStack)
export ORACLE_HOME=/u01/db/PERP/19.0.0 export PATH=$ORACLE_HOME/bin:$PATH cd $ORACLE_HOME/appsutil/clone/bin perl adcfgclone.pl dbTechStack
Step 7: Generate listener.ora and tnsnames.ora for Target CDB
export ORACLE_HOME=/u01/db/PERP/19.0.0 export PATH=$ORACLE_HOME/perl/bin:$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME:$ORACLE_HOME/lib export PERL5LIB=$ORACLE_HOME/perl/lib/5.28.1:$ORACLE_HOME/perl/site_perl/5.28.1:$ORACLE_HOME/appsutil/perl export PATH=$ORACLE_HOME/perl:$ORACLE_HOME/perl/lib:$ORACLE_HOME/perl/bin:$PATH cd $ORACLE_HOME/appsutil chmod 755 txkSetCfgCDB.env ./txkSetCfgCDB.env -dboraclehome=/u01/db/PERP/19.0.0 cd $ORACLE_HOME/appsutil/bin perl txkGenCDBTnsAdmin.pl \ -dboraclehome=/u01/db/PERP/19.0.0 \ -cdbname=PERPCDB \ -cdbsid=PERPCDB \ -dbport=1521 \ -outdir=$ORACLE_HOME/appsutil/log \ -israc=no
Step 8: Start Target Listener
cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME ./addlnctl.sh start PERPCDB
Step 9: Prepare initPERPCDB.ora for RMAN Duplicate
mkdir -p /u02/backups/RMAN/aux
mkdir -p /u01/db/PERP/oradata
cat > /u02/backups/RMAN/initPERPCDB.ora <<EOF
db_name='PERPCDB'
enable_pluggable_database=TRUE
DB_FILE_NAME_CONVERT=('/u01/db/GOLD/EBSCDB','/u01/db/PERP/oradata')
LOG_FILE_NAME_CONVERT=('/u01/db/GOLD/EBSCDB','/u01/db/PERP/oradata')
EOF
Step 10: Start Auxiliary Instance in NOMOUNT
export ORACLE_HOME=/u01/db/PERP/19.0.0 export ORACLE_SID=PERPCDB export PATH=$ORACLE_HOME/bin:$PATH sqlplus / as sysdba <<EOF startup nomount pfile='/u02/backups/RMAN/initPERPCDB.ora'; exit; EOF
Step 11: RMAN Duplicate CDB Database from Backup Location
export ORACLE_HOME=/u01/db/PERP/19.0.0
export ORACLE_SID=PERPCDB
export PATH=$ORACLE_HOME/bin:$PATH
rman auxiliary / <<EOF
run {
allocate auxiliary channel c1 device type disk;
allocate auxiliary channel c2 device type disk;
duplicate database to 'PERPCDB'
backup location '/u02/backups/RMAN'
nofilenamecheck;
release channel c1;
release channel c2;
}
EOF
Step 12: Rename PDB (EBSDB to PERP)
export ORACLE_HOME=/u01/db/PERP/19.0.0
export ORACLE_SID=PERPCDB
export PATH=$ORACLE_HOME/bin:$PATH
sqlplus / as sysdba <<EOF
alter pluggable database "EBSDB" close;
alter pluggable database "EBSDB" unplug into '$ORACLE_HOME/dbs/EBSDB_PDB_info.xml';
drop pluggable database "EBSDB";
create pluggable database "PERP"
using '$ORACLE_HOME/dbs/EBSDB_PDB_info.xml'
NOCOPY
SERVICE_NAME_CONVERT=('ebs_EBSDB','ebs_PERP','EBSDB_ebs_patch','PERP_ebs_patch');
alter pluggable database "PERP" open read write;
alter pluggable database all open;
alter pluggable database all save state instances=all;
exit;
EOF
Step 13: Run adupdlib.sql
cd $ORACLE_HOME/appsutil/install/$CONTEXT_NAME sqlplus / as sysdba <<EOF @adupdlib.sql so exit; EOF
Step 14: Run txkPostPDBCreationTasks.pl
cd $ORACLE_HOME/appsutil . ./txkSetCfgCDB.env -dboraclehome=/u01/db/PERP/19.0.0 perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl \ -dboraclehome=/u01/db/PERP/19.0.0 \ -outdir=/u01/db/PERP/19.0.0/appsutil/log \ -cdbname=PERPCDB \ -dbuniquename=PERPCDB \ -cdbsid=PERPCDB \ -pdbsid=PERP \ -appsuser=apps \ -israc=no \ -dbport=1521 \ -servicetype=dbsystem
Step 15: Configure UTL_FILE_DIR Using txkCfgUtlfileDir.pl
cd $ORACLE_HOME/appsutil/bin perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \ -contextfile=$ORACLE_HOME/appsutil/$CONTEXT_NAME.xml \ -oraclehome=$ORACLE_HOME \ -outdir=$ORACLE_HOME/appsutil/log \ -mode=getUtlFileDir vi $ORACLE_HOME/dbs/PERP_utlfiledir.txt mkdir -p /u01/db/PERP/temp/PERP mkdir -p /u01/db/PERP/19.0.0/appsutil/outbound/PERP_<hostname> mkdir -p /u01/db/PERP/temp/PERP perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \ -contextfile=$ORACLE_HOME/appsutil/$CONTEXT_NAME.xml \ -oraclehome=$ORACLE_HOME \ -outdir=$ORACLE_HOME/appsutil/log \ -mode=setUtlFileDir grep -i s_outbound_dir $ORACLE_HOME/appsutil/$CONTEXT_NAME.xml perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \ -contextfile=$ORACLE_HOME/appsutil/$CONTEXT_NAME.xml \ -oraclehome=$ORACLE_HOME \ -outdir=$ORACLE_HOME/appsutil/log \ -mode=createDirObject perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \ -contextfile=$ORACLE_HOME/appsutil/$CONTEXT_NAME.xml \ -oraclehome=$ORACLE_HOME \ -outdir=$ORACLE_HOME/appsutil/log \ -mode=syncUtlFileDir \ -skipautoconfig=yes
Step 16: Configure Target Application Node (appsTier dualfs)
cd /u01/apps/PERP/fs2/EBSapps/comn/clone/bin perl ./adcfgclone.pl appsTier dualfs
Step 17: Start EBS Application Services
. /u01/apps/PERP/fs2/EBSapps.env run cd $ADMIN_SCRIPTS_HOME ./adstrtal.sh
If this post helped you, please follow and support:
YouTube: https://www.youtube.com/@foalabs

Post a Comment
Post a Comment