Migrating EBS to a Pluggable Database (PDB) on Oracle 19c: A Step-by-Step Experience
Migrating an Oracle E-Business Suite (EBS) database to a Pluggable Database (PDB) architecture is a critical step in modernizing and aligning with Oracle’s multitenant strategy. Recently, I completed a seamless migration of the OMMCLN EBS instance into a PDB under the OMCDB container, using Oracle's provided utilities. Here's a detailed breakdown of the journey — from pre-checks to the final plug-in and verification.
Environment Overview
-
Oracle Database Version: 19.0.0
-
EBS SID:
OMMCLN
-
Target CDB:
OMCDB
-
Server Host:
db04.domainname.com
-
Operating System: Linux
Step 1: Run Pre-PDB Conversion Checks
oramcl @ db04.domainname.com/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/bin >sh PDB_descb.sh
Enter the APPS Password
Script Name : txkOnPremPrePDBCreationTasks.pl
Script Version : 120.0.12020000.15
Started : Thu Mar 25 09:25:44 uae 2021
Log File : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/txkOnPremPrePDBCreationTasks.log
-----------
Values used
-----------
DB Oracle Home : /d03/app/oracle/product/19.0.0/dbhome_1
OUT Directory : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log
Skip DB shutdown : No
EBS SID : OMMCLN
APPS Schema Username : apps
Is RAC? : No
Logical Hostname :
=========================
Validating oracle home...
=========================
Oracle Home: /d03/app/oracle/product/19.0.0/dbhome_1 exists.
===========================
Validating out directory...
===========================
Out directory: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log exists.
============================
Inside getDBHostDetails()...
============================
DB Hostname : db04
DB Domain : domainname.com
Logical hostname is not passed, hence using physical hostname details.
Logical hostname: db04.domainname.com
==========================
Inside setContextName()...
==========================
CONTEXT_NAME: OMMCLN_db04
============================
Inside setFileLocations()...
============================
=====================
Inside getDBName()...
=====================
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/get_db_name.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/get_db_name.out
Spool File : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/spool_get_db_name.log
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/get_db_name.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/get_db_name.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
Removing the file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/get_db_name.sql
EXIT STATUS: 0
Getting the value of DB Name...
db_name: OMMCLN
PDB_DESC_XML: /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml
INITPARAM_FILE: /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_initparam.sql
DATATOP_FILE: /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_datatop.txt
========================
Inside getDBVersion()...
========================
DB_VERSION = db190
=============================
Shutting down the database...
=============================
Shutdown mode : IMMEDIATE
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
SQL execution went through successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.out.
========================
Starting the database...
========================
Startup mode : MOUNT
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/startup_MOUNT.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/startup_MOUNT.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/startup_MOUNT.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/startup_MOUNT.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
SQL execution went through successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/startup_MOUNT.out.
==================================
Inside createPDBDescriptorXML()...
==================================
==================================
Inside backupPDBDescriptorXML()...
==================================
File /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml does not exist.
File /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml does not exist.
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/create_pdb_desc_xml.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/create_pdb_desc_xml.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/create_pdb_desc_xml.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/create_pdb_desc_xml.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
PDB Descriptor XML /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml created successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/create_pdb_desc_xml.out.
=============================
Shutting down the database...
=============================
Shutdown mode : IMMEDIATE
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
SQL execution went through successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_PRE_PDB_Thu_Mar_25_09_25_39_2021/shutdown_IMMEDIATE.out.
****************************************************************************************
* *
* IMPORTANT NOTE: DO NOT START THE DB TILL THE DATA FILES ARE MIGRATED *
* *
* IF DB IS STARTED, THEN PDB DESCRIPTOR XML GENERATED BECOMES INVALID *
* *
****************************************************************************************
Exiting from the script.
Ended: Thu Mar 25 09:36:59 uae 2021
=====
Step 2: Run the PDB Creation Script
After copying data files (or validating the existing ones), I proceeded to create the PDB using:
Key Inputs & Defaults:
-
Data directories:
/d01
,/d02
,/d03
-
Copy Data Files: No
-
TDE: Disabled
Core Phases Executed:
Compatibility & Validation
-
PDB Descriptor XML checked
-
Charset and plugin violation checks passed
-
_PDB_NAME_CASE_SENSITIVE
set toTRUE
PDB Creation
-
Created PDB using descriptor XML
-
Successfully converted from non-CDB to PDB
Cleanup & Finalization
-
Closed and reopened PDB
-
Saved PDB state
oramcl @ db04.domainname.com/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/bin >sh PDB_creation.sh
TDE is not enabled, WALLET credentials and SECRET KEY are not required.
Script Name : txkCreatePDB.pl
Script Version : 120.0.12020000.35
Started : Thu Mar 25 20:12:57 uae 2021
Log File : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/txkCreatePDB.log
-----------
Values used
-----------
Database Oracle Home : /d03/app/oracle/product/19.0.0/dbhome_1
CDB SID : OMCDB
PDB SID : OMMCLN
Non-CDB Name :
Non-CDB data directory :
PDB data directory :
Non-CDB undo tablespace :
PDB undo tablespace :
Copy data files : no
OUT Directory : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log
Ignore PDB State : No
Service Type : onpremise
Is TDE enabled : No
DB Unique Name : OMCDB
Prompt secret key : no
=========================
Validating oracle home...
=========================
Oracle Home: /d03/app/oracle/product/19.0.0/dbhome_1 exists.
===========================
Validating out directory...
===========================
Out directory: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log exists.
=============================
Validating DB service type...
=============================
Service Type: onpremise
Service type is valid.
============================
Inside getDBHostDetails()...
============================
DB Hostname : db04
DB Domain : domainname.com
============================
Inside setFileLocations()...
============================
PDB_DESC_XML: /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml
========================
Inside loadDataTops()...
========================
Reading the data tops from file /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_datatop.txt
Processing entry for DATA_TOP_1-->/d01/app/oracle/oradata
Processing entry for DATA_TOP_2-->/d02/app/oracle/oradata
Processing entry for DATA_TOP_3-->/d03/app/oracle/oradata
============================
Inside promptDataTopDir()...
============================
Number of DATA_TOPs: 3
DATA_TOP_3
===========
Enter the non-CDB data top [/d03/app/oracle/oradata]:
Enter the corresponding PDB data top [/d03/app/oracle/oradata]:
DATA_TOP_1
===========
Enter the non-CDB data top [/d01/app/oracle/oradata]:
Enter the corresponding PDB data top [/d01/app/oracle/oradata]:
DATA_TOP_2
===========
Enter the non-CDB data top [/d02/app/oracle/oradata]:
Enter the corresponding PDB data top [/d02/app/oracle/oradata]:
======================
Inside setASMFlag()...
======================
data_first_char: /
DATA_ASM_FLAG: 0
Not checking keystore as TDE is not enabled.
============================
Inside validateDataTops()...
============================
================================
Validating data top directory...
================================
Data top directory /d02/app/oracle/oradata exists.
================================
Validating data top directory...
================================
Data top directory /d01/app/oracle/oradata exists.
================================
Validating data top directory...
================================
Data top directory /d03/app/oracle/oradata exists.
**** Setting ORACLE_SID to OMCDB for PDB Creation.
========================
Inside getDBVersion()...
========================
DB_VERSION = db190
**** Setting ORACLE_SID to OMCDB for PDB Creation.
=============================
Shutting down the database...
=============================
Shutdown mode : IMMEDIATE
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/shutdown_IMMEDIATE.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/shutdown_IMMEDIATE.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/shutdown_IMMEDIATE.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/shutdown_IMMEDIATE.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
SQL execution went through successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/shutdown_IMMEDIATE.out.
========================
Starting the database...
========================
Startup mode : NONE
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/startup_NONE.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/startup_NONE.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/startup_NONE.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/startup_NONE.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
SQL execution went through successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/startup_NONE.out.
=================================
Inside checkPDBCompatibility()...
=================================
File /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml exists.
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_compatible.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_compatible.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_compatible.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_compatible.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
PDB compatability check executed successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_compatible.out.
==================================
Inside checkCharSetViolations()...
==================================
File /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml exists.
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_char_set_violations.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_char_set_violations.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_char_set_violations.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_char_set_violations.out
pattern: ERROR|WARNING
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
No CHARACTER violations in the plugged in PDB 'OMMCLN'. Proceed further.
====================================
Inside checkPDBPluginViolations()...
====================================
File /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml exists.
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_plugin_violations.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_plugin_violations.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_plugin_violations.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_plugin_violations.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
No violations for the database 'OMMCLN' to be plugged in. Proceed further.
======================================
Inside checkPDBCaseSensitiveParam()...
======================================
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/get_case_sensitive_param.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/get_case_sensitive_param.out
Spool File : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/spool_get_case_sensitive_param.log
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/get_case_sensitive_param.sql
Removing the file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/get_case_sensitive_param.sql
=============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/get_case_sensitive_param.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
Getting the parameter value.
Parameter _PDB_NAME_CASE_SENSITIVE is set to TRUE.
=======================================
Inside createPDBUsingDescriptorXML()...
=======================================
File /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml exists.
==================================
Inside checkPDBAlreadyCreated()...
==================================
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_created.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_created.out
Spool File : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/spool_check_pdb_created.log
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_created.sql
Removing the file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_created.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_created.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
Checking for PDB: OMMCLN
================================
Inside genDataTopMappingStr()...
================================
dir_mapping_str: '/d02/app/oracle/oradata', '/d02/app/oracle/oradata',
'/d01/app/oracle/oradata', '/d01/app/oracle/oradata',
'/d03/app/oracle/oradata', '/d03/app/oracle/oradata'
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_using_desc_xml.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_using_desc_xml.out
PDB will be created using the existing non-CDB database files.
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_using_desc_xml.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_using_desc_xml.out
pattern: ERROR|SP2-0027
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
PDB is successfully created using descriptor XML /d03/app/oracle/product/19.0.0/dbhome_1/dbs/OMMCLN_PDBDesc.xml
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/create_pdb_using_desc_xml.out.
==============================
Inside convertNonCDBToPDB()...
==============================
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/convert_noncdb_to_pdb.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/convert_noncdb_to_pdb.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/convert_noncdb_to_pdb.sql
===========================
Inside searchSpoolFile()...
===========================
Spool file passed: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/spool_convert_noncdb_to_pdb.log
EXIT STATUS: 0
PDB conversion completed successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/convert_noncdb_to_pdb.out.
================
Close the PDB...
================
==========================
Inside checkPDBStatus()...
==========================
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_status.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_status.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_status.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/check_pdb_status.out
pattern: MOUNTED
================
Pattern found...
================
EXIT STATUS: 1
PDB already closed. Do nothing.
==================
Opening the PDB...
==================
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/open_PDB.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/open_PDB.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/open_PDB.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/open_PDB.out
pattern: ERROR|WARNING
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
PDB opened successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/open_PDB.out.
=======================
Saving the PDB state...
=======================
Generating SQL file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/save_PDB_state.sql
SQL output file : /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/save_PDB_state.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus -s /nolog @/d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/save_PDB_state.sql
==============================
Inside searchFileContents()...
==============================
log_file: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/save_PDB_state.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
PDB state saved successfully.
LOG FILE: /d03/app/oracle/product/19.0.0/dbhome_1/appsutil/log/TXK_CREATE_PDB_Thu_Mar_25_20_12_57_2021/save_PDB_state.out.
Exiting from the script.
Ended: Thu Mar 25 21:07:54 uae 2021
========
Final Result: Migration Success!
The process wrapped up cleanly with zero errors or warnings across all stages. The PDB OMMCLN
was successfully plugged into the OMCDB
container, opened, and its state persisted.
Key Logs:
txkOnPremPrePDBCreationTasks.log
txkCreatePDB.log
SQL output files for each step
Lessons & Best Practices
Pre-Validation Is Critical
RunningPDB_descb.sh
ensures all parameters, paths, and Oracle Home settings are correct before you even begin the plug-in process.Pay Attention to Oracle’s Warnings
Especially the one about not starting the database before PDB creation. It can invalidate the XML descriptor.TDE Awareness
If TDE (Transparent Data Encryption) is enabled, you’ll need wallet credentials. Ours was disabled, which simplified the process.Use Oracle’s Tools
The TXK scripts (txkCreatePDB.pl
,txkOnPremPrePDBCreationTasks.pl
) abstract many of the complex steps involved in this migration.