May 25, 2026

Upgrading Oracle E-Business Suite R12.2 Database from 12.1.0.2 to 19c - Part VII

   This post is continuation of the second part of the post : Part VI


Update the CDB initialization parameters

On the database server node, copy the <source SID>_initparam.sql and <source SID>_datatop.txt files from the source $ORACLE_HOME/dbs directory to the new $ORACLE_HOME/dbs directory. Then use SQL*Plus to connect to the CDB as SYSDBA, and run the following commands to update the CDB initialization parameters:

 

cd <$12c_ORACLE_HOME>/dbs 

[oraprod@non-prod-db ~]$ cd /dbdata/erp/12.1.0/dbs

We altered the PGA_AGGREGATE_TARGET , SGA_TARGET , SGA_MAX_SIZE parameter value , kept 3gb for pga and 8g for sga for upgrade purpose inside the EBS_initparam.sql file

 

 

[oraprod@non-prod-db dbs]$ cp EBS_initparam.sql EBS_datatop.txt /dbdata/erp/19.3.0/dbs

 

[oraprod@non-prod-db ~]$ 19cdb_env

[oraprod@non-prod-db ~]$ cd $ORACLE_HOME/appsutil

 

[oraprod@non-prod-db appsutil]$ . ./txkSetCfgCDB.env dboraclehome=/dbdata/erp/19.3.0

 

Oracle Home being passed: /dbdata/erp/19.3.0

 

export ORACLE_SID=<CDB SID>   -- Use ORACLE_SID OF cdb. Take special attention as sid is  case sensitive.

 

[oraprod@non-prod-db appsutil]$ export ORACLE_SID=ebscdb

[oraprod@non-prod-db appsutil]$ sqlplus / as sysdba

SQL> startup nomount

SQL> @/dbdata/erp/19.3.0/dbs/EBS_initparam.sql

 

SQL> alter system set LOCAL_LISTENER="ebsproddb.soumya.com:1521" scope=both;  #ensure the port number is correct

SQL> SQL> alter system set processes=1600 scope=spfile;

SQL>create pfile from spfile;

SQL>shutdown;

SQL>startup

 

SQL> select name,open_mode from v$database;

 

NAME      OPEN_MODE

--------- --------------------

EBSCDB   READ WRITE


 


Check for PDB violations

Use the following commands to run the txkChkPDBCompatability.pl script. This checks the PDB for any violations.

 

$ cd $ORACLE_HOME/appsutil

$ . ./txkSetCfgCDB.env dboraclehome=<full path of ORACLE_HOME>

$ export ORACLE_SID=<CDB SID>

$ cd $ORACLE_HOME/appsutil/bin

$ perl txkChkPDBCompatability.pl -dboraclehome=<ORACLE_HOME>

-outdir=<ORACLE_HOME>/appsutil/log -cdbsid=<CDB SID>

-pdbsid=<source SID> -servicetype=onpremise

 

 

[oraprod@non-prod-db ~]$ 19cdb_env

[oraprod@non-prod-db ~]$ cd $ORACLE_HOME/appsutil

 

[oraprod@non-prod-db appsutil]$ . ./txkSetCfgCDB.env dboraclehome=/dbdata/erp/19.3.0

 

Oracle Home being passed: /dbdata/erp/19.3.0

[oraprod@non-prod-db appsutil]$ export ORACLE_SID=ebscdb

[oraprod@non-prod-db appsutil]$ cd $ORACLE_HOME/appsutil/bin

 

[oraprod@non-prod-db bin]$ perl txkChkPDBCompatability.pl -dboraclehome=/dbdata/erp/19.3.0 -outdir=/dbdata/erp/19.3.0/appsutil/log -cdbsid=ebscdb -pdbsid=EBS -servicetype=onpremise

 

 

Script Name    : txkChkPDBCompatability.pl

Script Version : 120.0.12020000.11

Started        : Wed Jun  4 10:51:50 IST 2025

 

Log File       : /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/txkChkPDBCompatability.log

 

 

-----------

Values used

-----------

Database Oracle Home    : /dbdata/erp/19.3.0

CDB SID                 : ebscdb

PDB SID                 : EBS

OUT Directory           : /dbdata/erp/19.3.0/appsutil/log

Service Type            : onpremise

 

 

 

 

=========================

Validating oracle home...

=========================

Oracle Home: /dbdata/erp/19.3.0 exists.

 

 

===========================

Validating out directory...

===========================

Oracle Home: /dbdata/erp/19.3.0/appsutil/log exists.

 

 

=============================

Validating DB service type...

=============================

Service Type: onpremise

Service type is valid.

 

 

============================

Inside setFileLocations()...

============================

PDB_DESC_XML: /dbdata/erp/19.3.0/dbs/TEST_PDBDesc.xml

 

 

**** Setting ORACLE_SID to ebscdb

 

 

 

 

========================

Inside getDBVersion()...

========================

DB_VERSION = db190

 

 

 

=================================

Inside checkPDBCompatibility()...

=================================

File /dbdata/erp/19.3.0/dbs/TEST_PDBDesc.xml exists.

Generating SQL file : /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/create_pdb_compatible.sql

SQL output file     : /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/create_pdb_compatible.out

==========================

Inside executeSQLFile()...

==========================

Executing the SQL...

 

Execute SYSTEM command : sqlplus -s /nolog @/dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/create_pdb_compatible.sql

==============================

Inside searchFileContents()...

==============================

log_file: /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/create_pdb_compatible.out

pattern: ERROR

=============================

Could not find the pattern...

=============================

EXIT STATUS: 0

PDB compatability check executed successfully.

LOG FILE: /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/create_pdb_compatible.out.

 

 

====================================

Inside checkPDBPluginViolations()...

====================================

File /dbdata/erp/19.3.0/dbs/TEST_PDBDesc.xml exists.

Generating SQL file : /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_pdb_plugin_violations.sql

SQL output file     : /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_pdb_plugin_violations.out

==========================

Inside executeSQLFile()...

==========================

Executing the SQL...

 

Execute SYSTEM command : sqlplus -s /nolog @/dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_pdb_plugin_violations.sql

==============================

Inside searchFileContents()...

==============================

log_file: /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_pdb_plugin_violations.out

pattern: ERROR

================

Pattern found...

================

EXIT STATUS: 1

 

 

Violations reported for the database 'EBS' to be plugged in. Cannot proceed further.

 

 

 

 

 

 

****************************************************************************************

CHECK THE BELOW LOG FILE FOR VIOLATIONS:

/dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_pdb_plugin_violations.out

****************************************************************************************

 

 

===================================

Inside checkUNDOMgmtViolations()...

===================================

File /dbdata/erp/19.3.0/dbs/TEST_PDBDesc.xml exists.

Generating SQL file : /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_undo_mgmt.sql

SQL output file     : /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_undo_mgmt.out

==========================

Inside executeSQLFile()...

==========================

Executing the SQL...

 

Execute SYSTEM command : sqlplus -s /nolog @/dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_undo_mgmt.sql

==============================

Inside searchFileContents()...

==============================

log_file: /dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_undo_mgmt.out

pattern: ERROR|WARNING

=============================

Could not find the pattern...

=============================

EXIT STATUS: 0

 

 

No UNDO MANAGEMENT violations in the plugged in PDB 'TEST'. Proceed further.

 

 

 

 

 

 

****************************************************************************************

CHECK THE BELOW LOG FILE FOR VIOLATIONS:

/dbdata/erp/19.3.0/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Wed_Jun_4_10_51_50_2025/check_undo_mgmt.out

****************************************************************************************

 

 

****************************************************************************************

*                                                                                      *

*       IMPORTANT NOTE: RESOLVE ALL VIOLATIONS BEFORE PROCEEDING TO CREATE PDB         *

*                                                                                  *

*         - All the errors except SQL PATCH ERRORS should be resolved                  *

*                                                                                      *

*         - All the warnings except CHARACTER SET WARNINGS can be ignored              *

*                                                                                      *

*         - Review and set the INIT PARAMETERs to match the EBS requirements           *

*                                                                                      *

****************************************************************************************

Exiting from the script.

Ended: Wed Jun  4 10:51:50 IST 2025

 

 


Review all warnings and resolve all errors. Re-run the script to verify all errors have been resolved. Do not run noncdb_to_pdb.sql as that will be run by txkCreatePDB.pl in the next step.


Create the PDB

Load the environment variables by running the following commands:

[oraprod@testdb ~]$ 19cdb_env

 

[oraprod@testdb ~]$ cd $ORACLE_HOME/appsutil

 

[oraprod@testdb appsutil]$ . ./txkSetCfgCDB.env dboraclehome=/dbdata/erp/19.3.0

 

Oracle Home being passed: /dbdata/erp/19.3.0

[oraprod@testdb appsutil]$ cd $ORACLE_HOME/appsutil/bin

 

syntax:-

perl txkCreatePDB.pl -dboraclehome=<ORACLE_HOME> -outdir=<ORACLE_HOME>/appsutil/log \

-cdbsid=<CDB SID> -pdbsid=<source SID> -dbuniquename=<CDB SID> -servicetype=onpremise

 

 

[oraprod@testdb appsutil]$ perl txkCreatePDB.pl -dboraclehome=/dbdata/erp/19.3.0 -outdir=/dbdata/erp/19.3.0/appsutil/log -cdbsid=ebscdb -pdbsid=EBS -dbuniquename=ebscdb -servicetype=onpremise

 

 

DATA_TOP_1

===========

Enter the non-CDB data top [/dbdata/erp/data]:

Enter the corresponding PDB data top [/dbdata/erp/data]:

 


Run the post PDB script

Use the following commands to run the txkPostPDBCreationTasks.pl script. This updates the PDB configuration.

Note:- Before running post pdb script, we need to disable PASSWORD_VERIFY_FUNCTION function, otherwise it will cause an error

[oraprod@testdb ~]$ 19cdb_env

[oraprod@testdb bin]$sqlplus / as sysdba

 

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;

SQL> alter session set container=EBS;

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;

SQL>exit;



[oraprod@testdb ~]$ 19cdb_env

[oraprod@testdb ~]$ cd $ORACLE_HOME/appsutil

 

[oraprod@testdb appsutil]$ . ./txkSetCfgCDB.env dboraclehome=/dbdata/erp/19.3.0

 

Oracle Home being passed: /dbdata/erp/19.3.0

[oraprod@testdb appsutil]$ cd $ORACLE_HOME/appsutil/bin

Syntax:-

perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl -dboraclehome=<ORACLE_HOME> \

-outdir=<ORACLE_HOME>/appsutil/log -cdbsid=<CDB SID> -pdbsid=<PDB SID> \

-appsuser=apps -dbport=<TNS port number> -servicetype=onpremise

 

[oraprod@testdb appsutil]$ perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl -dboraclehome=/dbdata/erp/19.3.0 -outdir=/dbdata/erp/19.3.0/appsutil/log -cdbsid=ebscdb -pdbsid=EBS -appsuser=apps -dbport=1521 -servicetype=onpremise

 


  • For the PDB database on UNIX/Linux platforms, to connect as SYSDBA, source the $ORACLE_HOME/<CDB SID>_<HOST>.env file. Set the ORACLE_PDB_SID environment variable to <PDB SID>. Then, connect as SYSDBA.

 

  • For the PDB database, to connect to other users, source the $ORACLE_HOME/<PDB SID>_<HOST>.env file. Then, run sqlplus <user>/<password>@<PDB SID>.

To connect to PDB as sysdba

cd $ORACLE_HOME

[oraprod@testdb 19.3.0]$ . ebscdb_ebsproddb.env

 

[oraprod@testdb 19.3.0]$ export ORACLE_PDB_SID=EBS

[oraprod@testdb 19.3.0]$ sqlplus / as sysdba

 

 

SQL> show pdbs

 

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

         3 EBS                           READ WRITE NO


To connect CDB as sysdba

 If opening in same session,

[ebs19cdb@ccuine102 19.3.0]$ . ebscdb_ebsproddb.env

unset ORACLE_PDB_SID

[ebs19cdb@ccuine102 19.3.0]$ sqlplus / as sysdba

SQL> show pdbs

 

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

         2 PDB$SEED                       READ ONLY  NO

         3 EBS                           READ WRITE NO

 

 

 If opening in a new session,

[oraprod@testdb ~]$ 19cdb_env

[oraprod@testdb ~]$ cd $ORACLE_HOME

 [oraprod@testdb 19.3.0]$ . ebscdb_ebsproddb.env

 [ebs19cdb@ccuine102 19.3.0]$ sqlplus / as sysdba

SQL> show pdbs

 

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

         2 PDB$SEED                       READ ONLY  NO

         3 EBS                           READ WRITE NO

 

To connect as non system user into PDB

[oraprod@testdb 19.3.0]$ . ebscdb_ebsproddb.env

[oraprod@testdb 19.3.0]$ sqlplus apps/apps@ebs

SQL> show con_name

 

CON_NAME

------------------------------

EBS

 

 

 

Important:- DO NOT CHANGE SQLNET.ALLOWED_LOGON_VERSION_SERVER to any other version. Keep it default value i.e 10.


To Start and stop Database Listner

Do not invoke any environment file

Only invoke . 19cdb_env file and

lsnrctl start <CDB_SID>

lsnrctl stop <CDB_SID>

 

Change parameter:-

[oraprod@testdb ~]$ 19cdb_env

[oraprod@testdb ~]$ cd $ORACLE_HOME

[oraprod@testdb 19.3.0]$ . ebscdb_ebsproddb.env

[oraprod@testdb 19.3.0]$ sqlplus / as sysdba

 

SQL> alter system set event='10946 trace name context forever, level 8454144' scope=spfile;

 


Run Autoconfig on the Application tier

 

As the user of the applications server node, on both the Patch and Run APPL_TOP, modify the $TNS_ADMIN/tnsnames.ora file to specify the CDB

instance name. The following shows the format of the new TNSentry.

 

<TWO_TASK> =

 

 (DESCRIPTION =

 

  (ADDRESS = (PROTOCOL=tcp)(HOST=<hostname>.<domain>)(PORT=<port number>))

 

  (CONNECT_DATA = (SERVICE_NAME=ebs_<PDB SID>)(INSTANCE_NAME=<CDB SID>))

 

 )

 

Edit tnsnames in run file system

[appltest@testapp ~]$ . /apdata/erp/EBSapps.env run

 

[appltest@testapp 10.1.2]$ cd $TNS_ADMIN

[appltest@testapp admin]$ pwd

/apdata/erp/fs1/inst/apps/EBS_ebsprodapp/ora/10.1.2/network/admin

 

[appltest@testapp admin]$ cp tnsnames.ora tnsnames.ora_060825

 

 

 

 

[appltest@testapp admin]$ vi tnsnames.ora

EBSCDB=

        (DESCRIPTION=

                (ADDRESS=(PROTOCOL=tcp)(HOST=ebsproddb.soumya.com)(PORT=1521))

            (CONNECT_DATA=

                (SERVICE_NAME=ebs_EBS)

                (INSTANCE_NAME=EBSCDB)

            )

        )

 

 

Edit tnsnames in patch file system

 

[appltest@testapp admin]$ . /apdata/erp/EBSapps.env patch

[appltest@testapp admin]$ cd $TNS_ADMIN

[appltest@testapp admin]$ pwd

/apdata/erp/fs2/inst/apps/EBS_ebsprodapp/ora/10.1.2/network/admin

 

[appltest@testapp admin]$ cp tnsnames.ora tnsnames.ora_060825

[appltest@testapp admin]$ vi tnsnames.ora

 

EBSCDB=

        (DESCRIPTION=

                (ADDRESS=(PROTOCOL=tcp)(HOST=ebsproddb.soumya.com)(PORT=1521))

            (CONNECT_DATA=

                (SERVICE_NAME=ebs_EBS)

                (INSTANCE_NAME=EBSCDB)

            )

        )



Update the following values in the context file of every Applications tier server node.

This is to be done in both Run and Patch file system

Variable Name         Value

s_dbport         New database port

s_apps_jdbc_connect_descriptor   NULL

s_applptmp    Directory (not /usr/tmp) defined in UTL_FILE_DIR


[appltest@testapp admin]$ grep s_dbport $CONTEXT_FILE

      <dbport oa_var="s_dbport" oa_type="EXT_PORT" base="1521" step="1" range="-1" label="Database Port">1521</dbport>

 

 

 

For  values of s_dbport we didn’t change anything , as our old database’s listener port and new 19c db listener port is same.

 

For value s_apps_jdbc_connect_descriptor , we need to change the values to null.Yellow marked part need to be removed.

[appltest@testapp ~]$ . /apdata/erp/EBSapps.env run

 

[appltest@testapp admin]$ grep s_apps_jdbc_connect_descriptor $CONTEXT_FILE

         <jdbc_url oa_var="s_apps_jdbc_connect_descriptor">jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS=(PROTOCOL=tcp)(HOST= ebsproddb.soumya.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME= EBS)))</jdbc_url>

 

Take backup of CONTEXT_FILE in run file system

 

[appltest@testapp admin]$ cd /apdata/erp/fs1/inst/apps/EBS_ebsprodapp/appl/admin/

[appltest@testapp admin]$ cp EBS_ebsprodapp.xml  EBS_ebsprodapp_060825.xml

 

Post change it should look like this

[appltest@testapp admin]$ grep s_apps_jdbc_connect_descriptor $CONTEXT_FILE

         <jdbc_url oa_var="s_apps_jdbc_connect_descriptor"></jdbc_url>

 

Do the same in patch file system.

[appltest@testapp ~]$ . /apdata/erp/EBSapps.env patch

[appltest@testapp admin]$ cd /apdata/erp/fs2/inst/apps/EBS_ebsprodapp/appl/admin

[appltest@testapp admin]$ cp EBS_ebsprodapp.xml EBS_ebsprodapp_060825.xml

 

Perform the changes as mentioned above.


[appltest@testapp admin]$ grep s_applptmp $CONTEXT_FILE

         <APPLPTMP oa_var="s_applptmp" osd="UNIX">/usr/tmp</APPLPTMP>

 



[appltest@testapp admin]$ grep s_applptmp $CONTEXT_FILE

         <APPLPTMP oa_var="s_applptmp" osd="UNIX">/usr/tmp</APPLPTMP>

 

To identify the allowable directories for s_applptmp use, connect to the Oracle E-Business Suite database instance as the app’s user (on PDB)and run the following query:

 

[oraprod@testdb 19.3.0]$ . ebscdb_ebsproddb.env

[oraprod@testdb 19.3.0]$ sqlplus apps@test

SQL> select value from v$parameter where name='utl_file_dir';

 

VALUE

--------------------------------------------------------------------------------

/dbdata/erp/temp/EBS,/tmp,/dbdata/erp/19.3.0/appsutil/outbound/TEST_testdb

 

 

Add the above values for s_applptmp parameter . After change it will look like below.

 

[appltest@testapp admin]$ grep s_applptmp $CONTEXT_FILE

         <APPLPTMP oa_var="s_applptmp" osd="UNIX">/dbdata/erp/temp/TEST </APPLPTMP>

 

Note:-Only add the 1st entry received from above query.

i.e. /dbdata/erp/temp/EBS


Do above 2 changes in patch file system. Ensure to take backup of context file in patch file system before changing.

 

 

Run Autoconfig on DB tier

[oraprod@testdb ~]$ 19cdb_env

[oraprod@testdb ~]$ cd $ORACLE_HOME

[oraprod@testdb 19.3.0]$ . ebscdb_ebsproddb.env

[oraprod@testdb 19.3.0]$ cd appsutil/scripts/EBS_ebsproddb /

[oraprod@testdb TEST_testdb]$ sh adautocfg.sh


Run AutoConfig on both patch and run APPL_TOPs using the following command.

 

[appltest@testapp ~]$ . /apdata/erp/EBSapps.env run

 

[appltest@testapp scripts]$ $INST_TOP/admin/scripts/adautocfg.sh

 

 

Note: Please disable LOGON TRIGGER disabled . Otherwise it will cause error during execution of autoconfig in patch file system

 

[oraprod@testdb 19.3.0]$ . ebscdb_ebsproddb.env

[oraprod@testdb 19.3.0]$ sqlplus / as sysdba

SQL> alter session set container=EBS;

SQL> ALTER TRIGGER EBS_SYSTEM.EBS_LOGON DISABLE;

 

Now execute autoconfig on patch file system.

 

Run autoconfig on patch file system

[appltest@testapp ~]$ . /apdata/erp/EBSapps.env patch

 

[appltest@testapp ~]$ $INST_TOP/admin/scripts/adautocfg.sh

 

Enable LOGON_TRIGGER.

 

SQL> ALTER TRIGGER EBS_SYSTEM.EBS_LOGON ENABLE;

 

Now start up application services

[appltest@testapp ~]$ . /apdata/erp/EBSapps.env run

[appltest@testapp ~]$ cd $ADMIN_SCRIPTS_HOME

[appltest@testapp scripts]$ adstrtal.sh

 

 

This concludes the EBS database upgrade process from 12.1.0.2 to 19c


No comments:

Post a Comment

Upgrading Oracle E-Business Suite R12.2 Database from 12.1.0.2 to 19c - Part VII

    This post is continuation of the second part of the post :  Part VI Update the CDB initialization parameters On the database server no...