10.a Upgrade Oracle Database 12.1.0.3 to 19c on EBS R12.3

   

Complete Guide: Upgrading to Oracle Database 19c for E-Business Suite 12.1.3

Overview

This comprehensive guide documents the step-by-step process of upgrading an Oracle E-Business Suite (EBS) environment to Oracle Database 19c. The upgrade involves several critical phases including pre-upgrade checks, patch application, and preparation for the new database version.


1. Pre-Upgrade Verification and Preparation

1.1 Database Status Check

First, verify your current database is in READ WRITE mode:

sql
SYS@FBS > select name, open_mode from v$database;

NAME      OPEN_MODE
--------- --------------------
FBS       READ WRITE

1.2 Tablespace Management

Ensure sufficient tablespace space to avoid issues during the upgrade:

Check Data Files:

sql
select file_id, file_name, autoextensible from dba_data_files;

Check Temporary Files:

sql
select file_id, file_name, autoextensible from dba_temp_files;

Enable Autoextend for Data Files:

sql
select 'alter database datafile ' || file_id || ' autoextend on;' from dba_data_files;

Enable Autoextend for Temporary Files:

sql
select 'alter database tempfile ' || file_id || ' autoextend on;' from dba_temp_files;

Note: If your custom patch location is /labsoft/19cDB_Upgrade_EBS, ensure all patches are stored and unzipped in this directory.


1.3 Data Dictionary Health Check (hcheck.sql)

Run Oracle's hcheck.sql script to identify known data dictionary problems. This script is available in Oracle Document 136697.1.

Execute as SYS schema:

bash
[oracle@fbstest 19cDB_Upgrade_EBS]$ sqlplus '/as sysdba'

SQL*Plus: Release 12.1.0.2.0 Production on Sat Mar 12 14:07:11 2022

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SYS@FBS > spool hcheck_output.log
SYS@FBS > @hcheck.sql
PL/SQL procedure successfully completed.

Complete output is in trace file:
/u01/app/FBS/db/tech_st/12.1.0/admin/FBS_fbstest/diag/rdbms/fuat/FBS/trace/FBS_ora_4726_HCHECK.trc

Interpreting Health Check Results

StatusDescription
CRITICALHighest risk - requires urgent fix
FAILRequires resolution with priority
WARNGood to resolve
PASSNo problem identified

Example Warning and Resolution

In this execution, one warning was found:

text
StmtAuditOnCommit ... 1201000200 <= *All Rel* 04/10 14:16:09 WARN

HCKW-0013: option# in STMT_AUDIT_OPTION_MAP(ON COMMIT REFRESH) (Doc ID 1361021.1)

Fix the issue:

sql
SYS@FBS > update STMT_AUDIT_OPTION_MAP set option#=234 where name='ON COMMIT REFRESH';
1 row updated.

SYS@FBS > commit;
Commit complete.

Re-run the script to ensure all issues are resolved.


2. Apply Required EBS Patches

2.1 Verify Current AD/TXK Versions

Check your current AD (Applications DBA) and TXK (Oracle Applications Technology Stack) versions:

sql
col ABBREVIATION for a10
set lines 1000
col NAME for a50
col CODELEVEL for a20

SELECT ABBREVIATION, NAME, codelevel 
FROM apps.AD_TRACKABLE_ENTITIES 
WHERE abbreviation in ('txk', 'ad');

ABBREVIATI NAME                                               CODELEVEL
---------- -------------------------------------------------- --------------------
ad         Applications DBA                                            C.12
txk        Oracle Applications Technology Stack               C.12

Note: This environment is already on Delta 12 for both AD and TXK.


2.2 Required Patch List

Based on Oracle documentation, apply the following patches:

Patch NumberDescription
25452805Required patch
26052406Required patch
30433124Required patch
33346385Required patch
2652173619c interoperability patch for Release 12.2
31088182Required patch
31349591Required patch
31800803Required patch
28732161Apply on Release 12.2.6 or later versions

Always check the latest Oracle documentation for the most current patch list.


2.3 Verify Applied Patches

Check which patches are already installed in your environment:

sql
SELECT bug_number, creation_date 
FROM ad_bugs 
WHERE bug_number IN (25452805, 26052406, 30433124, 33346385, 31088182, 
                     26521736, 31349591, 31800803, 28732161);

Sample Output:

text
BUG_NUMBER		       CREATION_DATE
------------------------------ ------------------
31800803		       15-DEC-24
33346385		       15-DEC-24
31349591		       15-DEC-24
25452805		       15-DEC-24
31088182		       15-DEC-24
30433124		       15-DEC-24
26052406		       15-DEC-24

2.4 Apply Patches Using ADOP

Source the EBS environment:

bash
[applmgr@fbstest ~]$ . EBSapps.env run

  E-Business Suite Environment Information
  ----------------------------------------
  RUN File System           : /u01/app/FBS/fs2/EBSapps/appl
  PATCH File System         : /u01/app/FBS/fs1/EBSapps/appl
  Non-Editioned File System : /u01/app/FBS/fs_ne

  DB Host: fbstest.finsys.co.ke  Service/SID: FBS

  Sourcing the RUN File System ...

Execute the ADOP command:

bash
adop phase=prepare,apply,finalize,cutover,cleanup mtrestart=no \
patchtop=/u01/app/FBS/fs_ne/EBSapps/patch patches=26052406,28732161

⚠️ Important: Copy the command into a text editor and ensure it's on a single line before executing.


Sample Execution Output:

text
Enter the APPS password:
Enter the EBS_SYSTEM password:
Enter the WLSADMIN password:

Validating credentials.

Warning: WebLogic Admin Server is not running.
Trying to start Admin Server.

===========================================================================
ADOP (C.Delta.16)
Session ID: 13
Node: fbsebs
Phase: prepare,apply,finalize,cutover,cleanup
Log: /u01/app/FBS/fs_ne/EBSapps/log/adop/13/20241220_085840/adop.log
===========================================================================

Applying patch 26052406.
    [WARNING]   Skipping patch 26052406 as it has already been applied.

Applying patch 28732161.
    [WARNING]   Skipping patch 28732161 as it has already been applied.

Successful completion:

text
The apply phase completed successfully.
The finalize phase completed successfully.
The cutover phase completed successfully.
The cleanup phase completed successfully.

adop exiting with status = 0 (Success)

2.5 Post-Patch Steps (Patch 31800803)

On Application RUN File System:

Run AutoConfig:

bash
[applmgr@fbsebs ~]$ . /u01/app/FBS/EBSapps.env run

[applmgr@fbsebs ~]$ adautocfg.sh
Enter the APPS user password:

AutoConfig is configuring the Applications environment...
AutoConfig completed successfully.

Generate appsutil.zip:

bash
[applmgr@fbsebs ~]$ $AD_TOP/bin/admkappsutil.pl

Starting the generation of appsutil.zip
Log file located at /u01/app/FBS/fs2/inst/apps/FBS_fbsebs/admin/log/MakeAppsUtil_12200927.log
output located at /u01/app/FBS/fs2/inst/apps/FBS_fbsebs/admin/out/appsutil.zip
MakeAppsUtil completed successfully.

3. Database Tier Preparation for 19c

3.1 Copy appsutil.zip to Database Tier

As the ORACLE user:

bash
[oracle@fbsebs 12.1.0]$ scp -r /u01/app/FBS/fs2/inst/apps/FBS_fbsebs/admin/out/appsutil.zip .
[oracle@fbsebs 12.1.0]$ . FBS_fbsebs.env
[oracle@fbsebs 12.1.0]$ unzip -o appsutil.zip

3.2 Run Database Tier AutoConfig

Navigate to the appsutil scripts directory and run AutoConfig:

bash
[oracle@fbsebs FBS_fbsebs]$ pwd
/u01/app/FBS/db/tech_st/12.1.0/appsutil/scripts/FBS_fbsebs

[oracle@fbsebs FBS_fbsebs]$ ./adautocfg.sh
Enter the APPS user password:

AutoConfig is configuring the Database environment...
AutoConfig completed successfully.

✅ Ensure AutoConfig completes successfully.


3.3 Verify Security Parameter

Check that SEC_CASE_SENSITIVE_LOGON is set to FALSE:

sql
SQL> show parameter SEC_CASE_SENSITIVE_LOGON;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon	     boolean	 FALSE

3.4 Create Initialization Parameter Setup Files

Create the following files:

  • $ORACLE_HOME/dbs/<ORACLE_SID>_initparam.sql

  • $ORACLE_HOME/dbs/<ORACLE_SID>_datatop.txt

Commands to generate them:

bash
$ cd $ORACLE_HOME/appsutil
$ . ./txkSetCfgCDB.env dboraclehome=<full path of ORACLE_HOME>
$ export ORACLE_SID=<ORACLE_SID>
$ cd $ORACLE_HOME/appsutil/bin
$ perl txkOnPremPrePDBCreationTasks.pl -dboraclehome=<ORACLE_HOME> \
  -outdir=<ORACLE_HOME>/appsutil/log -appsuser=<apps user> \
  -dbsid=<ORACLE_SID> -skipdbshutdown=yes

Example Execution:

bash
[oracle@fbsebs FBS_fbsebs]$ echo $ORACLE_HOME
/u01/app/FBS/db/tech_st/12.1.0

[oracle@fbsebs FBS_fbsebs]$ cd $ORACLE_HOME/appsutil
[oracle@fbsebs appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME

[oracle@fbsebs appsutil]$ export ORACLE_SID=FBS
[oracle@fbsebs appsutil]$ cd $ORACLE_HOME/appsutil/bin

[oracle@fbsebs bin]$ perl txkOnPremPrePDBCreationTasks.pl -dboraclehome=$ORACLE_HOME \
  -outdir=$ORACLE_HOME/appsutil/log -appsuser=apps -dbsid=FBS -skipdbshutdown=yes

Enter the APPS Password: 

Successful output:

text
PDB Descriptor XML /u01/app/FBS/db/tech_st/12.1.0/dbs/FBS_PDBDesc.xml created successfully.

Verify created files:

bash
[oracle@fbsebs dbs]$ ls -lst
total 96
32 -rw-r--r--  1 oracle oinstall 31475 Dec 20 09:38 FBS_PDBDesc.xml
 4 -rw-r--r--  1 oracle oinstall   426 Dec 20 09:38 FBS_datatop.txt
 4 -rw-r--r--  1 oracle oinstall  2925 Dec 20 09:38 FBS_initparam.sql

4. Install Oracle Database 19c Software

4.1 Create Directory and Unzip Software

bash
[oracle@fbsebs 19c]$ mkdir -p /u01/app/FBS/db/tech_st/19c
[oracle@fbsebs 19c]$ unzip -d /u01/app/FBS/db/tech_st/19c LINUX.X64_193000_db_home.zip

4.2 Set Environment and Run Installer

bash
[oracle@fbsebs 19c]$ export _JAVA_OPTIONS='-Dsun.java2d.xrender=false'
[oracle@fbsebs 19c]$ export CV_ASSUME_DISTID=OEL7.9
[oracle@fbsebs 19c]$ ./runInstaller

















1. Creating the 19c Environment File

After installing the 19c Oracle Home, create an environment file to simplify configuration management. This file sets all necessary environment variables for your 19c database instance.

Environment File Content

Create a file named 19cdb.env with the following content:

bash
export ORACLE_HOME=/u01/app/FBS/db/tech_st/19c
export ORACLE_SID=fbscdb
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/perl/bin
export ORACLE_BASE=/u01/app/FBS/db
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PERL5LIB=$ORACLE_HOME/perl/lib/5.38.2:$ORACLE_HOME/perl/lib/site_perl/5.38.2
export ORA_NLS10=/u01/app/FBS/db/tech_st/19c/nls/data/9idata

Environment Variable Breakdown

VariablePurposeValue
ORACLE_HOMEOracle software installation directory/u01/app/FBS/db/tech_st/19c
ORACLE_SIDDatabase instance namefbscdb
PATHExecutable search pathIncludes $ORACLE_HOME/bin, OPatch, and Perl binaries
ORACLE_BASEBase directory for Oracle files/u01/app/FBS/db
LD_LIBRARY_PATHShared library search pathIncludes $ORACLE_HOME/lib
PERL5LIBPerl library directoriesCustom Perl libraries for 19c
ORA_NLS10NLS data directory path$ORACLE_HOME/nls/data/9idata

2. Applying Database Patches

Patches are essential to maintain database stability and security. This section covers applying the latest database patches to upgrade from version 19.3 to 19.27.

Required Patches

Patch IDDescription
37642901Database Release Update 19.27.0.0.0
37499406OJVM Release Update 19.27.0.0.0
31424070Additional required patch

Pre-Application Steps

  1. Source the environment file:

    bash
    [oracle@fbsebs 19c]$ . 19cdb.env
  2. Verify current version:

    bash
    [oracle@fbsebs 19c]$ sqlplus / as sysdba
    SQL*Plus: Release 19.0.0.0.0 - Production on Fri Dec 20 09:44:00 2024
    Version 19.24.0.0.0
  3. Update OPatch utility (if required):

    bash
    [oracle@fbsebs dba]$ cp p6880880_190000_Linux-x86-64.zip $ORACLE_HOME
    [oracle@fbsebs dba]$ cd $ORACLE_HOME/
    [oracle@fbsebs 19c]$ mv OPatch OPatch_old
    [oracle@fbsebs 19c]$ unzip p6880880_190000_Linux-x86-64.zip

Patch Application Process

Apply OJVM Release Update:

bash
cd 37499406
opatch apply

Apply Database Release Update:

bash
cd 37642901
opatch apply

Post-Patch SQL Application

Run datapatch to apply SQL patches to the database:

bash
[oracle@ebstest OPatch]$ ./datapatch

Sample Output (Verification):

text
SQL Patching tool version 19.28.0.0.0 Production on Wed Sep 17 10:28:46 2025

Current state of release update SQL patches:
  Binary registry:
    19.28.0.0.0 Release_Update 250705030417: Installed

Installing patches...
Patch installation complete. Total patches installed: 9

SQL Patching tool complete on Wed Sep 17 10:55:18 2025

3. Setting Up NLS Data Directory

Create the 9idata directory for Oracle National Language Support (NLS) data.

Steps to Create 9idata Directory

  1. Source the 19c environment:

    bash
    [oracle@fbsebs dba]$ . 19cdb.env
  2. Navigate to Oracle Home and create NLS directory:

    bash
    [oracle@fbsebs dba]$ cd $ORACLE_HOME
    [oracle@fbsebs 19c]$ unset PERL5LIB
    [oracle@fbsebs 19c]$ perl $ORACLE_HOME/nls/data/old/cr9idata.pl
  3. Expected Output:

    text
    Directory /u01/app/FBS/db/tech_st/19c/nls/data/9idata already exist. Overwriting...
    Copying files to /u01/app/FBS/db/tech_st/19c/nls/data/9idata...
    Copy finished.
    Please reset environment variable ORA_NLS10 to /u01/app/FBS/db/tech_st/19c/nls/data/9idata!
  4. Verify environment file includes ORA_NLS10:

    bash
    [oracle@fbsebs 19c]$ cat 19cdb.env
    # Contains: export ORA_NLS10=/u01/app/FBS/db/tech_st/19c/nls/data/9idata

4. Copying appsutil.zip from Application Tier

The appsutil.zip file contains essential utilities needed for database configuration.

Generate appsutil.zip on Application Tier

As the application tier owner (applmgr), run:

bash
[applmgr@fbsebs ~]$ perl $AD_TOP/bin/admkappsutil.pl

Output:

text
Starting the generation of appsutil.zip
Log file located at /u01/app/FBS/fs2/inst/apps/FBS_fbsebs/admin/log/MakeAppsUtil_12200949.log
output located at /u01/app/FBS/fs2/inst/apps/FBS_fbsebs/admin/out/appsutil.zip
MakeAppsUtil completed successfully.

Transfer and Extract appsutil.zip

  1. Copy to 19c Oracle Home:

    bash
    [oracle@fbsebs 19c]$ cd $ORACLE_HOME
    [oracle@fbsebs 19c]$ scp -r /u01/app/FBS/fs2/inst/apps/FBS_fbsebs/admin/out/appsutil.zip .
  2. Unzip the file:

    bash
    [oracle@fbsebs 19c]$ unzip -o appsutil.zip

The appsutil.zip extraction creates the following directory structure:

  • appsutil/bin/ - Utility scripts

  • appsutil/perl/ - Perl modules

  • appsutil/template/ - Configuration templates

  • appsutil/java/ - Java libraries

  • appsutil/sql/ - SQL scripts

  • appsutil/html/ - HTML resources


5. Installing JRE 8

Install Java Runtime Environment (JRE) 8 in the appsutil directory for Oracle utilities.

Installation Steps

  1. Source the 19c environment:

    bash
    [oracle@fbsebs 19c]$ . 19cdb.env
  2. Copy JRE to appsutil directory:

    bash
    [oracle@fbsebs 19c]$ cd $ORACLE_HOME/appsutil
    [oracle@fbsebs appsutil]$ cp -r $ORACLE_HOME/jdk/jre .
    [oracle@fbsebs appsutil]$ cp $ORACLE_HOME/jlib/orai18n.jar $ORACLE_HOME/appsutil/jre/lib/ext

Verification

After installation, verify the JRE installation:

bash
[oracle@fbsebs appsutil]$ ls -la jre/
# Should display the JRE directory structure

6. Creating the Container Database (CDB)

Use Database Configuration Assistant (DBCA) to create the Container Database (CDB) for Oracle E-Business Suite.

Pre-Creation Steps

  1. Source the 19c environment:

    bash
    [oracle@fbsebs 19c]$ . 19cdb.env
  2. Navigate to bin directory:

    bash
    [oracle@fbsebs 19c]$ cd $ORACLE_HOME/bin
  3. Set environment variables:

    bash
    [oracle@fbsebs bin]$ export _JAVA_OPTIONS='-Dsun.java2d.xrender=false'
    [oracle@fbsebs bin]$ export CV_ASSUME_DISTID=OEL7.9
  4. Launch DBCA:

    bash
    [oracle@fbsebs bin]$ ./dbca

DBCA Configuration Options

StepSelection
Creation TypeCreate Database
Configuration TypeAdvanced Configuration
Database TypeGeneral Purpose or Transaction Processing
Database IdentificationContainer Database (CDB) without PDB
Global Database Namefbscdb
SIDfbscdb (maximum 8 characters)
PDB OptionCheck "Use Local Undo tablespace for PDBs"
Network ConfigurationDo NOT create a listener
SGA Size2 GB
PGA Size1 GB
Character SetSame as source database
National Character SetSame as source database
Redo Log SizeSame as source database

 








In case of ASM filesystem the storage will be ASM.










 














CDB database should be running now.

[oracle@fbsebs bin]$ ps -ef |grep -i pmon

oracle      3432    2611  0 08:57 ?        00:00:00 ora_pmon_FBS

oracle     37215    2611  0 11:15 ?        00:00:00 ora_pmon_cdbfbs

oracle     37673   30161  0 11:17 pts/2    00:00:00 grep --color=auto -i pmon

10.14 Running Datapatch on the CDB

Before proceeding with the database upgrade, apply necessary patches to the Container Database (CDB) using the datapatch utility.

Prerequisites

  • Source the 19c environment

  • Ensure the Oracle SID is properly set

Commands

bash
# Source the 19c environment
[oracle@fbsebs 19c]$ . 19cdb.env

# Set the Oracle SID
[oracle@fbsebs 19c]$ export ORACLE_SID=cdbfbs

# Run datapatch
[oracle@fbsebs 19c]$ $ORACLE_HOME/OPatch/datapatch

Expected Output

The datapatch utility will display:

  • Version information (e.g., 19.24.0.0.0)

  • Current state of interim SQL patches

  • Patch application status for CDBROOTandPDBSEED

Key Observations:

  • Interim patch 36414915 (OJVM Release Update) should show "Applied successfully"

  • Release Update 19.24.0.0.0 should be installed and applied

  • No new patches should be required if the system is up-to-date

Important Notes

  • Datapatch only applies SQL fixes to PDBs in an open state

  • Closed PDBs will not receive patches during this operation

  • The process includes bootstrapping registry and package updates


10.15 Creating the CDB MGDSYS Schema

The MGDSYS schema is required for Oracle Multitenant functionality.

Steps

bash
# Source the 19c environment
[oracle@fbsebs 19c]$ export ORACLE_SID=cdbfbs

# Connect as SYSDBA
[oracle@fbsebs 19c]$ sqlplus / as sysdba

# Run the schema creation script
SQL> @$ORACLE_HOME/rdbms/admin/catmgd.sql

Expected Outcome

  • The MGDSYS schema is created in the CDB

  • This schema supports Oracle Multitenant administration


10.16 Generating CDB TNS Files

Create the required TNS files for database connectivity using the provided Perl script.

Prerequisites

  • Source the 19c environment

  • Navigate to the appsutil directory

Command Execution

bash
# Navigate to appsutil directory
[oracle@fbsebs 19c]$ cd $ORACLE_HOME/appsutil

# Set the CDB configuration environment
[oracle@fbsebs appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME

# Navigate to the bin directory
[oracle@fbsebs appsutil]$ cd $ORACLE_HOME/appsutil/bin

# Generate TNS files
[oracle@fbsebs bin]$ perl txkGenCDBTnsAdmin.pl \
  -dboraclehome=$ORACLE_HOME \
  -cdbname=cdbfbs \
  -cdbsid=cdbfbs \
  -dbport=1531 \
  -outdir=$ORACLE_HOME/appsutil/log

Script Parameters

ParameterDescriptionExample
-dboraclehomeFull path of ORACLE_HOME/u01/app/FBS/db/tech_st/19c
-cdbnameCDB namecdbfbs
-cdbsidCDB SIDcdbfbs
-dbportDatabase listener port1531
-outdirOutput directory for logs$ORACLE_HOME/appsutil/log

Generated Files

The script creates the following files in the network/admin directory:

  • listener.ora - Listener configuration

  • tnsnames.ora - TNS names resolution

  • sqlnet.ora - SQL*Net configuration


10.17 Shutting Down the CDB

Properly shut down the CDB before proceeding with the upgrade.

Commands

bash
# Connect as SYSDBA
[oracle@fbsebs bin]$ sqlplus / as sysdba

# Shut down the database immediately
SQL> shu immediate

Expected Output

text
Database closed.
Database dismounted.
ORACLE instance shut down.

10.18 Application Tier Operations

Complete the patching cycle on the application tier to clean up editions created by previous ADOP patching cycles.

ADOP Phases

PhaseCommandDurationPurpose
Prepareadop phase=prepareVariesPrepare the patching cycle
Actualize Alladop phase=actualize_all~13 hoursApply changes to the file system
Finalizeadop phase=finalize finalize_mode=fullVariesComplete the patching cycle
Cutoveradop phase=cutover mtrestart=noVariesSwitch to the new run file system
Cleanupadop phase=cleanup cleanup_mode=full~18 hoursClean up old editions

Important Notes

  • Applications will be unavailable during this process

  • These maintenance operations take significantly longer than typical online patching cycles

  • Perform these steps when no immediate patching cycles are scheduled


10.19 Configuring UTL_FILE_DIR

Oracle Database 19c has deprecated the UTL_FILE_DIR initialization parameter. EBS provides supplemental views (apps.vparameterandapps.vparameter2) to maintain compatibility.

Two-Step Process

Step 1: Retrieve Existing UTL_FILE_DIR Values

bash
# Source the 12c environment
[applmgr@fbsebs ~]$ . /u01/app/FBS/db/tech_st/12.1.0/FBS_fbsebs.env

# Run the script in getUtlFileDir mode
[oracle@fbsebs appsutil]$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \
  -contextfile=/u01/app/FBS/db/tech_st/12.1.0/appsutil/FBS_fbsebs.xml \
  -oraclehome=/u01/app/FBS/db/tech_st/12.1.0 \
  -outdir=/tmp \
  -upgradedhome=/u01/app/FBS/db/tech_st/19c \
  -mode=getUtlFileDir \
  -servicetype=onpremise

Path Modifications

  • On-premises: /usr/tmp → <19c ORACLE_BASE>/temp/<PDB_NAME>

  • Cloud: /usr/tmp → <19c ORACLE_HOME>/temp/<PDB_NAME>

  • Old Oracle Home paths are replaced with the 19c Oracle Home

Generated File

The script creates FBS_utlfiledir.txt in the dbs directory with content similar to:

text
/u01/app/FBS/db/tech_st/temp/FBS
/u01/app/FBS/db/tech_st/temp/FBS
/u01/app/FBS/db/tech_st/19c/appsutil/outbound/FBS_fbsebs
/u01/app/FBS/db/tech_st/temp/FBS

Step 2: Create Required Directories

bash
# Create the required directories
[oracle@fbsebs appsutil]$ mkdir -p /u01/app/FBS/db/tech_st/19c/appsutil/outbound/FBS_fbsebs
[oracle@fbsebs appsutil]$ mkdir -p /u01/app/FBS/db/tech_st/temp/FBS

Step 3: Store Values in Database

bash
# Run the script in setUtlFileDir mode
[oracle@fbsebs appsutil]$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \
  -contextfile=/u01/app/FBS/db/tech_st/12.1.0/appsutil/FBS_fbsebs.xml \
  -oraclehome=/u01/app/FBS/db/tech_st/12.1.0 \
  -outdir=/tmp \
  -upgradedhome=/u01/app/FBS/db/tech_st/19c \
  -mode=setUtlFileDir \
  -servicetype=onpremise

Directory Object Naming Convention

  • First object: EBS_DB_DIR_UTIL

  • Subsequent objects: EBS_UTL_FILE_DIR_<random_number>

Important Constraints

  • Maximum combined length: 4000 characters

  • No duplicate directory objects are created

  • Symbolic links must be replaced with physical paths

  • Paths must exist with proper permissions


10.20 Shutting Down Application Tier Server Processes

Shut down all application tier server processes. This step may already be completed from previous ADOP cycle operations.


10.21 Dropping SYS.ENABLED$INDEXES

Check for and remove the SYS.ENABLED$INDEXES table if it exists.

Command

bash
[oracle@fbsebs appsutil]$ sqlplus / as sysdba

SQL> drop table sys.enabled$indexes;

Expected Response

  • If the table exists: Table dropped.

  • If the table does not exist: ORA-00942: table or view does not exist (This is acceptable)


10.22 Removing the MGDSYS Schema (Conditional)

Note: This step is only required for upgrades from versions prior to Oracle 12c. For 12c upgrades, this step can be skipped.


10.23 Shutting Down the Database Listener

Stop the existing database listener and clear the LOCAL_LISTENER parameter.

Stop the Listener

bash
# Source the 12c environment
[oracle@fbsebs appsutil]$ lsnrctl stop FBS

Clear LOCAL_LISTENER

sql
SQL> alter system set local_listener='';

10.24 Database Pre-Upgrade Steps

Critical Pre-Upgrade Checks

1. Verify oratab Entry

Ensure the database to be upgraded has an entry in /etc/oratab.

2. Modify Initialization Parameters

sql
-- Comment out deprecated parameters
-- Set OLAP page pool size to 0
SQL> alter system set olap_page_pool_size=0 scope=spfile;

-- Set PGA_AGGREGATE_TARGET to at least 10G for 11g sources
-- Set SGA_TARGET to at least 2G

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

3. Restart Database

sql
SQL> shutdown immediate;
SQL> startup;

Running the Pre-Upgrade Tool

Command

bash
[oracle@fbsebs appsutil]$ $ORACLE_HOME/jdk/bin/java -jar /u01/app/FBS/db/tech_st/19c/rdbms/admin/preupgrade.jar TERMINAL TEXT

Output Summary

Database Information:

  • Current Version: 12.1.0.2.0

  • Target Version: 19.0.0.0.0

  • Timezone File: 18 → 32

Component Status:

ComponentStatus
Oracle ServerVALID
JServer JAVA Virtual MachineVALID
Oracle TextVALID
Oracle XML DatabaseVALID
Oracle SpatialVALID

Required Actions Identified:

  1. Remove obsolete parameters (optimizer_adaptive_features, utl_file_dir)

  2. Address 158 invalid objects (primarily in APPS schema)

  3. Remove OLAP Catalog (AMD)

  4. Address duplicate objects in SYS/SYSTEM

  5. Resolve password version issues (10G password versions)

  6. Remove deprecated parameters (sec_case_sensitive_logon)

Recommended Actions:

  1. Gather dictionary statistics

  2. Refresh stale materialized views

  3. Remove underscore parameters

  4. Remove unnecessary events

Generated Fixup Scripts

The pre-upgrade tool generates two scripts:

ScriptPurposeExecution Time
preupgrade_fixups.sqlExecute before upgradeBefore upgrade
postupgrade_fixups.sqlExecute after upgradeAfter upgrade

Executing Pre-Upgrade Fixups

sql
SQL> @/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/preupgrade_fixups.sql

Verification After Fixups

Run the fixup script and verify that issues marked as "Remedied" show "YES". Issues marked "NO" require manual intervention.

Outstanding Manual Actions Identified

IssueRecommended Action
Obsolete parametersRemove from spfile
Invalid objectsRun utlrp.sql to recompile
OLAP Catalog (AMD)Run catnoamd.sql
Password versionsUpdate passwords or set SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
Case-insensitive authenticationRemove SEC_CASE_SENSITIVE_LOGON=FALSE
Stale materialized viewsRefresh using dbms_mview.refresh()

10.25 Upgrading the Database Instance

Pre-Upgrade Checklist

  • □

    12c database entry exists in /etc/oratab

  • □

    All pre-upgrade fixups have been applied

  • □

    Database has been backed up

  • □

    Listener is stopped

  • □

    Critical initialization parameters are set

Launch DBUA

bash
# Source the 19c environment
[oracle@fbsebs bin]$ $ORACLE_HOME/bin/dbua -keepEvents























1.1 Post-Upgrade Script Execution

After the initial database upgrade completes, run the post-upgrade fixup script generated during the pre-upgrade steps:

bash
# Source the 19c environment
[oracle@fbsebs 19c]$ . 19cdb.env
[oracle@fbsebs 19c]$ export ORACLE_SID=FBS
[oracle@fbsebs 19c]$ sqlplus / as sysdba

SQL> @/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/postupgrade_fixups.sql

1.2 Post-Upgrade Tasks

Perform the following miscellaneous tasks after the upgrade:

Security Parameter Configuration

If SEC_CASE_SENSITIVE_LOGON was previously set to FALSE, re-enable it:

sql
-- Create spfile if it doesn't exist
SQL> alter system set SEC_CASE_SENSITIVE_LOGON=false;
SQL> alter trigger SYSTEM.EBS_LOGON compile;
SQL> alter system set compatible='19.0.0' scope=spfile;

Database Restart

sql
SQL> shutdown immediate
SQL> startup

Verify the compatibility setting:

sql
SQL> show parameter compatible

Note: The "ORA-32004: obsolete or deprecated parameter(s) specified" warning appears because the CONNECTION_BROKERS parameter will be removed later during the PDB migration.

1.3 Run DataPatch

Apply SQL patches to the database:

bash
[oracle@fbsebs 19c]$ . 19cdb.env
[oracle@fbsebs 19c]$ export ORACLE_SID=FBS
[oracle@fbsebs 19c]$ $ORACLE_HOME/OPatch/datapatch

Output confirms:

  • Interim patch 36414915 (OJVM Release Update 19.24.0.0.240716) is installed

  • Release update 19.24.0.0.0 is applied

  • No additional patches are required

1.4 Run XDB Schema Migration Scripts

sql
SQL> @?/rdbms/admin/dbmsxdbschmig.sql
SQL> @?/rdbms/admin/prvtxdbschmig.plb

1.5 Run AD Grants

Copy adgrants.sql from $APPL_TOP/admin to the database tier:

bash
[oracle@fbsebs admin]$ sqlplus / as sysdba
SQL> @adgrants.sql apps

Important: ORA-00942 errors can be ignored as they occur when attempting to grant privileges on non-existent objects. The grants are recorded in the ad_zd_logs table.

1.6 Grant Create Procedure Privilege

Run the script from the administration server:

bash
[oracle@fbsebs admin]$ sqlplus apps/apps @adctxprv.sql manager CTXSYS

1.7 Compile Invalid Objects

Connect as SYSDBA and compile any invalid objects:

bash
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

Verify the number of invalid objects:

sql
SQL> select count(*) from dba_objects where status='INVALID';

Result: 17 invalid objects found.

1.8 Grant DataStore Access

Grant TEXT DATASTORE access to PUBLIC:

sql
SQL> grant text datastore access to public;

1.9 Gather Statistics for SYS Schema

Run in restricted mode to gather statistics:

sql
SQL> alter system enable restricted session;
SQL> @adstats.sql
SQL> alter system disable restricted session;

1.10 Create MGDSYS Schema (Conditional)

If upgrading from a version prior to Oracle 12c, create the new MGDSYS schema:

bash
SQL> @?/rdbms/admin/catmgd.sql

Note: This step was not required for this upgrade.


2. Migration to Multitenant Architecture (CDB/PDB)

2.1 Prerequisites

Critical Considerations:

  • Ensure sufficient space in TEMP, SYSAUX, and SYSTEM tablespaces

  • The non-CDB database (FBS) must be kept down during migration

  • The non-CDB will be converted to a PDB

2.2 Create PDB Descriptor

bash
# Navigate to appsutil directory
[oracle@fbstest tmp]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ . ./txkSetCfgCDB.env dboraclehome=/u01/app/FBS/db/tech_st/19c
[oracle@fbstest appsutil]$ export ORACLE_SID=FBS
[oracle@fbstest appsutil]$ cd $ORACLE_HOME/appsutil/bin

# Run the pre-PDB creation tasks script
[oracle@fbsebs bin]$ perl txkOnPremPrePDBCreationTasks.pl \
  -dboraclehome=/u01/app/FBS/db/tech_st/19c \
  -outdir=/u01/app/FBS/db/tech_st/19c/appsutil/log \
  -appsuser=apps \
  -dbsid=FBS

Script Execution Summary:

  • Validated Oracle Home and output directory

  • Shut down the non-CDB database

  • Started the database in MOUNT mode

  • Created PDB descriptor XML: /u01/app/FBS/db/tech_st/19c/dbs/FBS_PDBDesc.xml

  • Shut down the database again

Important: Do NOT start the database until data files are migrated, as doing so would invalidate the PDB descriptor XML.

2.3 Update CDB Initialization Parameters

Copy parameter files to the 19c home:

bash
[oracle@fbstest dbs]$ cp FBS_initparam.sql FBS_datatop.txt /u01/app/FBS/db/tech_st/19c/dbs/

Note: Remove the CONNECTION_BROKERS parameter line from FBS_initparam.sql as it's deprecated.

Update the CDB parameters:

bash
[oracle@fbsebs appsutil]$ cd $ORACLE_HOME/appsutil
[oracle@fbsebs appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
[oracle@fbsebs appsutil]$ export ORACLE_SID=cdbfbs
[oracle@fbsebs appsutil]$ sqlplus / as sysdba

SQL> startup nomount;
SQL> @$ORACLE_HOME/dbs/FBS_initparam.sql
SQL> alter system set LOCAL_LISTENER="fbsebs:1531" scope=both;
SQL> shutdown immediate;
SQL> startup;

Verify the CDB is open:

sql
SQL> select name,open_mode from v$database;

Result:

text
NAME      OPEN_MODE
--------- --------------------
CDBFBS    READ WRITE

2.4 Check for PDB Violations

Check compatibility before creating the PDB:

bash
[oracle@fbsebs appsutil]$ cd $ORACLE_HOME/appsutil
[oracle@fbsebs appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
[oracle@fbsebs appsutil]$ export ORACLE_SID=cdbfbs
[oracle@fbsebs appsutil]$ cd $ORACLE_HOME/appsutil/bin

[oracle@fbsebs bin]$ perl txkChkPDBCompatability.pl \
  -dboraclehome=$ORACLE_HOME \
  -outdir=$ORACLE_HOME/appsutil/log \
  -cdbsid=cdbfbs \
  -pdbsid=FBS \
  -servicetype=onpremise

Violations Reported:
The script reported violations that must be resolved before proceeding. Check the log file:

text
/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Mon_Dec_23_09_24_45_2024/check_pdb_plugin_violations.out

Important Guidelines:

  • Errors: All errors except SQL PATCH ERRORS must be resolved

  • Warnings: All warnings except CHARACTER SET WARNINGS can be ignored

  • Review and set INIT PARAMETERs to match EBS requirements

2.5 Create the PDB

After resolving all violations, create the PDB:

bash
[oracle@fbsebs bin]$ cd $ORACLE_HOME/appsutil
[oracle@fbsebs appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
[oracle@fbsebs appsutil]$ cd $ORACLE_HOME/appsutil/bin

[oracle@fbsebs bin]$ perl txkCreatePDB.pl \
  -dboraclehome=$ORACLE_HOME \
  -outdir=$ORACLE_HOME/appsutil/log \
  -cdbsid=cdbfbs \
  -pdbsid=FBS \
  -dbuniquename=cdbfbs \
  -servicetype=onpremise

Datafile Location Configuration:

text
Non-CDB on ASM  : +EBS_DATA
PDB on ASM      : +EBS_DATA
DATA_TOP_1      : +EBS_DATA/FBS/DATAFILE
DATA_TOP_2      : +EBS_DATA/FBS/TEMPFILE

2.6 Run Post-PDB Creation Tasks

Update the PDB configuration:

bash
[oracle@fbsebs appsutil]$ cd $ORACLE_HOME/appsutil
[oracle@fbsebs appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME

[oracle@fbsebs appsutil]$ perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl \
  -dboraclehome=$ORACLE_HOME \
  -outdir=$ORACLE_HOME/appsutil/log \
  -cdbsid=cdbfbs \
  -pdbsid=FBS \
  -appsuser=apps \
  -dbport=1531 \
  -servicetype=onpremise

Provide credentials:

  • APPS Password

  • CDB SYSTEM Password (must meet complexity requirements with at least 1 special character)

Verify the PDB:

sql
SQL> show pdbs

    CON_ID CON_NAME     OPEN MODE  RESTRICTED
---------- ------------ ---------- ----------
         2 PDB$SEED     READ ONLY  NO
         3 FBS          READ WRITE NO

2.7 Modify Initialization Parameters

Update database parameters according to EBS requirements:

sql
[oracle@fbsebs dbs]$ export ORACLE_SID=fbscdb
[oracle@fbsebs dbs]$ sqlplus '/as sysdba'

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

3. Application Tier Configuration

3.1 Update TNS Names Configuration

Add the CDB entry to $TNS_ADMIN/tnsnames.ora:

text
fbscdb =
 (DESCRIPTION =
  (ADDRESS = (PROTOCOL=tcp)(HOST=fbstest.finsys.co.ke)(PORT=1522))
  (CONNECT_DATA = (SERVICE_NAME=ebs_FBS)(INSTANCE_NAME=fbscdb))
 )

3.2 Update Context File Variables

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

Variable NameValue
s_dbportNew database port
s_apps_jdbc_connect_descriptorNULL
s_applptmpDirectory (not /usr/tmp) defined in UTL_FILE_DIR

3.3 Configure UTL_FILE_DIR

Add the UTL_FILE_DIR directory using the configuration script:

bash
[oracle@fbsebs appsutil]$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \
  -contextfile=$ORACLE_HOME/appsutil/FBS_fbsebs.xml \
  -oraclehome=/u01/app/oracle/product/19c \
  -outdir=/u01/app/oracle/product/19c/appsutil/log \
  -mode=addUtlFileDir

3.4 Run AutoConfig

Run AutoConfig on both patch and run APPL_TOPs:

bash
$INST_TOP/admin/scripts/adautocfg.sh

Note: Ignore errors when running AutoConfig on the patch file system APPL_TOP.

3.5 Recreate Custom Database Links (Conditional)

Check for existing database links:

sql
SQL> select db_link from all_db_links;

Drop and recreate custom self-referential database links:

sql
SQL> drop database link <custom_database_link>;
SQL> create database link <custom_database_link> 
     connect to <user> identified by <password>
     using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)
     (PORT=<port_number>))(CONNECT_DATA=(SID=<ORACLE_SID>)))';

4. Working with EBS on Multitenant Architecture

4.1 Environment Setup

CDB Environment:

bash
$ cd $ORACLE_HOME
$ source <CDB_NAME>_<NODE_NAME>.env

PDB Environment:

bash
$ cd $ORACLE_HOME
$ source <PDB_NAME>_<NODE_NAME>.env

PDB Environment (Alternative Method):

bash
$ source <CDB_NAME>_<NODE_NAME>.env
$ export ORACLE_PDB_SID=<PDB_NAME>

4.2 Connecting to Databases

Connect to CDB as SYSDBA:

bash
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"

Connect to PDB as SYSDBA:

bash
$ source <CDB_NAME>_<NODE_NAME>.env
$ export ORACLE_PDB_SID=<PDB_NAME>
$ sqlplus "/ as sysdba"

4.3 Starting and Stopping

Start CDB (Single-Node):

sql
SQL> startup;

Start PDB:

sql
SQL> alter pluggable database <EBS_PDB_NAME> open read write services=all;

Stop PDB:

sql
SQL> alter pluggable database <EBS_PDB_NAME> close immediate;

Save PDB State:

sql
SQL> alter pluggable database <EBS_PDB_NAME> save state;

Stop CDB (Single-Node):

sql
SQL> shutdown normal;

4.4 View PDB Information

View All PDBs:

sql
SQL> show pdbs;

View PDB Open Modes:

sql
SQL> select name, open_mode from v$pdbs;

Switch to PDB from CDB:

sql
SQL> alter session set container="FBS";

4.5 Troubleshooting

Check PDB Violations:

sql
SQL> select name, cause, message, status from PDB_PLUG_IN_VIOLATIONS;

Find Alert Log Location:

sql
SQL> select value from v$diag_info where name = 'Diag Trace';

4.6 AWR Reports

Oracle 19c supports AWRs at both CDB and PDB levels:

sql
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql
  • Specify AWR_ROOT for CDB-level AWR data

  • Specify AWR_PDB for PDB-level AWR data

4.7 OPatch Inventory

List OPatch Inventory:

bash
$ source <CDB_NAME>_<NODE_NAME>.env
$ export PATH=$PATH:$ORACLE_HOME/OPatch
$ opatch lsinventory -detail

5. Key Configuration Variables

The following context variables support the multitenant architecture:

VariableValue
s_pluggable_databaseTRUE
s_pdb_namePDB name
s_cdb_nameCDB SID
s_cdb_unique_nameCDB unique name
s_dbServiceebs_<PDB_name>
s_db_tenancymulti-tenant
s_cdb_tnsadmin$ORACLE_HOME/network/admin

6. Important Notes and Best Practices

Licensing

  • Oracle E-Business Suite supports a single PDB (single tenant) in a CDB

  • A single PDB in a CDB does not require licensing the Oracle Multitenant database option

Supported Configurations

  • Oracle E-Business Suite 12.2.3 and later with Oracle Database 19c (on-premises)

  • Oracle E-Business Suite 12.1.3 with Oracle Database 19c (on-premises)

Cloning

  • Rapid Clone utility can be used to clone both CDB and PDB together in on-premises environments

Unsupported Operations

  • There is no supported procedure to unplug an Oracle E-Business Suite PDB and plug it into another CDB

Post-Upgrade Checklist

  1. Verify all invalid objects are compiled

  2. Confirm database compatibility setting

  3. Validate PDB is open in READ WRITE mode

  4. Check application connectivity

  5. Run ETCC to verify patch levels

  6. Test all application functionality


7. References

  • 19c Database with Oracle E-Business Suite R12 Known Issues & Solutions (Doc ID 2662860.1)

  • Install Oracle Database binaries 19c and apply EBS overlay patches (Doc ID 1594274.1)

  • Interoperability Notes: Oracle E-Business Suite Release 12.2 with Oracle EBS Database 19c (Doc ID 2552181.1)

  • Database Initialization Parameters for Oracle E-Business Suite Release 12 (Doc ID 396009.1)

  • Using Oracle Database 19c RAC Multitenant with Oracle E-Business Suite Release 12.2 (Doc ID 2530665.1)

  • Export/Import Process for Oracle E-Business Suite Release 12.2 Database Instances Using Oracle Database 19 (Doc ID 2554156.1)

  • Oracle E-Business Suite and the Oracle Multitenant Architecture (Doc ID 2567105.1)


8. Conclusion

This upgrade successfully migrated the Oracle E-Business Suite database from 12.1.0 to 19c and converted the non-CDB architecture to a multitenant architecture with a single PDB. The CDB (cdbfbs) now hosts the EBS PDB (FBS), and all post-migration tasks have been completed including:

  • Database upgrade and patching

  • Schema migration and grants

  • PDB creation and configuration

  • Application tier updates

  • System parameter optimization

The database is now fully operational and ready for production use with the Oracle E-Business Suite application.

No comments:

Post a Comment