Thursday, March 25, 2021

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 to TRUE

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

  1. Pre-Validation Is Critical
    Running PDB_descb.sh ensures all parameters, paths, and Oracle Home settings are correct before you even begin the plug-in process.

  2. Pay Attention to Oracle’s Warnings
    Especially the one about not starting the database before PDB creation. It can invalidate the XML descriptor.

  3. TDE Awareness
    If TDE (Transparent Data Encryption) is enabled, you’ll need wallet credentials. Ours was disabled, which simplified the process.

  4. Use Oracle’s Tools
    The TXK scripts (txkCreatePDB.pltxkOnPremPrePDBCreationTasks.pl) abstract many of the complex steps involved in this migration.