Source Assumption:
DB version : 12.1.0.2.0
EBS: 12.1.3
Key Checks
SYS@FBS >select name,open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
FBS READ WRITE
Custom Patch Location: /u01/patches/19cDB
I will autoextend my datafiles to avoid any tablespace issues or you can also check for sufficient space in tablespaces.
select file_id,file_name,autoextensible from dba_data_Files;
select file_id,file_name,autoextensible from dba_temp_Files;
select 'alter database datafile '||file_id ||' autoextend on;' from dba_data_Files;
select 'alter database tempfile '||file_id ||' autoextend on;' from dba_temp_Files;
select file_id,file_name,autoextensible from dba_data_Files;
select file_id,file_name,autoextensible from dba_temp_Files;
3.1 As per oracle Document 136697.1, hcheck.sql - Script to Check for Known Problems in Oracle8i, Oracle9i, Oracle10g, Oracle 11g and Oracle 12c, to run hcheck.sql, which looks for some known common Data Dictionary problems.
run connected as SYS schema
[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
Copyright (c) 1982, 2014, Oracle. All rights reserved.
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.
Statement processed.
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
View the spool output and trace file.
Various status seen in reports can be as below.
CRITICAL: Is of highest risk and requires urgent fix.
FAIL: Requires resolution on priority.
WARN: Good to resolve.
PASS: No problem.
My execution showed me one warning.
.- 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)
-- Please run the following:
SQL> update STMT_AUDIT_OPTION_MAP set option#=234
where name ='ON COMMIT REFRESH';
[oracle@fbstest 19cDB_Upgrade_EBS]$ sqlplus '/as sysdba'
SQL*Plus: Release 12.1.0.2.0 Production on Sat Mar 12 14:12:52 2022
Copyright (c) 1982, 2014, Oracle. All rights reserved.
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 >update STMT_AUDIT_OPTION_MAP set option#=234 where name ='ON COMMIT REFRESH';
1 row updated.
SYS@FBS >commit;
Commit complete.
So I executed solution as mentioned in spool. Re-run script to make sure all is passed.
3.2 Apply required patches on EBS as required based on the version and AD/TXK delta versions. My AD and TXK version are on already Delta 12.
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
As per my environment I am required to apply below patches. Always check latest Oracle Document to see latest patches given by them.
If you have not updated your instance to 12.1.3 then you must apply this two patched below
- Patch 8796558
- Patch 9239090 - Release 12.1.3
- Patch 23569686 - R12.AD.B.delta.8
- Patch 27135427 - R12.TXK.B.delta.
- Patch 30033914 - 19c interoperability patch for Release 12.1.3
- Patch 27102203 - Prerequisite patch for 28613638 and (30824278 for window)
- Patch 28613638
- Patch 28685719
- Patch 29178111
- Patch 29414243
- Patch 29583055
- Patch 29905536
- Patch 30370150
- Patch 30601878
- Patch 31209544
- Patch 31406810
- Patch 31470349
Please review readme of all the patches.
Apply patches.(Note all patches I have kept at my common share area as mentioned above in post).Make sure patches are kept and unzipped.
For my environment below patches from above list are already applied. If they are not applied in your environment then you need to apply.
select bug_number,creation_date from ad_bugs where bug_number in (8796558,9239090,23569686,27135427,
30033914,27102203,28613638,28685719,29178111,29414243,29583055,29905536,30370150,30601878,31209544,
31406810,31470349);
BUG_NUMBER CREATION_DATE
------------------------------ ------------------
9239090 13-FEB-25
8796558 13-FEB-25
27135427 14-FEB-25
23569686 14-FEB-25
[applmgr@fbstest ~]$ . /u01/app/FBS/apps/apps_st/appl/APPSFBS_fbstest.env
3.3 On Application RUN file system
Source the environment variables for Oracle Applications
[applmgr@fbstest ~]$ . /u01/app/FBS/apps/apps_st/appl/APPSFBS_fbstest.env
[applmgr@fbstest ~]$ cd $ADMIN_SCRIPTS_HOME
[applmgr@fbstest scripts]$ ./adautocfg.sh
Enter the APPS user password:
Execute admkappsutil.pl utility to create the file appsutil.zip
perl $AD_TOP/bin/admkappsutil.pl
This will create appsutil.zip in <INST_TOP>/admin/out
[applmgr@fbstest scripts]$ perl $AD_TOP/bin/admkappsutil.pl
Starting the generation of appsutil.zip
Log file located at /u01/app/FBS/inst/apps/FBS_fbstest/admin/log/MakeAppsUtil_02141257.log
output located at /u01/app/FBS/inst/apps/FBS_fbstest/admin/out/appsutil.zip
MakeAppsUtil completed successfully.
3.4 On the Database Tier (as the ORACLE user):
Source the environment variables for RDBMS ORACLE_HOME
cd <RDBMS ORACLE_HOME>
. <RDBMS ORACLE_HOME>/<CONTEXT_NAME>.env
Copy or FTP the appsutil.zip file to the <RDBMS ORACLE_HOME>
Uncompress appsutil.zip under the <RDBMS ORACLE_HOME>
cd $ORACLE_HOME
unzip -o appsutil.zip
Run AutoConfig on the <RDBMS ORACLE_HOME>
[oracle@fbstest FBS_fbstest]$ pwd
/u01/app/FBS/db/tech_st/12.1.0/appsutil/scripts/FBS_fbstest
[oracle@fbstest FBS_fbstest]$ ./adautocfg.sh
Enter the APPS user password:
The log file for this session is located at: /u01/app/FBS/db/tech_st/12.1.0/appsutil/log/FBS_fbstest
/02141301/adconfig.log
AutoConfig is configuring the Database environment...
AutoConfig will consider the custom templates if present.
Using ORACLE_HOME location : /u01/app/FBS/db/tech_st/12.1.0
Classpath : :/u01/app/FBS/db/tech_st/12.1.0/jdbc/lib/ojdbc6.jar:/u01
/app/FBS/db/tech_st/12.1.0/appsutil/java/xmlparserv2.jar:/u01/app/FBS/db/tech_st/12.1.0/appsutil
/java:/u01/app/FBS/db/tech_st/12.1.0/jlib/netcfg.jar:/u01/app/FBS/db/tech_st/12.1.0/jlib
/ldapjclnt12.jar
Using Context file : /u01/app/FBS/db/tech_st/12.1.0/appsutil/FBS_fbstest.xml
Context Value Management will now update the Context file
Updating Context file...COMPLETED
Attempting upload of Context file and templates to database...COMPLETED
Updating rdbms version in Context file to db121
Updating rdbms type in Context file to 64 bits
Configuring templates from ORACLE_HOME ...
AutoConfig completed successfully.
Make sure the autoconfig completes successfully.
3.5 Make sure below parameter is false in DB.
SYS@FBS >show parameter SEC_CASE_SENSITIVE_LOGON
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon boolean FALSE
In my environment the parameter id already false.
3.6 Create the initialization parameter setup files
We will be creating below 2 files.
$ORACLE_HOME/dbs/<ORACLE_SID>_initparam.sql and $ORACLE_HOME/dbs/<ORACLE_SID>_datatop.txt files.
Run the following commands to create them
$ 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
[oracle@fbstest dbs]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ echo $ORACLE_HOME
/u01/app/FBS/db/tech_st/12.1.0
[oracle@fbstest appsutil]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /u01/app/FBS/db/tech_st/12.1.0
[oracle@fbstest appsutil]$ export ORACLE_SID=FBS
[oracle@fbstest appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@fbstest bin]$ perl txkOnPremPrePDBCreationTasks.pl -dboraclehome=$ORACLE_HOME
-outdir=$ORACLE_HOME/appsutil/log -appsuser=apps -dbsid=FBS -skipdbshutdown=yes
Enter the APPS Password:
cd $ORACLE_HOME/dbs below files would be created
-rw-r--r--. 1 oracle oinstall 15489 Mar 12 18:44 FBS_initparam.sql
-rw-r--r--. 1 oracle oinstall 458 Mar 12 18:44 FBS_datatop.txt
-rw-r-----. 1 oracle oinstall 20992 Mar 12 18:45 spfileFBS.ora
-rw-r--r--. 1 oracle oinstall 52589 Mar 12 18:45 FBS_PDBDesc.xml
3.7 Install 19c Database Oracle Home
Refer my previous post on installing the 19c DB Home and pre-requisites. This will install 19.3 DB version.
Follow same, and make sure the 19c is installed in different path.
Only use option to setup the software only.
[oracle@fbstest 19.3]$ mkdir -p /u01/app/FBS/db/tech_st/19c
unzip -d /u01/app/FBS/db/tech_st/19c LINUX.X64_193000_db_home.zip
The directory created will be used as 19c Oracle HOME.
[oracle@fbstest 19.3]$ [oracle@fbstest 19c]$ export _JAVA_OPTIONS='-Dsun.java2d.xrender=false'
[oracle@fbstest 19c]$ export CV_ASSUME_DISTID=OEL7.9
[oracle@fbstest 19c]$ ./runInstaller
19C DB software installation is done.
3.8 Create the 19c Environment File
Once you have the 19c Oracle Home installed, create a simple environment to set the environment easily with parameter as below. "cdbfbs" is the CDB which I am going to create now.
The ORACLE_BASE environment variable is set accordingly.
The ORACLE_HOME environment variable points to the new 19c Oracle home.
The PATH environment variable includes $ORACLE_HOME/bin and the directory where the new perl executable is located (usually $ORACLE_HOME/perl/bin).
The LD_LIBRARY_PATH environment variable includes $ORACLE_HOME/lib.
The PERL5LIB environment variable points to the directories where the new perl libraries are located: $ORACLE_HOME/perl/lib/<perl version> and $ORACLE_HOME/perl/lib/site_perl/<perl version>
export ORA_NLS10=/u02/oratest/app/oracle/19.3/nls/data/9idata
[oracle@fbstest ~]$ cat 19cdb.env
export ORACLE_HOME=/u01/app/FBS/db/tech_st/19c
export ORACLE_SID=cdbfbs
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.28.1:$ORACLE_HOME/perl/lib/site_perl/5.28.1
3.9 Apply latest database patches on the 19c Home
Document 1594274.1, Oracle E-Business Suite Release 12.2: Consolidated List of Patches and Technology Bug Fixes from section 3.3.
These are important to be on latest to avoid any issues.
Based on my analysis, I will be applying below patches. DB binary will be updated to 19.25 from 19.3
37260974-DATABASE RELEASE UPDATE 19.26.0.0.0 (Patch)
37102264-OJVM RELEASE UPDATE 19.26.0.0.0 (Patch)
31424070
Open new terminal with oracle user and source the 19c environment file.
[oracle@fbstest ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Apr 11 00:25:01 2021
Version 19.3.0.0.0
Make sure patches are applied on 19c home only.
Unzip all mentioned above patches
Download latest Opatch Utility if required or any errors.
[oracle@fbstest 19cDB_Upgrade_EBS]$ cp p6880880_190000_Linux-x86-64.zip $ORACLE_HOME
[oracle@fbstest 19cDB_Upgrade_EBS]$ cd $ORACLE_HOME/
[oracle@fbstest 19c]$ mv OPatch OPatch_old
[oracle@fbstest 19c]$ unzip p6880880_190000_Linux-x86-64.zip
[oracle@fbstest 19c]$ . 19cdb.env
Go to each patch unzipped directory and apply them
cd 37260974
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply
cd 37102264
opatch apply
cd 31424070
opatch apply
[oracle@ebstest OPatch]$ ./datapatch
SQL Patching tool version 19.28.0.0.0 Production on Wed Sep 17 10:28:46 2025
Copyright (c) 2012, 2025, Oracle. All rights reserved.
Log file for this invocation: /u01/app/FBS/db/cfgtoollogs/sqlpatch/sqlpatch_22625_2025_09_17_10_28_46/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
Note: Datapatch will only apply or rollback SQL fixes for PDBs
that are in an open state, no patches will be applied to closed PDBs.
Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
(Doc ID 1585822.1)
Bootstrapping registry and package to current versions...done
Determining current state...done
Current state of interim SQL patches:
Interim patch 37499406 (OJVM RELEASE UPDATE: 19.27.0.0.250415 (37499406)):
Binary registry: Not installed
PDB CDB$ROOT: Applied successfully on 18-JUL-25 12.51.10.968141 PM
PDB FBS: Applied successfully on 18-JUL-25 03.09.25.504903 PM
PDB PDB$SEED: Applied successfully on 18-JUL-25 01.09.36.616555 PM
Interim patch 37847857 (OJVM RELEASE UPDATE: 19.28.0.0.250715 (37847857)):
Binary registry: Installed
PDB CDB$ROOT: Not installed
PDB FBS: Not installed
PDB PDB$SEED: Not installed
Current state of release update SQL patches:
Binary registry:
19.28.0.0.0 Release_Update 250705030417: Installed
PDB CDB$ROOT:
Applied 19.27.0.0.0 Release_Update 250406131139 successfully on 18-JUL-25 01.02.01.746989 PM
PDB FBS:
Applied 19.27.0.0.0 Release_Update 250406131139 successfully on 18-JUL-25 03.09.25.463126 PM
PDB PDB$SEED:
Applied 19.27.0.0.0 Release_Update 250406131139 successfully on 18-JUL-25 01.16.37.867444 PM
Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: CDB$ROOT PDB$SEED FBS
The following interim patches will be rolled back:
37499406 (OJVM RELEASE UPDATE: 19.27.0.0.250415 (37499406))
Patch 37960098 (Database Release Update : 19.28.0.0.250715 (37960098)):
Apply from 19.27.0.0.0 Release_Update 250406131139 to 19.28.0.0.0 Release_Update 250705030417
The following interim patches will be applied:
37847857 (OJVM RELEASE UPDATE: 19.28.0.0.250715 (37847857))
Installing patches...
Patch installation complete. Total patches installed: 9
Validating logfiles...done
Patch 37499406 rollback (pdb CDB$ROOT): SUCCESS
logfile: /u01/app/FBS/db/cfgtoollogs/sqlpatch/37499406/26115603/37499406_rollback_FBSCDB_CDBROOT_2025Sep17_10_38_28.log (no errors)
Patch 37960098 apply (pdb CDB$ROOT): SUCCESS
logfile: /u01/app/FBS/db/cfgtoollogs/sqlpatch/37960098/27635722/37960098_apply_FBSCDB_CDBROOT_2025Sep17_10_42_18.log (no errors)
Patch 37847857 apply (pdb CDB$ROOT): SUCCESS
logfile: /u01/app/FBS/db/cfgtoollogs/sqlpatch/37847857/27534561/37847857_apply_FBSCDB_CDBROOT_2025Sep17_10_42_06.log (no errors)
Patch 37499406 rollback (pdb PDB$SEED): SUCCESS
logfile: /u01/app/FBS/db/cfgtoollogs/sqlpatch/37499406/26115603/37499406_rollback_FBSCDB_PDBSEED_2025Sep17_10_43_36.log (no errors)
Patch 37960098 apply (pdb PDB$SEED): SUCCESS
logfile: /u01/app/FBS/db/cfgtoollogs/sqlpatch/37960098/27635722/37960098_apply_FBSCDB_PDBSEED_2025Sep17_10_44_11.log (no errors)
Patch 37847857 apply (pdb PDB$SEED): SUCCESS
logfile: /u01/app/FBS/db/cfgtoollogs/sqlpatch/37847857/27534561/37847857_apply_FBSCDB_PDBSEED_2025Sep17_10_43_57.log (no errors)
Patch 37499406 rollback (pdb FBS): SUCCESS
logfile: /u01/app/FBS/db/cfgtoollogs/sqlpatch/37499406/26115603/37499406_rollback_FBSCDB_FBS_2025Sep17_10_43_36.log (no errors)
Patch 37960098 apply (pdb FBS): SUCCESS
logfile: /u01/app/FBS/db/cfgtoollogs/sqlpatch/37960098/27635722/37960098_apply_FBSCDB_FBS_2025Sep17_10_48_36.log (no errors)
Patch 37847857 apply (pdb FBS): SUCCESS
logfile: /u01/app/FBS/db/cfgtoollogs/sqlpatch/37847857/27534561/37847857_apply_FBSCDB_FBS_2025Sep17_10_47_25.log (no errors)
SQL Patching tool complete on Wed Sep 17 10:55:18 2025
Do not perform any post patch installation steps as they will be done after upgrade.
3.10 Create the nls/data/9idata directory
Source 19c env
On the database server node, as the owner of the Oracle RDBMS file system and database instance, run the following command to create the $ORACLE_HOME/nls/data/9idata directory.
unset PERL5LIB
$ perl $ORACLE_HOME/nls/data/old/cr9idata.pl
[oracle@fbstest ~]$ . 19c.env
[oracle@fbstest ~]$ unset PERL5LIB
[oracle@fbstest ~]$ perl $ORACLE_HOME/nls/data/old/cr9idata.pl
Creating directory /u01/app/FBS/db/tech_st/19c/nls/data/9idata ...
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!
After creating the directory, make sure that the ORA_NLS10 environment variable is set to the full path of the 9idata directory whenever you enable the 19c Oracle home
[oracle@fbstest ~]$ cat 19cdb.env
export ORACLE_HOME=/u01/app/FBS/db/tech_st/19c
export ORACLE_SID=cdbfbs
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/perl/bin
export ORACLE_BASE=/oraapps122/DATABASE
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PERL5LIB=$ORACLE_HOME/perl/lib/5.28.1:$ORACLE_HOME/perl/lib/site_perl/5.28.1
export ORA_NLS10=/u01/app/FBS/db/tech_st/19c/nls/data/9idata
3.11 Copy appsutil.zip from Application Tier to Database 19c home
On Application Tier source run file system environment
[applmgr@fbstest scripts]$ perl $AD_TOP/bin/admkappsutil.pl
Starting the generation of appsutil.zip
Log file located at /u01/app/FBS/inst/apps/FBS_fbstest/admin/log/MakeAppsUtil_02141257.log
output located at /u01/app/FBS/inst/apps/FBS_fbstest/admin/out/appsutil.zip
MakeAppsUtil completed successfully.
[applmgr@fbstest scripts]$ perl $AD_TOP/bin/admkappsutil.pl
Starting the generation of appsutil.zip
Log file located at /u01/app/FBS/inst/apps/FBS_fbstest/admin/log/MakeAppsUtil_02141358.log
output located at /u01/app/FBS/inst/apps/FBS_fbstest/admin/out/appsutil.zip
MakeAppsUtil completed successfully.
Copy appsutil.zip file to 19c Oracle Home and unzip
[oracle@fbstest ~]$ cd $ORACLE_HOME
[oracle@fbstest 19c]$ pwd
/u01/app/FBS/db/tech_st/19c
[oracle@fbstest 19c]$
cp /u01/app/FBS/fs1/inst/apps/FBS_fbstest/admin/out/appsutil.zip .
[oracle@fbstest 19c]$ ls
addnode data install network owm root.sh.old.1 srvm
apex dbjava instantclient nls p6880880_190000_Linux-x86-64.zip root.sh.old.2 suptools
appsutil.zip dbs inventory odbc perl root.sh.old.3 ucp
assistants deinstall javavm olap plsql runInstaller usm
bin demo jdbc OPatch precomp schagent.conf utl
cfgtoollogs diagnostics jdk opmn QOpatch sdk wwg
client dmu jlib oracore R sdo xdk
clone drdaas ldap oraInst.loc racg slax
crs dv lib ord rdbms sqldeveloper
css env.ora LINUX.X64_193000_db_home.zip ords relnotes sqlj
ctx has md oss root.sh sqlpatch
cv hs mgw oui root.sh.old sqlplus
[oracle@fbstest 19c]$ unzip -o appsutil.zip
3.12 Install JRE 8
Source 19c environment
To install JRE 8 on the appsutil directory, copy the $ORACLE_HOME/jdk/jre directory to $ORACLE_HOME/appsutil/jre. Run the following commands:
[oracle@fbstest 19c]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ cp -r $ORACLE_HOME/jdk/jre .
[oracle@fbstest appsutil]$ cp $ORACLE_HOME/jlib/orai18n.jar $ORACLE_HOME/appsutil/jre/lib/ext
3.13 Create the CDB
On the database server node Source 19c environment and run below from GUI Terminal/VNC
- Run the Database Configuration Assistant (DBCA) to create the container database (CDB).
- When prompted, click on the "Create Database", "Advanced Configuration", and "General Purpose or Transaction Processing" options.
- In the Specify Database Identification screen, check to create an empty container database (CDB) without a PDB.
- Set the Global Database Name, the SID to the new CDB SID (maximum of 8 characters)(cdbfbs), and check the "Use Local Undo tablespace for PDBs" checkbox. The CDB SID has to be different from the current ORACLE_SID, which will be the PDB SID.
- In the "Network Configuration" section, do not create a listener. In the "Specify Configuration Options" section, set the SGA and PGA sizes to 2G and 1G respectively.
- Click on the Character Sets tab and choose the Character Set and National Character Set to be the same as in the source database.
- In the "Select Database Creation Option" section, click on the "Customize Storage Locations" button. Set the size of the redo log files to be the same as in the source database. Other options can be configured as appropriate.
[oracle@fbstest ~]$ . 19c.env
[oracle@fbstest ~]$ cd $ORACLE_HOME/bin
[oracle@fbstest bin]$ ls -ltr dbca
-rwxr-x---. 1 oracle oinstall 10572 Mar 12 19:23 dbca
./dbca
In case of ASM filesystem the storage will be ASM.
SYS@FBS >SELECT value AS db_charset FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';
DB_C HARSET
--------------------------------------------------------------------------------
AL32UTF8
SYS@FBS >SELECT value AS db_ncharset FROM nls_database_parameters WHERE parameter = 'NLS_NCHAR_CHARACTERSET';
DB_NCHARSET
--------------------------------------------------------------------------------
AL16UTF16
CDB database should be running now.
[oracle@fbstest bin]$ ps -ef |grep -i pmon
oracle 314439 2552 0 10:39 ? 00:00:00 ora_pmon_FBS
oracle 433578 2552 0 16:02 ? 00:00:00 ora_pmon_cdbfbs
oracle 434042 401122 0 16:04 pts/4 00:00:00 grep --color=auto -i pmon
3.14 Run datapatch on the CDB
Use the following commands to load any necessary patches on the CDB.
Source 19 environment
[oracle@fbstest ~]$ . 19cdb.env
[oracle@fbstest ~]$ export ORACLE_SID=cdbfbs
[oracle@fbstest bin]$ $ORACLE_HOME/OPatch/datapatch
SQL Patching tool version 19.26.0.0.0 Production on Fri Feb 14 16:05:31 2025
Copyright (c) 2012, 2025, Oracle. All rights reserved.
Log file for this invocation: /u01/app/FBS/db/cfgtoollogs/sqlpatch/sqlpatch_434068_2025_02_14_16_05_31/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
Note: Datapatch will only apply or rollback SQL fixes for PDBs
that are in an open state, no patches will be applied to closed PDBs.
Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
(Doc ID 1585822.1)
Bootstrapping registry and package to current versions...done
Determining current state...done
Current state of interim SQL patches:
Interim patch 37102264 (OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264)):
Binary registry: Installed
PDB CDB$ROOT: Applied successfully on 14-FEB-25 03.30.59.314984 PM
PDB PDB$SEED: Applied successfully on 14-FEB-25 03.49.16.448995 PM
Current state of release update SQL patches:
Binary registry:
19.26.0.0.0 Release_Update 250118124854: Installed
PDB CDB$ROOT:
Applied 19.26.0.0.0 Release_Update 250118124854 successfully on 14-FEB-25 03.41.06.383151 PM
PDB PDB$SEED:
Applied 19.26.0.0.0 Release_Update 250118124854 successfully on 14-FEB-25 03.56.04.979717 PM
Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: CDB$ROOT PDB$SEED
No interim patches need to be rolled back
No release update patches need to be installed
No interim patches need to be applied
SQL Patching tool complete on Fri Feb 14 16:05:52 2025
3.15 Create the CDB MGDSYS schema
Source 19c Environment
Use SQL*Plus to connect to the CDB as SYSDBA and run the
[oracle@fbstest bin]$ export ORACLE_SID=cdbfbs
[oracle@fbstest bin]$ sqlplus '/as sysdba'
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 14 16:06:56 2025
Version 19.26.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.26.0.0.0
SQL>
SQL> @$ORACLE_HOME/rdbms/admin/catmgd.sql
This creates the new MGDSYS schema on the CDB.
3.16 1Create the CDB TNS files
On the database server node, run the following perl script to generate the required TNS files. Note that this script does not create a listener.
Source 19c Environment file
$ cd $ORACLE_HOME/appsutil
$ . ./txkSetCfgCDB.env dboraclehome=<full path of ORACLE_HOME>
$ cd $ORACLE_HOME/appsutil/bin
$ perl txkGenCDBTnsAdmin.pl -dboraclehome=<ORACLE_HOME> \
-cdbname=<CDB SID> -cdbsid=<CDB SID> -dbport=<Database port> \
-outdir=<ORACLE_HOME>/appsutil/log
[oracle@fbstest ~]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /u01/app/FBS/db/tech_st/19c
[oracle@fbstest appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@fbstest bin]$ perl txkGenCDBTnsAdmin.pl -dboraclehome=$ORACLE_HOME -cdbname=cdbfbs -cdbsid=cdbfbs -dbport=1531 -outdir=$ORACLE_HOME/appsutil/log
3.17 Shut down the CDB
Source 19c environment
Use SQL*Plus to connect to the CDB as SYSDBA and use the following command to shut down the database:
$ sqlplus "/ as sysdba"
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
3.18 Configure UTL_FILE_DIR
Oracle EBS stores the PLSQL IO files in Database Node /usr/tmp usually in all versions of EBS starting from 11i till R12.2. For this, EBS uses UTL_FILE_DIR initialization parameter. However, from 18c, UTL_FILE_DIR initialization parameter has been desupported. Hence for 19c, Oracle for EBS have introduced new apps.v$parameter and apps.v$parameter2 views in the APPS schema that provide a supplemental UTL_FILE_DIR parameter. You need to follow the instructions given in Section 3.1.1 of :
Using UTL_FILE_DIR or Database Directories for PL/SQL File I/O in Oracle E-Business Suite Releases 12.1 and 12.2 (Doc ID 2525754.1)
We need to run the txkCfgUtlfileDir.pl script twice in different modes to complete this task. First you run the script in getUtlFileDir mode to retrieve the directory paths formerly specified in the UTL_FILE_DIR database initialization parameter and prepare them for the upgrade. Then you run the script in setUtlFileDir mode to store the directory paths in the new Oracle E-Business Suite tables underlying the apps.v$parameter and apps.v$parameter2 views and to create the corresponding directory objects.
To retrieve the directory path values from the source UTL_FILE_DIR database initialization parameter:
Source the Oracle E-Business Suite database environment of your 11g or 12c Oracle home.
$ . $ORACLE_HOME/<sid>_<hostname>.env
[oracle@fbstest ~]$ . FBS_fbstest.env
Run the txkCfgUtlfileDir.pl script in getUtlFileDir mode using the following command:
$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=<DB Context File> \
-oraclehome=<11g/12c ORACLE_HOME> -outdir=<Output/Log location> \
-upgradedhome=<19c ORACLE_HOME> -mode=getUtlFileDir -servicetype=onpremise|opc
[oracle@fbstest bin]$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=/u01/app/FBS/db/tech_st/12.1.0/appsutil/FBS_fbstest.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
Enter the APPS Password:
*** ALL THE FOLLOWING FILES ARE REQUIRED FOR RESOLVING RUNTIME ERRORS
*** Log File = /tmp/TXK_UTIL_DIR_Fri_Feb_14_16_15_21_2025/txkCfgUtlfileDir.log
Program : started @ Fri Feb 14 16:15:24 2025
*** Log File = /tmp/TXK_UTIL_DIR_Fri_Feb_14_16_15_21_2025/txkCfgUtlfileDir.log
Script Name : txkCfgUtlfileDir.pl
Script Version : 120.0.12010000.9
Started : Fri Feb 14 16:15:24 EAT 2025
Log File : /tmp/TXK_UTIL_DIR_Fri_Feb_14_16_15_21_2025/txkCfgUtlfileDir.log
Context file: /u01/app/FBS/db/tech_st/12.1.0/appsutil/FBS_fbstest.xml exists.
==============================================================================
Successfully generated the below file with UTL_FILE_DIR content:
/u01/app/FBS/db/tech_st/12.1.0/dbs/FBS_utlfiledir.txt
==============================================================================
Completed : Fri Feb 14 16:15:24 EAT 2025
Successfully Completed the script
ERRORCODE = 0 ERRORCODE_END
With this command, the script retrieves the directory paths stored in the UTL_FILE_DIR database initialization parameter, modifies them to prepare them for use in Oracle Database 19c, and creates a text file named <DB_NAME>_utlfiledir.txt in the <ORACLE_HOME>/dbs directory with the list of modified directory paths. The -servicetype parameter defaults to -servicetype=onpremise, but when running on Oracle Cloud, you must specify -servicetype=opc for this parameter. The script performs the following modifications in the directory paths:
For on-premises instances, any occurrences of the path /usr/tmp for UNIX/Linux, or C:\temp for Windows, are replaced with <19c ORACLE_BASE>/temp/<PDB_NAME>, where <PDB_NAME> is the pluggable database (PDB) name.
For Oracle Cloud instances, any occurrences of the path /usr/tmp are replaced with <19c ORACLE_HOME>/temp/<PDB_NAME>, where <PDB_NAME> is the pluggable database (PDB) name.
For both on-premises and Oracle Cloud instances, any occurrences of the 11g or 12c Oracle home within a directory path are replaced with the 19c Oracle home. For example, the following directory path:
<11g/12c ORACLE_HOME>/appsutil/outbound/<context_name>
is changed to the following new directory path:
<19c ORACLE_HOME/appsutil/outbound/<context name>
The script also stores the original values from the 11g or 12c UTL_FILE_DIR database initialization parameter as well as the 19c replacement values in a text file in the log directory. You can compare the log file with the <DB_NAME>_utlfiledir.txt file in the <ORACLE_HOME>/dbs directory to review the modifications made by the script.
If the list of directories in the <DB_NAME>_utlfiledir.txt file still includes any symbolic links, edit the file to replace the symbolic links with physical directory paths. You can also make any further updates needed to reflect any changes in your system architecture.
Note: The maximum length for the value of the supplemental UTL_FILE_DIR parameter is 4000 characters. Due to modifications in the directory paths for use in Oracle Database 19c, the UTL_FILE_DIR value prepared for Oracle Database 19c can become longer than the original value for the UTL_FILE_DIR parameter in Oracle Database 11g or 12c. Check the <DB_NAME>_utlfiledir.txt file to verify the length of the list of directory paths.
If the list exceeds 4000 characters, review the directory paths in the list and consider deleting any directories that are no longer in use or removing duplicate directories. However, note that Oracle E-Business Suite product code or your custom code may refer to a directory path at a specific position within the UTL_FILE_DIR parameter value, such as by a SQL substr(), instr(), or similar function. Before removing a directory, you should search your code and system documentation to ensure there are no references to that directory by position. Additionally, you should search for any references to all subsequent directories in the list, whose position would be affected if you remove a directory that precedes them.
Alternatively you can consider restructuring the disk system to create shorter directory paths.
To store the directory path values in the database:
Create the following directory paths:
<19c Oracle Base>/temp/<PDB NAME> - for on-premises instances
<19c Oracle Home>/temp/<PDB NAME> - for instances on Oracle Cloud
<19c ORACLE_HOME>/appsutil/outbound/<context name> - for both on-premises and Oracle Cloud instances
cd $12_OH/dbs/
cat FBS_utlfiledir.txt
Based on path check and create the directories on server using oracle user
mkdir -p /oraapps122/DATABASE/FBS/temp/FBS
mkdir -p /u01/app/FBS/db/tech_st/19c/appsutil/outbound/FBS_fbstest
mkdir -p /oraapps122/DATABASE/FBS/temp/FBS
Source the Oracle E-Business Suite database environment of your 11g or 12c Oracle home.
$ . $ORACLE_HOME/<sid>_<hostname>.env
Run the txkCfgUtlfileDir.pl script in setUtlFileDir mode using the following command:
$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=<DB Context File> \
-oraclehome=<11g/12c ORACLE_HOME> -outdir=<Output/Log location> \
-upgradedhome=<19c ORACLE_HOME> -mode=setUtlFileDir -servicetype=onpremise|opc [ -skipdirvalidation=Yes ]
[oracle@fbstest bin]$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=/u01/app/FBS/db/tech_st/12.1.0/appsutil/FBS_fbstest.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
Enter the APPS Password:
Enter the SYSTEM Password:
*** ALL THE FOLLOWING FILES ARE REQUIRED FOR RESOLVING RUNTIME ERRORS
*** Log File = /tmp/TXK_UTIL_DIR_Fri_Feb_14_16_30_57_2025/txkCfgUtlfileDir.log
Program : started @ Fri Feb 14 16:31:09 2025
*** Log File = /tmp/TXK_UTIL_DIR_Fri_Feb_14_16_30_57_2025/txkCfgUtlfileDir.log
Script Name : txkCfgUtlfileDir.pl
Script Version : 120.0.12010000.9
Started : Fri Feb 14 16:31:09 EAT 2025
Log File : /tmp/TXK_UTIL_DIR_Fri_Feb_14_16_30_57_2025/txkCfgUtlfileDir.log
Context file: /u01/app/FBS/db/tech_st/12.1.0/appsutil/FBS_fbstest.xml exists.
** WARNING: Incorrect value s_applptmp detected on Apps Tier nodes. Please check log for details
Completed : Fri Feb 14 16:31:15 EAT 2025
Successfully Completed the script
ERRORCODE = 0 ERRORCODE_END
When prompted, if your environment is on R12.TXK.C.Delta.13 or later, enter the password for the EBS_SYSTEM user. If your environment is on R12.TXK.C.Delta.12 or earlier, enter the password for the SYSTEM user.
With this command, the script reads the <ORACLE_HOME>/dbs/<DB_NAME>_utlfiledir.txt file that you created previously and validates the physical directory paths listed in that file. If you are creating your Oracle Database 19c instance on a different server and cannot validate the 19c Oracle home directory, then you should pass the -skipdirvalidation=Yes parameter in the txkCfgUtlfileDir.pl script command. The -servicetype parameter defaults to -servicetype=onpremise, but when running on Oracle Cloud, you must specify -servicetype=opc for this parameter.
After validating the directory paths, the script stores the paths for the supplemental UTL_FILE_DIR parameter in the new Oracle E-Business Suite tables underlying the apps.v$parameter and apps.v$parameter2 views.
The txkCfgUtlfileDir.pl script also creates a directory object for each physical directory path. Note that the script creates only one directory object for each directory path; it does not create duplicate directory objects, even if a directory path appears more than once in the <DB_NAME>_utlfiledir.txt file. The first directory object that is generated is named EBS_DB_DIR_UTIL. The script uses the following naming convention for all subsequent directory objects: EBS_UTL_FILE_DIR_<random_number>
Note: If you encounter the following warning message:
WARNING: Incorrect value s_applptmp detected on Apps Tier nodes. Please check log for details.
then you can proceed with the database upgrade. However, you should update the value of the s_applptmp AutoConfig parameter in the Applications context file before running AutoConfig on the application tier.
3.19 Shut down the application tier server processes
On each application tier server node, shut down all server processes or services. The applications will be unavailable to users until all remaining tasks in this section are completed.
This should be already down based on pervious adop cycle steps.
3.20 Drop SYS.ENABLED$INDEXES
Source 12c DB environment
If the SYS.ENABLED$INDEXES table exists, connect to the database as SYSDBA, and run the following command to drop the table:
$ sqlplus "/ as sysdba"
SQL> drop table sys.enabled$indexes;
if table doesn't exists then its fine.
3.21 Remove the MGDSYS schema(Conditional) (Not needed for us as we are on 12c DB)
If you are upgrading from a database version prior to Oracle 12c, log on to the old database server node, use SQL*Plus to connect to the database as SYSDBA, and run the $ORACLE_HOME/md/admin/catnomgdidcode.sql script. This drops the MGDSYS schema.
$ sqlplus "/ as sysdba" @?/md/admin/catnomgdidcode.sql
3.22 Shut down the database listener
Source 12c Environment
On the database tier server node, shut down the Oracle Net or Net8 database listener in the old Oracle home.
[oracle@fbstest ~]$ lsnrctl stop FBS
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 12-APR-2021 06:44:19
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fbstest.co.ke)(PORT=1551)))
The command completed successfully
Note: To ensure that the database does not inadvertently point to a non-existent listener during the upgrade, verify that you do not have the LOCAL_LISTENER initialization parameter set.
SYS@FBS >alter system set local_listener='';
System altered.
3.23 Database Pre-Upgrade Steps
Important Check:
- Ensure that the oratab file contains an entry for the database to be upgraded.
Modify the following initialization parameters before the upgrade:
- Comment out all the deprecated initialization parameters. Any necessary parameter will be added back in after the upgrade.
- Unset the olap_page_pool_size initialization parameter.
alter system set olap_page_pool_size=0 scope=spfile;
- If you have an 11g source database, set the PGA_AGGREGATE_TARGET initialization parameter to at least 10G.
- Set the SGA_TARGET initialization parameter to at least 2G.
- Add the event EVENT='10946 trace name context forever, level 8454144'
alter system set event='10946 trace name context forever, level 8454144' scope=spfile;
Shut down and restart the database to enable the parameters.
Source 12c Environment
Run the Pre-upgrade Tool:
Connect to the 12c Database and run the command as below:
[oracle@fbstest bin]$ $ORACLE_HOME/jdk/bin/java -jar /u01/app/FBS/db/tech_st/19c/rdbms/admin/preupgrade.jar TERMINAL TEXT
Report generated by Oracle Database Pre-Upgrade Information Tool Version
19.0.0.0.0 Build: 13 on 2025-02-14T16:38:38
Upgrade-To version: 19.0.0.0.0
=======================================
Status of the database prior to upgrade
=======================================
Database Name: FBS
Container Name: FBS
Container ID: 0
Version: 12.1.0.2.0
DB Patch Level: No Patch Bundle applied
Compatible: 12.1.0
Blocksize: 8192
Platform: Linux x86 64-bit
Timezone File: 18
Database log mode: NOARCHIVELOG
Readonly: FALSE
Edition: EE
Oracle Component Upgrade Action Current Status
---------------- -------------- --------------
Oracle Server [to be upgraded] VALID
JServer JAVA Virtual Machine [to be upgraded] VALID
Oracle XDK for Java [to be upgraded] VALID
Real Application Clusters [to be upgraded] OPTION OFF
OLAP Analytic Workspace [to be upgraded] VALID
Oracle Text [to be upgraded] VALID
Oracle XML Database [to be upgraded] VALID
Oracle Java Packages [to be upgraded] VALID
Oracle Multimedia [to be upgraded] VALID
Oracle Spatial [to be upgraded] VALID
Oracle OLAP API [to be upgraded] VALID
==============
BEFORE UPGRADE
==============
REQUIRED ACTIONS
================
1. (AUTOFIXUP) Empty the RECYCLEBIN immediately before database upgrade.
The database contains 13 objects in the recycle bin.
The recycle bin must be completely empty before database upgrade.
RECOMMENDED ACTIONS
===================
2. Remove initialization parameters that Oracle has obsoleted or removed.
This action may be done now or when starting the database in upgrade mode
using the target ORACLE HOME.
Parameter
---------
utl_file_dir
If parameters that are obsolete or removed from the target release are
present in the pfile/spfile, the Oracle database may not start, or it may
start with an ORA- error.
3. Run 12.1.0.2.0 $ORACLE_HOME/rdbms/admin/utlrp.sql to recompile invalid
objects. You can view the individual invalid objects with
SET SERVEROUTPUT ON;
EXECUTE DBMS_PREUP.INVALID_OBJECTS;
11 objects are INVALID.
There should be no INVALID objects in SYS/SYSTEM or user schemas before
database upgrade.
4. Remove OLAP Catalog by running the 12.1.0.2.0 SQL script
$ORACLE_HOME/olap/admin/catnoamd.sql script.
The OLAP Catalog component, AMD, exists in the database.
Starting with Oracle Database 12c, the OLAP Catalog (OLAP AMD) is
desupported and will be automatically marked as OPTION OFF during the
database upgrade if present. Oracle recommends removing OLAP Catalog
(OLAP AMD) before database upgrade. This step can be manually performed
before the upgrade to reduce downtime.
5. To remove duplicate objects, refer to Doc ID 1030426.6.
To query for these duplicates owned by both SYS and SYSTEM, run:
SELECT object_name, object_type
FROM dba_objects
WHERE object_name||'_'||object_type IN
(SELECT object_name||'_'||object_type
FROM dba_objects WHERE owner = 'SYS')
AND owner = 'SYSTEM' AND object_name NOT IN ('AQ$_SCHEDULES',
'AQ$_SCHEDULES_PRIMARY','DBMS_REPCAT_AUTH','DBMS_REPCAT_AUTH');
There exists in the database duplicate object(s) that are owned by both
SYS and SYSTEM.
If an install script had been run as both SYS and SYSTEM, then it is
possible to have duplicate objects (with same object names and types)
owned by both of these Oracle users.
6. Perform one of the following:
1) Expire user accounts that use only the old 10G password version and
follow the procedure recommended in Oracle Database Upgrade Guide under
the section entitled, "Checking for Accounts Using Case-Insensitive
Password Version".
2) Explicitly set SQLNET.ALLOWED_LOGON_VERSION_SERVER in the 19
SQLNET.ORA to a non-Exclusive Mode value, such as "11". (This is a short
term approach and is not recommended because it will retain known
security risks associated with the 10G password version.)
Your database system has at least one account with only the 10G password
version (see the PASSWORD_VERSIONS column of DBA_USERS).
Starting with Oracle Database release 12.2.0.1, Exclusive Mode is the new
default password-based authentication mode. All Exclusive Mode
login/authentication attempts will fail for preexisting user accounts
which only have the 10G password version and neither the 11G or 12C
password version (see DBA_USERS.PASSWORD_VERSIONS.) For more information,
refer to "Understanding Password Case Sensitivity and Upgrades" in the
Oracle Database Upgrade Guide.
7. Set OLAP_PAGE_POOL_SIZE in the pfile/spfile to 0 before the upgrade, or
remove the setting entirely and accept the Oracle default.
The OLAP_PAGE_POOL_SIZE parameter is set to a non-zero value. This will
cause OLAP to allocate that amount of memory for each OLAP user, and may
interfere with the upgrade process.
The OLAP_PAGE_POOL_SIZE initialization parameter controls the size of of
the OLAP page pool. Without an explicit setting or with it set to 0,
OLAP will dynamically resize the pool as needed. Setting it to a
non-zero value will cause OLAP to allocate that amount of memory as a
fixed-size pool, and never resize the pool. Oracle recommends removing
the parameter from the pfile/spfile.
8. Remove the SEC_CASE_SENSITIVE_LOGON instance initialization parameter
setting, to configure your system to use case sensitive password
authentication by default.
Your database system is configured to enforce case insensitive password
authentication (the SEC_CASE_SENSITIVE_LOGON instance initialization
parameter setting is FALSE).
Starting with Oracle Database release 12.2, Exclusive Mode is the default
password-based authentication mode. Case insensitive password
authentication is not supported in Exclusive Mode. If your system needs
to use case insensitive password authentication, Exclusive Mode must be
switched off prior to the upgrade. See the Network Reference Manual
chapter about the SQLNET.ORA parameter
SQLNET.ALLOWED_LOGON_VERSION_SERVER for more details on Exclusive Mode.
9. Please make sure that all the MVs are refreshed and sys.sumdelta$ becomes
empty before doing upgrade, unless you have strong business reasons not
to do so. You can use dbms_mview.refresh() to refresh the MVs except
those stale ones to be kept due to business need. If there are any stale
MVs depending on changes in sys.sumdelta$, do not truncate it, because
doing so will cause wrong results after refresh. Please refer to the
Materialized View section in MOS Note 2380601.1 for more details.
There are one or more materialized views in either stale or invalid
state, or which are currently being refreshed.
Oracle recommends that all materialized views (MV's) are refreshed before
upgrading the database because this will clear the MV logs and the
sumdelta$ table and may reduce the upgrade time. If you choose to not
refresh some MVs, the change data for those MV's will be carried through
the UPGRADE process. After UPGRADE, you can refresh the MV's and MV
incremental refresh should work in normal cases.
10. Review and remove any unnecessary EVENTS.
The database contains events.
There are events set that should be removed before upgrade, unless your
application vendors and/or Oracle Support state differently. Changes
will need to be made in the pfile/spfile.
INFORMATION ONLY
================
11. Here are ALL the components in this database registry:
Component Current Current Original Previous Component
CID Version Status Version Version Schema
--------- ----------- ----------- ----------- ----------- -----------
AMD 11.1.0.7.0 OPTION OFF 10.2.0.2.0 11.1.0.6.0 OLAPSYS
APS 12.1.0.2.0 VALID 9.2.0.5.0 11.1.0.7.0 SYS
CATALOG 12.1.0.2.0 VALID 9.2.0.5.0 9.2.0.5.0 SYS
CATJAVA 12.1.0.2.0 VALID 9.2.0.5.0 11.1.0.7.0 SYS
CATPROC 12.1.0.2.0 VALID 9.2.0.5.0 11.1.0.7.0 SYS
CONTEXT 12.1.0.2.0 VALID 9.2.0.5.0 11.1.0.7.0 CTXSYS
JAVAVM 12.1.0.2.0 VALID 9.2.0.5.0 11.1.0.7.0 SYS
ORDIM 12.1.0.2.0 VALID 9.2.0.5.0 11.1.0.7.0 ORDSYS
RAC 12.1.0.2.0 OPTION OFF 9.2.0.5.0 11.1.0.7.0 SYS
SDO 12.1.0.2.0 VALID 9.2.0.5.0 11.1.0.7.0 MDSYS
XDB 12.1.0.2.0 VALID 10.2.0.1.0 11.1.0.7.0 XDB
XML 12.1.0.2.0 VALID 9.2.0.7.0 11.1.0.7.0 SYS
XOQ 12.1.0.2.0 VALID 9.2.0.5.0 11.1.0.7.0 SYS
Review the information before upgrading.
12. To help you keep track of your tablespace allocations, the following
AUTOEXTEND tablespaces are expected to successfully EXTEND during the
upgrade process.
Min Size
Tablespace Size For Upgrade
---------- ---------- -----------
SYSAUX 684 MB 790 MB
Minimum tablespace sizes for upgrade are estimates.
13. Consider removing the following deprecated initialization parameters.
Parameter
---------
sec_case_sensitive_logon
These deprecated parameters probably will be obsolete in a future release.
14. Check the Oracle Backup and Recovery User's Guide for information on how
to manage an RMAN recovery catalog schema.
If you are using a version of the recovery catalog schema that is older
than that required by the RMAN client version, then you must upgrade the
catalog schema.
It is good practice to have the catalog schema the same or higher version
than the RMAN client version you are using.
15. Here is a count of invalid objects by Oracle-maintained users:
Oracle-Maintained User Name Number of INVALID Objects
--------------------------- -------------------------
None None
Review the information before upgrading.
16. Here is a count of invalid objects by Application users:
Application User Name Number of INVALID Objects
--------------------------- -------------------------
APPS 11
Review the information before upgrading.
ORACLE GENERATED FIXUP SCRIPT
=============================
All of the issues in database FBS
which are identified above as BEFORE UPGRADE "(AUTOFIXUP)" can be resolved by
executing the following
SQL>@/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/preupgrade_fi
xups.sql
=============
AFTER UPGRADE
=============
REQUIRED ACTIONS
================
None
RECOMMENDED ACTIONS
===================
17. (AUTOFIXUP) If you use the -T option for the database upgrade, then run
$ORACLE_HOME/rdbms/admin/utluptabdata.sql after the upgrade is complete,
to VALIDATE and UPGRADE any user tables affected by changes to
Oracle-Maintained types.
There are user tables dependent on Oracle-Maintained object types.
If the -T option is used to set user tablespaces to READ ONLY during the
upgrade, user tables in those tablespaces, that are dependent on
Oracle-Maintained types, will not be automatically upgraded. If a type is
evolved during the upgrade, any dependent tables need to be re-validated
and upgraded to the latest type version AFTER the database upgrade
completes.
18. Upgrade the database time zone file using the DBMS_DST package.
The database is using time zone file version 18 and the target 19 release
ships with time zone file version 32.
Oracle recommends upgrading to the desired (latest) version of the time
zone file. For more information, refer to "Upgrading the Time Zone File
and Timestamp with Time Zone Data" in the 19 Oracle Database
Globalization Support Guide.
19. Recreate directory objects to remove any symbolic links from directory
paths. To identify paths that contain symbolic links before upgrading,
use OS commands like UNIX file or WINDOWS dir. After upgrading, run
$ORACLE_HOME/rdbms/admin/utldirsymlink.sql to identify directory objects
with symbolic links in the path.
Found 13 user directory objects to be checked: APPS_DATA_FILE_DIR,
AW_DIR, CSR_XML_TOP, EBS_DB_DIR_UTIL, EBS_UTL_FILE_DIR_6206439720440,
EBS_UTL_FILE_DIR_6897740124995, ECX_UTL_LOG_DIR_OBJ,
ECX_UTL_XSLT_DIR_OBJ, FND_DIAG_DIR, IDR_DIR, ODPDIR, PREUPG_OUTPUT_DIR,
TIMEZDIF_DIR.
Starting in Release 18c, symbolic links are not allowed in directory
object paths used with BFILE data types, the UTL_FILE package, or
external tables.
20. (AUTOFIXUP) Gather dictionary statistics after the upgrade using the
command:
EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;
Oracle recommends gathering dictionary statistics after upgrade.
Dictionary statistics provide essential information to the Oracle
optimizer to help it find efficient SQL execution plans. After a database
upgrade, statistics need to be re-gathered as there can now be tables
that have significantly changed during the upgrade or new tables that do
not have statistics gathered yet.
21. Gather statistics on fixed objects after the upgrade and when there is a
representative workload on the system using the command:
EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
This recommendation is given for all preupgrade runs.
Fixed object statistics provide essential information to the Oracle
optimizer to help it find efficient SQL execution plans. Those
statistics are specific to the Oracle Database release that generates
them, and can be stale upon database upgrade.
For information on managing optimizer statistics, refer to the 12.1.0.2
Oracle Database SQL Tuning Guide.
INFORMATION ONLY
================
22. Check the Oracle documentation for the identified components for their
specific upgrade procedure.
The database upgrade script will not upgrade the following Oracle
components: OLAP Catalog
The Oracle database upgrade script upgrades most, but not all Oracle
Database components that may be installed. Some components that are not
upgraded may have their own upgrade scripts, or they may be deprecated or
obsolete.
ORACLE GENERATED FIXUP SCRIPT
=============================
All of the issues in database FBS
which are identified above as AFTER UPGRADE "(AUTOFIXUP)" can be resolved by
executing the following
SQL>@/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/postupgrade_f
ixups.sql
==================
PREUPGRADE SUMMARY
==================
/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/preupgrade.log
/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/preupgrade_fixups.sql
/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/postupgrade_fixups.sql
Execute fixup scripts as indicated below:
Before upgrade:
Log into the database and execute the preupgrade fixups
@/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/preupgrade_fixups.sql
After the upgrade:
Log into the database and execute the postupgrade fixups
@/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/postupgrade_fixups.sql
Preupgrade complete: 2025-02-14T16:38:38
Based on recommendation perform the action to fix pre-upgrade issues.
Re-run Preupgrade to check any issues left.
Also, Execute the pre-upgrade fixup script.
[oracle@fbstest ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 12.1.0.2.0 Production on Mon Apr 12 06:57:44 2021
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SYS@FBS> @/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/preupgrade_fixups.sql
Executing Oracle PRE-Upgrade Fixup Script
Auto-Generated by: Oracle Preupgrade Script
Version: 19.0.0.0.0 Build: 13
Generated on: 2025-02-14 16:38:17
For Source Database: FBS
Source Database Version: 12.1.0.2.0
For Upgrade to Version: 19.0.0.0.0
Preup Preupgrade
Action Issue Is
Number Preupgrade Check Name Remedied Further DBA Action
------ ------------------------ ---------- --------------------------------
1. purge_recyclebin YES None.
2. parameter_obsolete NO Manual fixup recommended.
3. invalid_objects_exist NO Manual fixup recommended.
4. amd_exists NO Manual fixup recommended.
5. duplic_sys_system_objs NO Manual fixup recommended.
6. exclusive_mode_auth NO Manual fixup recommended.
7. olap_page_pool_size NO Manual fixup recommended.
8. case_insensitive_auth NO Manual fixup recommended.
9. mv_refresh NO Manual fixup recommended.
10. underscore_events NO Informational only.
Further action is optional.
11. component_info NO Informational only.
Further action is optional.
12. tablespaces_info NO Informational only.
Further action is optional.
13. parameter_deprecated NO Informational only.
Further action is optional.
14. rman_recovery_version NO Informational only.
Further action is optional.
15. invalid_ora_obj_info NO Informational only.
Further action is optional.
16. invalid_app_obj_info NO Informational only.
Further action is optional.
The fixup scripts have been run and resolved what they can. However,
there are still issues originally identified by the preupgrade that
have not been remedied and are still present in the database.
Depending on the severity of the specific issue, and the nature of
the issue itself, that could mean that your database is not ready
for upgrade. To resolve the outstanding issues, start by reviewing
the preupgrade_fixups.sql and searching it for the name of
the failed CHECK NAME or Preupgrade Action Number listed above.
There you will find the original corresponding diagnostic message
from the preupgrade which explains in more detail what still needs
to be done.
PL/SQL procedure successfully completed.
Ignore These
3.24 Upgrade the database instance
Invoke DBUA using the following command. The keep events parameter allows events in the preupgraded database to be enabled during the upgrade.
In Oracle Database 19c, the DMSYS schema is no longer used. The Data Mining option is installed in the SYS schema. The Oracle 19c pre-upgrade tool has been extended to include a warning that the DMSYS schema should be dropped. If this warning is reported, it is recommended to drop the schema. Removing the DMSYS schema has no effect on the functioning of Data Mining.
Disregard warnings related to Network ACLs. AutoConfig manages all the Oracle E-Business Suite Network ACLs.
When upgrading all statistics tables, note that Oracle E-Business Suite has only one statistics table (APPLSYS.FND_STATTAB) that needs to be upgraded.
Make sure 12c db entry is present in /etc/oratab. Open GUI and run below command
Source 19c Enviornment
$ORACLE_HOME/bin/dbua -keepEvents
Follow as per the screen below. Note I have already fixed the pre-upgrade recommendations in earlier steps, so will ignore them in this dbua screen.
Database upgrade has been completed successfully, and the database is ready to use.
SQL> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
3.25 Run the Post Upgrade Script generated during the Pre-Upgrade Steps.
Source 19c Environment
. 19c.env
export ORACLE_SID=FBS
SQL> @/u01/app/FBS/db/tech_st/12.1.0/cfgtoollogs/FBS/preupgrade/postupgrade_fixups.sql
3.26 Post-Upgrade Tasks
Source 19c Environment
. 19c.env
export ORACLE_SID=FBS
There are few important post-upgrade miscellaneous tasks that need to be performed.
If you previously had the SEC_CASE_SENSITIVE_LOGON initialization parameter set to FALSE, re-enable the parameter.
In case spfile is not there then create spfile and restart database.
SQL> alter system set SEC_CASE_SENSITIVE_LOGON=false;
System altered.
SQL> alter trigger SYSTEM.EBS_LOGON compile;
Trigger altered.
SQL> alter system set compatible='19.0.0' scope=spfile;
System altered.
Restart DB
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 2147481648 bytes
Fixed Size 8898608 bytes
Variable Size 520093696 bytes
Database Buffers 1593835520 bytes
Redo Buffers 24653824 bytes
Database mounted.
Database opened.
SQL> show parameter compatible
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
compatible string 19.0.0
noncdb_compatible boolean FALSE
3.27 Run DataPatch
Source 19c Environment
. 19c.env
export ORACLE_SID=FBS
[oracle@fbstest bin]$ $ORACLE_HOME/OPatch/datapatch
SQL Patching tool version 19.26.0.0.0 Production on Sat Feb 15 09:39:44 2025
Copyright (c) 2012, 2025, Oracle. All rights reserved.
Log file for this invocation: /u01/app/FBS/db/cfgtoollogs/sqlpatch/sqlpatch_454679_2025_02_15_09_39_44/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:
Interim patch 37102264 (OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264)):
Binary registry: Installed
SQL registry: Applied successfully on 14-FEB-25 05.55.19.700399 PM
Current state of release update SQL patches:
Binary registry:
19.26.0.0.0 Release_Update 250118124854: Installed
SQL registry:
Applied 19.26.0.0.0 Release_Update 250118124854 successfully on 14-FEB-25 05.55.19.651687 PM
Adding patches to installation queue and performing prereq checks...done
Installation queue:
No interim patches need to be rolled back
No release update patches need to be installed
No interim patches need to be applied
SQL Patching tool complete on Sat Feb 15 09:40:00 2025
3.28 Connect to sysdba and run below
Source 19c Environment
. 19c.env
export ORACLE_SID=FBS
SQL> @?/rdbms/admin/dbmsxdbschmig.sql
SQL> @?/rdbms/admin/prvtxdbschmig.plb
3.29 Run ADgrants
Source 19c Environment
. 19c.env
export ORACLE_SID=FB
Copy adgrants.sql from $APPL_TOP/admin to DB tier and run it
[oracle@fbstest admin]$ sqlplus '/as sysdba'
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 12 18:33:09 2021
Version 19.10.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.10.0.0.0
SQL> @adgrants.sql apps
Note: When running adgrants.sql, you may get ORA-00942 errors. These are caused by adgrants.sql trying to create grants on non-existent objects. The errors can be ignored.
The following ERRORS and WARNINGS have been encountered during this adgrants session:
TIME_STAMP SESSION_ID LOG_MODULE LOG_LEVEL
-------------------- ---------- ------------------------------------------ ----------
LOG_MESSAGE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2022/03/20 12:58:52 20 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE WARNING
ORA-04042: procedure, function, package, or package body does not exist, SQL: grant EXECUTE on "DBMS_SCHEMA_COPY" to "SYSTEM" with grant option
2022/03/20 12:58:52 20 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE WARNING
ORA-04042: procedure, function, package, or package body does not exist, SQL: grant EXECUTE on "DBMS_SCHEMA_COPY" to "APPS"
2022/03/20 12:58:59 20 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE WARNING
ORA-00942: table or view does not exist, SQL: grant WRITE on "DIRECTORY FND_DIAG_DIR" to "APPS"
2022/03/20 12:58:59 20 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE WARNING
ORA-00942: table or view does not exist, SQL: grant READ on "DIRECTORY FND_DIAG_DIR" to "APPS"
Grants given by this script have been written to the ad_zd_logs table.
You can run $AD_TOP/sql/ADZDSHOWLOG.sql to produce a report showing these grants.
3.30 Grant create procedure privilege on CTXSYS
Source 19c Environment
. 19c.env
export ORACLE_SID=FBS
Copy $AD_TOP/patch/115/sql/adctxprv.sql from the administration server node to the database server node. Use SQL*Plus to connect to the database as apps and run the script using the following command:
$ sqlplus apps/<apps password> @adctxprv.sql <SYSTEM password> CTXSYS
[oracle@fbstest admin]$ sqlplus apps/apps @adctxprv.sql manager CTXSYS
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Feb 15 09:45:58 2025
Version 19.26.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Last Successful login time: Fri Feb 14 2025 16:32:33 +03:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.26.0.0.0
Connecting to SYSTEM
Connected.
PL/SQL procedure successfully completed.
Commit complete.
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.26.0.0.0
3.31 Compile invalid objects
Source 19c Environment
. 19c.env
export ORACLE_SID=FBS
Use SQL*Plus to connect to the database as SYSDBA and run the $ORACLE_HOME/rdbms/admin/utlrp.sql script to compile invalid objects.
$ sqlplus "/ as sysdba" @$ORACLE_HOME/rdbms/admin/utlrp.sql
SQL> select count(*) from dba_objects where status='INVALID';
COUNT(*)
----------
17
3.32 Grant datastore access
Source 19c Environment
. 19c.env
export ORACLE_SID=FBS
Use SQL*Plus to connect to the database as SYSDBA and run the following command:
$ sqlplus "/ as sysdba"
SQL> grant text datastore access to public;
Grant succeeded.
1.33 Gather statistics for the SYS schema
Source 19c Environment
. 19c.env
export ORACLE_SID=FBS
Copy $APPL_TOP/admin/adstats.sql from the administration server node to the database server node. Note that adstats.sql has to be run in restricted mode. Use SQL*Plus to connect to the database as SYSDBA and use the following commands to run adstats.sql in restricted mode:
$ sqlplus "/ as sysdba"
SQL> alter system enable restricted session;
System altered.
SQL> @adstats.sql
Connected.
--------------------------------------------------
--- adstats.sql started at 2025-02-15 10:05:58 ---
Checking for the DB version and collecting statistics ...
PL/SQL procedure successfully completed.
------------------------------------------------
--- adstats.sql ended at 2025-02-15 10:13:18 ---
Commit complete.
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.26.0.0.0
$ sqlplus "/ as sysdba"
SQL> alter system disable restricted session;
System altered.
SQL> exit
1.34 Create the new MGDSYS schema (Conditional)-Not required by me
Source 19c Environment
. 19c.env
export ORACLE_SID=FBS
If you upgraded from a database version prior to Oracle 12c, use SQL*Plus to connect to the database as SYSDBA and run the $ORACLE_HOME/rdbms/admin/catmgd.sql script. This creates the new MGDSYS schema.
$ sqlplus "/ as sysdba" @?/rdbms/admin/catmgd.sql
1.35 Convert Database to Multitenant Architecture or PDB
There are two databases that are associated with the 19c Oracle home, the CDB(cdbfbs) and the non-CDB database (FBS). Moreover, the non-CDB database will be migrated to the PDB database. Set the appropriate environment variables to connect to the appropriate database.
Only the txkSetCfgCDB.env/cmd file in the $ORACLE_HOME/appsutil directory is necessary. It sets certain environment variables. However, it does not distinguish between the different databases in the 19c Oracle home. It is used mainly to complete the steps in this subsection. The following steps assume that a new window is brought up every time. However, there is no need to run txkSetCfgCDB.env/cmd twice in the same window. So, you may skip running the txkSetCfgCDB.env/cmd script if it has already been run on the particular terminal you are using.
After running the txkPostPDBCreationTasks.pl, additional environment files are created so that connecting to the database is more convenient. Load the proper environment variables and connect to the database by performing the following steps:
- For the non-CDB database, source the $ORACLE_HOME/<non-CDB SID>_<HOST>.env/cmd file. Then, run sqlplus <user>/<password>@<non-CDB SID>. (The environment file was created during the earlier upgrade steps)
- For the CDB database, source the $ORACLE_HOME/<CDB SID>_<HOST>.env/cmd file. Then, run sqlplus <user>/<password> or connect as SYSDBA.
- 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 on Windows platforms, to connect as SYSDBA, source the $ORACLE_HOME/<PDB SID>_<HOST>.cmd file. Then, connect as SYSDBA.
- For the PDB database, to connect to other users, source the $ORACLE_HOME/<PDB SID>_<HOST>.env/cmd file. Then, run sqlplus <user>/<password>@<PDB SID>.
Note: The txkOnPremPrePDBCreationTasks.pl script shuts down the non-CDB database. Do not manually bring up the non-CDB database. There will be no access to the non-CDB database until after the migration of the non-CDB database to the PDB.
make sure all temp, sys, the system has sufficient free space.
non-CDB database (FBS) has to be kept down.
1.35.1 Create the PDB descriptor
$ cd $ORACLE_HOME/appsutil
$ . ./txkSetCfgCDB.env dboraclehome=<full path of 19c ORACLE_HOME>
$ export ORACLE_SID=<source SID>
$ cd $ORACLE_HOME/appsutil/bin
$ perl txkOnPremPrePDBCreationTasks.pl -dboraclehome=<ORACLE_HOME> \
-outdir=<ORACLE_HOME>/appsutil/log -appsuser=<apps user> -dbsid=<source SID>
[oracle@fbstest tmp]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ . ./txkSetCfgCDB.env dboraclehome=/u01/app/FBS/db/tech_st/19c
Oracle Home being passed: /u01/app/FBS/db/tech_st/19c
[oracle@fbstest appsutil]$ export ORACLE_SID=FBS
[oracle@fbstest appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@fbstest 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
Enter the APPS Password:
*** ALL THE FOLLOWING FILES ARE REQUIRED FOR RESOLVING RUNTIME ERRORS
*** Log File = /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/txkOnPremPrePDBCreationTasks.log
Program : started @ Sat Feb 15 10:20:54 2025
*** Log File = /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/txkOnPremPrePDBCreationTasks.log
Script Name : txkOnPremPrePDBCreationTasks.pl
Script Version : 120.0.12010000.11
Started : Sat Feb 15 10:20:54 EAT 2025
Log File : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/txkOnPremPrePDBCreationTasks.log
-----------
Values used
-----------
DB Oracle Home : /u01/app/FBS/db/tech_st/19c
OUT Directory : /u01/app/FBS/db/tech_st/19c/appsutil/log
Skip DB shutdown : No
EBS SID : FBS
APPS Schema Username : apps
Is RAC? : No
Logical Hostname :
=========================
Validating oracle home...
=========================
Oracle Home: /u01/app/FBS/db/tech_st/19c exists.
===========================
Validating out directory...
===========================
Out directory: /u01/app/FBS/db/tech_st/19c/appsutil/log exists.
============================
Inside getDBHostDetails()...
============================
DB Hostname : fbstest
DB Domain : finsys.co.ke
Logical hostname is not passed, hence using physical hostname details.
Logical hostname: fbstest.finsys.co.ke
==========================
Inside setContextName()...
==========================
CONTEXT_NAME: FBS_fbstest
============================
Inside setFileLocations()...
============================
=====================
Inside getDBName()...
=====================
Generating SQL file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/get_db_name.sql
SQL output file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/get_db_name.out
Spool File : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/spool_get_db_name.log
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus /nolog @/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/get_db_name.sql
==============================
Inside searchFileContents()...
==============================
log_file: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/get_db_name.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
Removing the file: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/get_db_name.sql
EXIT STATUS: 0
Getting the value of DB Name...
db_name: FBS
PDB_DESC_XML: /u01/app/FBS/db/tech_st/19c/dbs/FBS_PDBDesc.xml
INITPARAM_FILE: /u01/app/FBS/db/tech_st/19c/dbs/FBS_initparam.sql
DATATOP_FILE: /u01/app/FBS/db/tech_st/19c/dbs/FBS_datatop.txt
========================
Inside getDBVersion()...
========================
DB_VERSION = db190
=============================
Shutting down the database...
=============================
Shutdown mode : IMMEDIATE
Generating SQL file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.sql
SQL output file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus /nolog @/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.sql
==============================
Inside searchFileContents()...
==============================
log_file: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
SQL execution went through successfully.
LOG FILE: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.out.
========================
Starting the database...
========================
Startup mode : MOUNT
Generating SQL file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/startup_MOUNT.sql
SQL output file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/startup_MOUNT.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus /nolog @/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/startup_MOUNT.sql
==============================
Inside searchFileContents()...
==============================
log_file: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/startup_MOUNT.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
SQL execution went through successfully.
LOG FILE: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/startup_MOUNT.out.
==================================
Inside createPDBDescriptorXML()...
==================================
==================================
Inside backupPDBDescriptorXML()...
==================================
File /u01/app/FBS/db/tech_st/19c/dbs/FBS_PDBDesc.xml does not exist.
File /u01/app/FBS/db/tech_st/19c/dbs/FBS_PDBDesc.xml does not exist.
Generating SQL file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/create_pdb_desc_xml.sql
SQL output file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/create_pdb_desc_xml.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus /nolog @/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/create_pdb_desc_xml.sql
==============================
Inside searchFileContents()...
==============================
log_file: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/create_pdb_desc_xml.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
PDB Descriptor XML /u01/app/FBS/db/tech_st/19c/dbs/FBS_PDBDesc.xml created successfully.
LOG FILE: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/create_pdb_desc_xml.out.
=============================
Shutting down the database...
=============================
Shutdown mode : IMMEDIATE
Generating SQL file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.sql
SQL output file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus /nolog @/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.sql
==============================
Inside searchFileContents()...
==============================
log_file: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
SQL execution went through successfully.
LOG FILE: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_PRE_PDB_Sat_Feb_15_10_20_51_2025/shutdown_IMMEDIATE.out.
****************************************************************************************
* *
* IMPORTANT NOTE: DO NOT START THE DB TILL THE DATA FILES ARE MIGRATED *
* *
* IF DB IS STARTED, THEN PDB DESCRIPTOR XML GENERATED BECOMES INVALID *
* *
****************************************************************************************
Exiting from the script.
Ended: Sat Feb 15 10:22:02 EAT 2025
1.35.2 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:
Port Number Being Passed is for CDB database.
$ cd $ORACLE_HOME/appsutil
$ . ./txkSetCfgCDB.env dboraclehome=<full path of ORACLE_HOME>
$ export ORACLE_SID=<CDB SID>
$ sqlplus "/ as sysdba"
SQL> startup nomount;
SQL> @$ORACLE_HOME/dbs/<source SID>_initparam.sql
SQL> alter system set LOCAL_LISTENER="<hostname>:<cdb port number>" scope=both;
SQL> shutdown;
SQL> startup;
[oracle@fbstest dbs]$ pwd
/u01/app/FBS/db/tech_st/12.1.0/dbs
[oracle@fbstest dbs]$ cp FBS_initparam.sql FBS_datatop.txt /u01/app/FBS/db/tech_st/19c/dbs/
Remove line from FBS_initparam.sql
alter system set CONNECTION_BROKERS="((TYPE=DEDICATED)(BROKERS=1)), ((TYPE=EMON)(BROKERS=1))" scope=spfile;
[oracle@fbstest bin]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /u01/app/FBS/db/tech_st/19c
[oracle@fbstest appsutil]$ export ORACLE_SID=cdbfbs
[oracle@fbstest appsutil]$ sqlplus "/ as sysdba"
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Feb 15 10:27:13 2025
Version 19.26.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 2147482336 bytes
Fixed Size 9136864 bytes
Variable Size 570425344 bytes
Database Buffers 1560281088 bytes
Redo Buffers 7639040 bytes
SQL> @$ORACLE_HOME/dbs/FBS_initparam.sql
SQL> alter system set LOCAL_LISTENER="fbstest:1531" scope=both;
System altered.
SQL> shutdown;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 1073740992 bytes
Fixed Size 9186496 bytes
Variable Size 427819008 bytes
Database Buffers 624951296 bytes
Redo Buffers 11784192 bytes
Database mounted.
Database opened.
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
CDBFBS READ WRITE
1.35.3 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
[oracle@fbstest dbs]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /u01/app/FBS/db/tech_st/19c
[oracle@fbstest appsutil]$ export ORACLE_SID=cdbfbs
[oracle@fbstest appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@fbstest bin]$ perl txkChkPDBCompatability.pl -dboraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -cdbsid=cdbfbs -pdbsid=FBS -servicetype=onpremise
*** ALL THE FOLLOWING FILES ARE REQUIRED FOR RESOLVING RUNTIME ERRORS
*** Log File = /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/txkChkPDBCompatability.log
Program : started @ Sat Feb 15 10:36:18 2025
*** Log File = /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/txkChkPDBCompatability.log
Script Name : txkChkPDBCompatability.pl
Script Version : 120.0.12010000.5
Started : Sat Feb 15 10:36:18 EAT 2025
Log File : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/txkChkPDBCompatability.log
-----------
Values used
-----------
Database Oracle Home : /u01/app/FBS/db/tech_st/19c
CDB SID : cdbfbs
PDB SID : FBS
OUT Directory : /u01/app/FBS/db/tech_st/19c/appsutil/log
Service Type : onpremise
=========================
Validating oracle home...
=========================
Oracle Home: /u01/app/FBS/db/tech_st/19c exists.
===========================
Validating out directory...
===========================
Oracle Home: /u01/app/FBS/db/tech_st/19c/appsutil/log exists.
=============================
Validating DB service type...
=============================
Service Type: onpremise
Service type is valid.
============================
Inside setFileLocations()...
============================
PDB_DESC_XML: /u01/app/FBS/db/tech_st/19c/dbs/FBS_PDBDesc.xml
**** Setting ORACLE_SID to cdbfbs
========================
Inside getDBVersion()...
========================
DB_VERSION = db190
=================================
Inside checkPDBCompatibility()...
=================================
File /u01/app/FBS/db/tech_st/19c/dbs/FBS_PDBDesc.xml exists.
Generating SQL file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/create_pdb_compatible.sql
SQL output file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/create_pdb_compatible.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus /nolog @/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/create_pdb_compatible.sql
==============================
Inside searchFileContents()...
==============================
log_file: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/create_pdb_compatible.out
pattern: ERROR
=============================
Could not find the pattern...
=============================
EXIT STATUS: 0
PDB compatability check executed successfully.
LOG FILE: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/create_pdb_compatible.out.
====================================
Inside checkPDBPluginViolations()...
====================================
File /u01/app/FBS/db/tech_st/19c/dbs/FBS_PDBDesc.xml exists.
Generating SQL file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/check_pdb_plugin_violations.sql
SQL output file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/check_pdb_plugin_violations.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus /nolog @/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/check_pdb_plugin_violations.sql
==============================
Inside searchFileContents()...
==============================
log_file: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/check_pdb_plugin_violations.out
pattern: ERROR
================
Pattern found...
================
EXIT STATUS: 1
Violations reported for the database 'FBS' to be plugged in. Cannot proceed further.
****************************************************************************************
CHECK THE BELOW LOG FILE FOR VIOLATIONS:
/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/check_pdb_plugin_violations.out
****************************************************************************************
===================================
Inside checkUNDOMgmtViolations()...
===================================
File /u01/app/FBS/db/tech_st/19c/dbs/FBS_PDBDesc.xml exists.
Generating SQL file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/check_undo_mgmt.sql
SQL output file : /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/check_undo_mgmt.out
==========================
Inside executeSQLFile()...
==========================
Executing the SQL...
Execute SYSTEM command : sqlplus /nolog @/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_2025/check_undo_mgmt.sql
==============================
Inside searchFileContents()...
==============================
log_file: /u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_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 'FBS'. Proceed further.
****************************************************************************************
CHECK THE BELOW LOG FILE FOR VIOLATIONS:
/u01/app/FBS/db/tech_st/19c/appsutil/log/TXK_CHK_PDB_COMPTABILITY_Sat_Feb_15_10_36_18_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: Sat Feb 15 10:36:18 EAT 2025
Note: Use the same command options for Oracle Cloud Infrastructure Compute environments.
No Voilations found in my enviornment.
Review all warnings and resolve all errors. Do not run noncdb_to_pdb.sql as that will be run by txkCreatePDB.pl in the next step.
1.35.4 Create the PDB
Load the environment variables by running the following commands.
Make sure to extend tablespaces on CDB to have sufficient space.
$ cd $ORACLE_HOME/appsutil
$ . ./txkSetCfgCDB.env dboraclehome=<full path of ORACLE_HOME>
$ cd $ORACLE_HOME/appsutil/bin
$ perl txkCreatePDB.pl -dboraclehome=<ORACLE_HOME> -outdir=<ORACLE_HOME>/appsutil/log \
-cdbsid=<CDB SID> -pdbsid=<source SID> -dbuniquename=<CDB SID> -servicetype=onpremise
Note: Use the same command options for Oracle Cloud Infrastructure Compute environments.
The PDB datafile location can be the same as the source datafile location.
[oracle@fbstest bin]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /u01/app/FBS/db/tech_st/19c
[oracle@fbstest appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@fbstest bin]$ perl txkCreatePDB.pl -dboraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -cdbsid=cdbfbs -pdbsid=FBS -dbuniquename=cdbfbs -servicetype=onpremise
I am keeping the data top for non-CDB(FBS) and PDB the same on ASM. Make sure you have sufficient space where PDB datafiles will sit
Non-CDB on ASM--+EBS_DATA
PDB on ASM--+EBS_DATA
DATA_TOP_1(In case of file system below)
===========
Enter the non-CDB data top [/oraapps122/DATABASE/FBS/data]:
Enter the corresponding PDB data top [/oraapps122/DATABASE/FBS/data]:
In case of ASM
Number of DATA_TOPs: 2
DATA_TOP_2
===========
Enter the non-CDB data top [+EBS_DATA/FBS/TEMPFILE]:
Enter the corresponding PDB data top [+EBS_DATA/FBS/TEMPFILE]:
DATA_TOP_1
===========
Enter the non-CDB data top [+EBS_DATA/FBS/DATAFILE]:
Enter the corresponding PDB data top [+EBS_DATA/FBS/DATAFILE]:
1.35.5 Run the post PDB script
Source 19c
export ORACLE_SID=cdbfbs
sqlplus '/as sysdba'
alter user system identified by OraHim#123;
change CDB system password
Use the following commands to run the txkPostPDBCreationTasks.pl script. This updates the PDB configuration.
$ cd $ORACLE_HOME/appsutil
$ . ./txkSetCfgCDB.env dboraclehome=<full path of ORACLE_HOME>
$ perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl -dboraclehome=<ORACLE_HOME> \
-outdir=<ORACLE_HOME>/appsutil/log -cdbsid=<CDB SID> -pdbsid=<PDB SID> \
-appsuser=apps -dbport=<CDB TNS port number> -servicetype=onpremise
[oracle@fbstest bin]$ cd $ORACLE_HOME/appsutil
[oracle@fbstest appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /u01/app/FBS/db/tech_st/19c
[oracle@fbstest 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
Enter the APPS Password:
Enter the CDB SYSTEM Password:
Give CDB System password with password complexity.
Password must contain at least 1 special character
Note: Use the same command options for Oracle Cloud Infrastructure Compute environments.
This step also runs the autoconfig at DB level.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FBS READ WRITE NO
1.35.6 Change Initialization Parameters
Use the following sections in My Oracle Support Knowledge Document 396009.1, Database Initialization Parameter Settings for Oracle E-Business Suite Release 12, as a guideline in modifying your initialization parameters.
[oracle@fbstest dbs]$ export ORACLE_SID=cdbfbs
[oracle@fbstest 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;
1.36 Run Autoconfig on the Application tier
Add the CDB entry in tnsnames.ora of Application
<TWO_TASK> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=tcp)(HOST=<hostname>.<domain>)(PORT=<port number>))
(CONNECT_DATA = (SERVICE_NAME=ebs_<PDB SID>)(INSTANCE_NAME=<CDB SID>))
)
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 TNS entry.
cdbfbs =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=tcp)(HOST=fbstest.co.ke)(PORT=1532))
(CONNECT_DATA = (SERVICE_NAME=ebs_FBS)(INSTANCE_NAME=cdbfbs))
)
Update the following values in the context file of every Applications tier server node.
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
1. Source the PDB environment file using the following command:
$ORACLE_HOME/<pdb_name>_.env
2. Manually add the specified $APPLPTMP variable directory location of apps tier node in text file named <DB_NAME>_utlfiledir.txt located in the database tier <ORACLE_HOME>/dbs directory .
3. Then run
perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=setUtlFileDir -skipdirvalidation=Yes
To identify the allowable directories for s_applptmp use, connect to the Oracle E-Business Suite database instance as the apps user (on PDB)and run the following query:
SQL> select value from v$parameter where name='utl_file_dir';
Run AutoConfig on both patch and run APPL_TOPs using the following command.
$INST_TOP/admin/scripts/adautocfg.sh
Note: When running AutoConfig on the patch file system APPL_TOP, ignore all errors.
1.37 Recreate custom database links (Conditional)
If the Oracle Net listener in the 19c Oracle home is defined differently to the one used by the old Oracle home, you must recreate any custom self-referential database links that exist in the Oracle E-Business Suite database instance. To check for the existence of database links, use SQL*Plus on the database server node to connect to the database instance as apps and run the following query:
$ sqlplus apps/<apps password>
SQL> select db_link from all_db_links;
The EDW_APPS_TO_WH and APPS_TO_APPS database links, if they exist, should have been updated with the new port number by AutoConfig.
If you have custom self-referential database links in the database instance, use the following commands to drop and recreate them:
$ sqlplus apps/<apps password>
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>)))';
1.38 Start Application Services and Validate the Database Version
Finally this completes our upgrade to 19c
1.29 Working with EBS R12 on Multitenant Architecture 19c DB (CDB/PDB)
1.41.1 How does Oracle E-Business Suite support the multitenant architecture?
Oracle E-Business Suite supports the multitenant architecture with a single CDB containing a single pluggable Oracle E-Business Suite database (PDB) in the following combinations:
- Oracle E-Business Suite 12.2.3 and later with Oracle Database 19c on-premises
- Oracle E-Business Suite 12.2.3 and later with Oracle Database 12cR1 VM DB Systems or Oracle Database 12cR1 in an Exadata DB System
- Oracle E-Business Suite 12.1.3 with Oracle Database 19c on-premises
- Oracle E-Business Suite 12.1.3 with Oracle Database 12cR1 VM DB Systems or Oracle Database 12cR1 in an Exadata DB System
1.39.2 How many PDBs are supported in a CDB that is running Oracle E-Business Suite?
At present, Oracle E-Business Suite supports a single PDB (single tenant) in a CDB.
- Are there additional licensing requirements?
Oracle E-Business Suite currently supports a single pluggable database (single tenant) with a CDB architecture (see previous question). A single PDB in a CDB does not require licensing the Oracle Multitenant database option
1.39.3 How do I source the Oracle E-Business Suite CDB environment?
Oracle E-Business Suite database CDB environment files are located in the database ORACLE_HOME. Run the following commands:
$ cd $ORACLE_HOME
$ source <CDB_NAME>_<NODE_NAME>.env
1.39.4 How do I connect to the Oracle E-Business Suite CDB as SYSDBA?
Source the CDB environment file in the ORACLE_HOME and then use SQL*Plus to connect to the CDB as SYSDBA:
$ cd $ORACLE_HOME
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
1.39.5 How do I start the CDB that hosts the Oracle E-Business suite PDB?
You will use either SQL*Plus or srvctl, depending on whether you are using a single-node instance or Oracle RAC system.
- On a single-node instance, run the following commands:
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> startup; - On an Oracle RAC system, run the following commands:
$ source <CDB_NAME>_<NODE_NAME>.env
$ srvctl start database -d <CDB name>
1.39.6 How do I shut down the CDB that hosts the Oracle E-Business Suite PDB?
You will use either SQL*Plus or srvctl, depending on whether you are using a single-node instance or Oracle RAC system.
- On a single-node instance, run the following commands:
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> shutdown normal; - On an Oracle RAC system, run the following commands:
$ source <CDB_NAME>_<NODE_NAME>.env
$ srvctl stop database -d <CDB name>
- How do I clone an Oracle E-Business Suite environment with a CDB?
In on-premises environments, the Oracle E-Business Suite Rapid Clone utility can be used to clone both the CDB and PDB together.
1.39.7 How do I source the Oracle E-Business Suite PDB environment?
The Oracle E-Business Suite database PDB environment files are located in the database ORACLE_HOME:
$ cd $ORACLE_HOME
$ source <PDB_NAME>_<NODE_NAME>.env
1.39.8 How do I connect to the Oracle E-Business Suite PDB as SYSDBA?
Source the CDB environment file, export the Oracle E-Business Suite PDB name, then use SQL*Plus to connect to the PDB as SYSDBA:
$ source <CDB_NAME>_<NODE_NAME>.env
$ export ORACLE_PDB_SID=<PDB NAME>;
$ sqlplus "/ as sysdba"
1.39.9 How do I open the Oracle E-Business Suite PDB?
Source the CDB environment file, connect to the CDB as SYSDBA, then execute the SQL shown in the example to start the PDB:
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> alter pluggable database <EBS PDB Name> open read write services=all;
1.39.10 How do I close the Oracle E-Business Suite PDB?
Source the CDB environment, connect to the CDB as SYSDBA, then execute the SQL shown in the example to close the PDB:
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> alter pluggable database <EBS PDB Name> close immediate;
There is also the option to save the state of the PDB. Oracle will then preserve the mode when you restart the CDB. You can find the current saved state by querying DBA_PDB_SAVED_STATES:
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> alter pluggable database <EBS PDB Name> save state;
SQL> alter pluggable database <EBS PDB Name> close immediate;
1.39.11 How do I find Oracle E-Business Suite PDB information and status?
The following SQL returns the values for the con_id, con_name, open mode, restricted values of all your PDBs.
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> show pdbs;
Alternatively, you could use the following SQL to return only the values for name and open mode:
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> select name, open_mode from v$pdbs;
1.39.12 How do I access the Oracle E-Business Suite PDB while logged into the CDB?
Use the following command to set the environment, show the PDB name, and then connect to that PDB:
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> show pdbs;
SQL> alter session set container=”PDBNAME”;
1.39.13 Where do I look for PDB errors if I encounter a problem?
Source the environment and then review any plugin violations, as shown in the following example:
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> select name, cause, message, status from PDB_PLUG_IN_VIOLATIONS;
1.39.14 Can I unplug an Oracle E-Business Suite PDB from one CDB and plug it into another CDB?
At present, there is no supported procedure to unplug an Oracle E-Business Suite PDB and plug (relocate or clone) it to another CDB.
1.39.15 What parameters in the Oracle E-Business Suite database context file support the multitenant architecture?
Context variables used to support the multitenant architecture are as follows:
- s_pluggable_database: This variable is set to TRUE in a multitenant database.
- s_pdb_name: This variable is set to PDB name.
- s_cdb_name: This variable is set to CDB SID.
- s_cdb_unique_name: This variable is set to the DB unique name for the CDB.
- s_dbService: This variable is set to ebs_<PDB name> in a multitenant database.
- s_db_tenancy: This variable is set to multi-tenant in a multitenant database.
- s_cdb_tnsadmin: This variable is set to $ORACLE_HOME/network/admin.
- Before running AutoConfig on the database tier, do I source the PDB environment or CDB environment?
You should always source the Oracle E-Business Suite PDB environment before running AutoConfig. You can do so by running the following commands:
$ cd $ORACLE_HOME
$ source <PDB_NAME>_<NODE_NAME>.env
1.39.16 How do I set up the environment to run an Oracle E-Business Suite Script or SQL session?
Source the Oracle Home <CDB_NAME>_<HOSTNAME>.env and set the PDB environment variable ORACLE_PDB_SID=<PDB_NAME> before running Oracle E-Business Suite programs such as adgrants.sql.
$ source <CDB_NAME>_<NODE_NAME>.env
$ export ORACLE_PDB_SID=<PDB_NAME>
$ sqlplus "/ as sysdba"
1.39.17 How do I run the EBS Technology Codelevel Checker (ETCC) against my Oracle E-Business Suite PDB?
The EBS Technology Codelevel Checker (ETCC) utility provides two scripts to help ensure you have the necessary database and application tier patches installed on your Oracle E-Business Suite Release 12.2 instance.
ETCC extracts environment-related information from the context file (using the location defined in $CONTEXT_FILE), so you need to source the Oracle E-Business Suite PDB environment before you run the database checker script. For OCI-based environments, you also need to add the cloud=y parameter.
Download ETCC as Patch 17537119 from My Oracle Support and unzip it into a working directory. Then proceed with whichever of the following steps applies to you:
- For an on-premises environment, run the commands:
$ source <EBS PDB Name>_<NODE_NAME>.env
$ ./checkDBpatch.sh - For an environment in Oracle Cloud Infrastructure, run the commands:
$ source <EBS PDB Name>_<NODE_NAME>.env
$ ./checkDBpatch.sh cloud=y
1.39.18 How do I list the OPatch inventory for a multitenant database?
You can list the OPatch inventory of a multitenant database in the same way as for non-CDB. Run the following commands:
$ source <CDB_NAME>_<NODE_NAME>.env
$ export PATH=$PATH:$ORACLE_HOME/OPatch
$ opatch lsinventory -detail
1.39.19 How do I set up the environment to install a database patch in an Oracle E-Business Suite multitenant database?
Source the CDB environment and add the OPatch directory to the path, as shown in the following example:
$ source <CDB_NAME>_<NODE_NAME>.env
$ export PATH=$PATH:$ORACLE_HOME/OPatch
Note: Before running datapatch, ensure that the Oracle E-Business Suite PDB is open as datapatch will only apply or roll back SQL fixes for open PDBs.
1.39.20 How do I find the location of the alert log and trace files for my multitenant database?
Each CDB has an associated alert log, which is used to record log information, warnings and alerts about the Oracle E-Business Suite PDB. It is located in the "Diag Trace" of the container database. Also, all PDBs plugged in a given CDB write trace data to the "Diag Trace" of the container database, which can be found by querying v$diag_info dynamic view as in the following example:
$ source <CDB_NAME>_<NODE_NAME>.env
$ sqlplus "/ as sysdba"
SQL> select value from v$diag_info where name = 'Diag Trace';
1.39.21 How do I generate an AWR snapshot report for my pluggable database?
In Oracle Database 12c Release 1, AWR snapshots are only created at the CDB-level (CDB root). This AWR snapshot is for the whole database system in that it contains the statistical information about the CDB as well as all the PDBs in a multitenant environment.
Oracle 19c multitenant supports AWRs at the CDB and PDB level. There are two new views:
- AWR_ROOT view: This shows the AWR data stored only on a CDB root, which are generally equivalent to the DBA_HIST views.
- AWR_PDB view: There are a few PDB-level metrics, but the vast majority are instance-wide statistics that are not shown at this level for security reasons. Hence these will not be flushed in AWR, and will always be shown as 0 in the AWR report.
Use the following commands as a basis to create a snapshot and specify AWR_ROOT or AWR_PDB as appropriate:
$ source <CDB_NAME>_<NODE_NAME>.env
$ export ORACLE_PDB_SID=<PDB NAME>;
$ sqlplus "/ as sysdba"
# Run awrrpt.sql file
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql
...
...
Specify the location of AWR Data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AWR_ROOT - Use AWR data from root (default)
AWR_PDB - Use AWR data from PDB
...
Please also check document for issues after upgrade
References:
19c Database with Oracle E-Business Suite R12 Known Issues & Solutions (Doc ID 2662860.1)
MOS Doc Id. 1594274.1 Install Oracle Database binaries 19c and apply EBS overlay patches as per
Interoperability Notes: Oracle E-Business Suite Release 12.1 with Oracle Database 19c (Doc ID 2580629.1)
MOS (Doc ID 396009.1) Database Initialization Parameters for Oracle E-Business Suite Release 12
(MOS Note 2530665.1) Using Oracle Database 19c RAC Multitenant (Single PDB) with Oracle E-Business Suite Release 12.1
(MOS Note 2554156.1) Export/Import Process for Oracle E-Business Suite Release 12.1 Database Instances Using Oracle Database 19
Oracle E-Business Suite and the Oracle Multitenant Architecture (Doc ID 2567105.1)
No comments:
Post a Comment