June 4, 2026

How to Patch Oracle Database to 19.31 on Windows: Step-by-Step Guide

 



In this article, I'll walk you through the steps I used to patch an Oracle Database 19c environment from version 19.29 to 19.31 following Oracle's April 2026 Quarterly Release Update.

Quarterly patching is a regular responsibility for Oracle DBAs, and while the version numbers may change, the underlying process remains largely consistent across Oracle 19c Release Updates. This guide is intended to serve as a practical reference that you can use during your own patching activities.

Note: Never apply a patch directly to a Production environment without first validating it in Development or Test. Thorough testing helps identify potential issues before they impact business-critical systems.

Requirements

Before proceeding, ensure that the following prerequisites are met:

  • Oracle Database 19c (Windows x86-64)
  • Active My Oracle Support (MOS) account
  • Appropriate access to ORACLE_HOME and ORACLE_BASE directories
  • Minimum 12 GB free disk space in Oracle Home
  • WinSCP or equivalent file transfer utility
  • Scheduled maintenance window and approved downtime

 

Step 1: Download the Patch and OPatch Utility

Log in to Oracle Support and download the following:

  • Patch file: 38818049 → p38818049_190000_MSWIN-x86-64.zip
  • OPatch utility: 6880880 → p6880880_190000_MSWIN -x86-64.zip

Steps to download: Select Patches & Updates → enter patch number → select platform Windows x86-64 → download both files and review the README.

 

Step 2: Check and Update OPatch

On the server, check your current OPatch version:

cd %ORACLE_HOME%/OPatch

opatch version

 

 

You need version 12.2.0.1.48 or higher. If it's older, update it:

cd %ORACLE_HOME%

ren OPatch OPatch_backup1

robocopy p6880880_190000_MSWIN -x86-64.zip   %ORACLE_HOME%

cd %ORACLE_HOME%

unzip p6880880_190000_MSWIN -x86-64.zip

 

 

Step 3: Run Pre-checks

Before applying the patch, check for conflicts with existing patches:

 

C:\Users\Administrator>cd C:\software\oracle_patch_19.31\38818049

 

C:\software\oracle_patch_19.31\38818049>D:\oracle\product\19.3.0\dbhome_1\OPatch\opatch prereq CheckConflictAgainstOHWithDetail -ph ./

Oracle Interim Patch Installer version 12.2.0.1.51

Copyright (c) 2026, Oracle Corporation.  All rights reserved.

 

PREREQ session

 

Oracle Home       : D:\oracle\product\19.3.0\dbhome_1

Central Inventory : C:\Program Files\Oracle\Inventory

   from           :

OPatch version    : 12.2.0.1.51

OUI version       : 12.2.0.7.0

Log file location : D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\opatch\opatch2026-06-06_19-40-37PM_1.log

 

Invoking prereq "checkconflictagainstohwithdetail"

 

Prereq "checkConflictAgainstOHWithDetail" passed.

 

OPatch succeeded.

 

 

As we see "OPatch succeeded", we are good to go. If there are conflicts, resolve them before proceeding.

Step 4: Stop the Database and Listener

sqlplus / as sysdba

 

SQL> shutdown immediate

SQL> exit

 

lsnrctl stop

 

 

Verify all services are completely down before moving to the next step.

Step 5: Clean Up Inactive Patches (Optional but Recommended)

This frees up Oracle Home space before applying the new patch:

cd %ORACLE_HOME%/OPatch

 

./opatch util listOrderedInactivePatches

 

./opatch util deleteInactivePatches

 

 

Step 6: Check Available Disk Space

Do not proceed if space is insufficient in oracle home

Step 7: Apply the Patch

C:\Software\oracle_patch_19.31\38818049>D:\oracle\product\19.3.0\dbhome_1\OPatch\opatch apply

Oracle Interim Patch Installer version 12.2.0.1.51

Copyright (c) 2026, Oracle Corporation.  All rights reserved.

 

 

Oracle Home       : D:\oracle\product\19.3.0\dbhome_1

Central Inventory : C:\Program Files\Oracle\Inventory

   from           :

OPatch version    : 12.2.0.1.51

OUI version       : 12.2.0.7.0

Log file location : D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\opatch\opatch2026-06-04_06-01-03AM_1.log

 

Verifying environment and performing prerequisite checks...

 

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

Start OOP by Prereq process.

Launch OOP...

 

Oracle Interim Patch Installer version 12.2.0.1.51

Copyright (c) 2026, Oracle Corporation.  All rights reserved.

 

 

Oracle Home       : D:\oracle\product\19.3.0\dbhome_1

Central Inventory : C:\Program Files\Oracle\Inventory

   from           :

OPatch version    : 12.2.0.1.51

OUI version       : 12.2.0.7.0

Log file location : D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\opatch\opatch2026-06-04_06-04-26AM_1.log

 

Verifying environment and performing prerequisite checks...

OPatch continues with these patches:   38818049

 

Do you want to proceed? [y|n]

y

User Responded with: Y

All checks passed.

 

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.

(Oracle Home = 'D:\oracle\product\19.3.0\dbhome_1')

 

 

Is the local system ready for patching? [y|n]

y

User Responded with: Y

Backing up files...

Applying interim patch '38818049' to OH 'D:\oracle\product\19.3.0\dbhome_1'

ApplySession: Optional component(s) [ oracle.tomcat.crs, 19.0.0.0.0 ] , [ oracle.has.cfs, 19.0.0.0.0 ] , [ oracle.rdbms.tg4msql, 19.0.0.0.0 ] , [ oracle.rdbms.ic, 19.0.0.0.0 ] , [ oracle.rdbms.tg4ifmx, 19.0.0.0.0 ] , [ oracle.network.cman, 19.0.0.0.0 ] , [ oracle.has.deconfig, 19.0.0.0.0 ] , [ oracle.network.gsm, 19.0.0.0.0 ] , [ oracle.assistants.asm, 19.0.0.0.0 ] , [ oracle.wlm.dbwlm, 19.0.0.0.0 ] , [ oracle.rhp.crs, 19.0.0.0.0 ] , [ oracle.has.cvu, 19.0.0.0.0 ] , [ oracle.tfa, 19.0.0.0.0 ] , [ oracle.rdbms.tg4sybs, 19.0.0.0.0 ] , [ oracle.usm, 19.0.0.0.0 ] , [ oracle.ons.daemon, 19.0.0.0.0 ] , [ oracle.rdbms.tg4tera, 19.0.0.0.0 ] , [ oracle.options.olap, 19.0.0.0.0 ] , [ oracle.assistants.usm, 19.0.0.0.0 ] , [ oracle.rdbms.tg4db2, 19.0.0.0.0 ] , [ oracle.options.olap.awm, 19.0.0.0.0 ] , [ oracle.has.crs, 19.0.0.0.0 ]  not present in the Oracle Home or a higher version is found.

 

Patching component oracle.has.common.cvu, 19.0.0.0.0...

 

Patching component oracle.has.rsf, 19.0.0.0.0...

 

Patching component oracle.assistants.server, 19.0.0.0.0...

 

Patching component oracle.ons, 19.0.0.0.0...

 

Patching component oracle.rdbms.plsql, 19.0.0.0.0...

 

Patching component oracle.rdbms.util, 19.0.0.0.0...

 

Patching component oracle.sqlplus.ic, 19.0.0.0.0...

 

Patching component oracle.sdo.locator.jrf, 19.0.0.0.0...

 

Patching component oracle.perlint, 5.28.1.0.0...

 

Patching component oracle.swd.oui.core.min, 12.2.0.7.0...

 

Patching component oracle.rhp.common, 19.0.0.0.0...

 

Patching component oracle.sqlplus, 19.0.0.0.0...

 

Patching component oracle.dbjava.jdbc, 19.0.0.0.0...

 

Patching component oracle.network.listener, 19.0.0.0.0...

 

Patching component oracle.odbc.ic, 19.0.0.0.0...

 

Patching component oracle.rdbms.rman, 19.0.0.0.0...

 

Patching component oracle.dbjava.ucp, 19.0.0.0.0...

 

Patching component oracle.perlint.modules, 5.28.1.0.0...

 

Patching component oracle.precomp.common.core, 19.0.0.0.0...

 

Patching component oracle.oracore.rsf, 19.0.0.0.0...

 

Patching component oracle.ntoledb.odp_net_2, 19.0.0.0.0...

 

Patching component oracle.has.db, 19.0.0.0.0...

 

Patching component oracle.ntoramts, 19.0.0.0.0...

 

Patching component oracle.marvel, 19.0.0.0.0...

 

Patching component oracle.xdk.parser.java, 19.0.0.0.0...

 

Patching component oracle.network.client, 19.0.0.0.0...

 

Patching component oracle.blaslapack, 19.0.0.0.0...

 

Patching component oracle.tfa.db, 19.0.0.0.0...

 

Patching component oracle.ctx, 19.0.0.0.0...

 

Patching component oracle.rdbms.hsodbc, 19.0.0.0.0...

 

Patching component oracle.ldap.rsf, 19.0.0.0.0...

 

Patching component oracle.assistants.deconfig, 19.0.0.0.0...

 

Patching component oracle.sqlj.sqljruntime, 19.0.0.0.0...

 

Patching component oracle.ldap.owm, 19.0.0.0.0...

 

Patching component oracle.duma, 19.0.0.0.0...

 

Patching component oracle.precomp.lang, 19.0.0.0.0...

 

Patching component oracle.ntoledb, 19.0.0.0.0...

 

Patching component oracle.rdbms.rsf, 19.0.0.0.0...

 

Patching component oracle.rdbms.install.common, 19.0.0.0.0...

 

Patching component oracle.ldap.security.osdt, 19.0.0.0.0...

 

Patching component oracle.sdo, 19.0.0.0.0...

 

Patching component oracle.rdbms.rsf.ic, 19.0.0.0.0...

 

Patching component oracle.wwg.plsql, 19.0.0.0.0...

 

Patching component oracle.rdbms.lbac, 19.0.0.0.0...

 

Patching component oracle.oraolap, 19.0.0.0.0...

 

Patching component oracle.precomp.rsf, 19.0.0.0.0...

 

Patching component oracle.ntoledbolap, 19.0.0.0.0...

 

Patching component oracle.assistants.acf, 19.0.0.0.0...

 

Patching component oracle.jdk, 1.8.0.201.0...

 

Patching component oracle.javavm.server, 19.0.0.0.0...

 

Patching component oracle.precomp.common, 19.0.0.0.0...

 

Patching component oracle.network.rsf, 19.0.0.0.0...

 

Patching component oracle.ovm, 19.0.0.0.0...

 

Patching component oracle.install.deinstalltool, 19.0.0.0.0...

 

Patching component oracle.rdbms.oci, 19.0.0.0.0...

 

Patching component oracle.rsf, 19.0.0.0.0...

 

Patching component oracle.clrintg.ode_net_2, 19.0.0.0.0...

 

Patching component oracle.nlsrtl.rsf, 19.0.0.0.0...

 

Patching component oracle.xdk.server, 19.0.0.0.0...

 

Patching component oracle.rdbms.install.plugins, 19.0.0.0.0...

 

Patching component oracle.ctx.atg, 19.0.0.0.0...

 

Patching component oracle.javavm.client, 19.0.0.0.0...

 

Patching component oracle.oraolap.dbscripts, 19.0.0.0.0...

 

Patching component oracle.rdbms.deconfig, 19.0.0.0.0...

 

Patching component oracle.dbjava.ic, 19.0.0.0.0...

 

Patching component oracle.rdbms.dv, 19.0.0.0.0...

 

Patching component oracle.aspnet_2, 19.0.0.0.0...

 

Patching component oracle.ldap.client, 19.0.0.0.0...

 

Patching component oracle.usm.deconfig, 19.0.0.0.0...

 

Patching component oracle.dbdev, 19.0.0.0.0...

 

Patching component oracle.ons.ic, 19.0.0.0.0...

 

Patching component oracle.mgw.common, 19.0.0.0.0...

 

Patching component oracle.xdk, 19.0.0.0.0...

 

Patching component oracle.oracler.server, 19.0.0.0.0...

 

Patching component oracle.has.common, 19.0.0.0.0...

 

Patching component oracle.xdk.rsf, 19.0.0.0.0...

 

Patching component oracle.rdbms.dbscripts, 19.0.0.0.0...

 

Patching component oracle.rdbms.olap, 19.0.0.0.0...

 

Patching component oracle.rdbms, 19.0.0.0.0...

 

Patching component oracle.sdo.locator, 19.0.0.0.0...

 

Patching component oracle.rdbms.scheduler, 19.0.0.0.0...

 

Patching component oracle.xdk.xquery, 19.0.0.0.0...

 

Patching component oracle.nlsrtl.rsf.lbuilder, 19.0.0.0.0...

 

Patching component oracle.network.aso, 19.0.0.0.0...

Patch 38818049 successfully applied.

Sub-set patch [38111211] has become inactive due to the application of a super-set patch [38818049].

Please refer to Doc ID 2161861.1 for any possible further required actions.

Log file location: D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\opatch\opatch2026-06-04_06-04-26AM_1.log

 

OPatch succeeded.

 

Watch the output carefully. You should see success messages for each component. The full process typically takes 20–30 minutes.

Sample successful output as above.

 

Step 8: Start the Database and Run DataPatch

Start the database first:

Start oracle services from services windows

sqlplus / as sysdba

 SQL> startup

 

 

Then run DataPatch to register the patch inside the database dictionary:

C:\Software\oracle_patch_19.31\38818049>D:\oracle\product\19.3.0\dbhome_1\OPatch\datapatch -verbose

SQL Patching tool version 19.31.0.0.0 Production on Thu Jun  4 06:14:10 2026

Copyright (c) 2012, 2026, Oracle.  All rights reserved.

 

Log file for this invocation: D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\sqlpatch\sqlpatch_26776_2026_06_04_06_14_10\sqlpatch_invocation.log

 

Connecting to database...OK

Gathering database info...done

Bootstrapping registry and package to current versions...done

Determining current state...done

 

Current state of interim SQL patches:

  No interim patches found

 

Current state of release update SQL patches:

  Binary registry:

    19.31.0.0.0 Release_Update 260515000147: Installed

  SQL registry:

    Applied 19.29.0.0.0 Release_Update 251030030715 successfully on 12-NOV-25 11.51.37.390000 AM

 

Adding patches to installation queue and performing prereq checks...done

Installation queue:

  No interim patches need to be rolled back

  Patch 38818049 (Windows Database Bundle Patch : 19.31.0.0.260421(REL-APR260421) (38818049)):

    Apply from 19.29.0.0.0 Release_Update 251030030715 to 19.31.0.0.0 Release_Update 260515000147

  No interim patches need to be applied

 

Installing patches...

Patch installation complete.  Total patches installed: 1

 

Validating logfiles...done

Patch 38818049 apply: SUCCESS

  logfile: D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\sqlpatch\38818049\28605540/38818049_apply_ORCL_2026Jun04_06_31_42.log (no errors)

SQL Patching tool complete on Thu Jun  4 06:32:32 2026

 

This step is mandatory — without it the patch is applied at the binary level but not registered in the database.

Step 9: Verify the Patch



 

Step 10. Compile invalid objects

sqlplus / as sysdba

SQL>@?/rdbms/admin/utlrp.sql

SQL> exit

 

This concludes the database patching process on windows.

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


How to Patch Oracle Database to 19.31 on Windows: Step-by-Step Guide

  In this article, I'll walk you through the steps I used to patch an Oracle Database 19c environment from version 19.29 to 19.31 follow...