Upgrading an Oracle EBS 12.2.10 Database from 12c to 19c
Oracle EBS 12.2 On-Premises databases are now certified with the CDB architecture (multitenant architecture). EBS database will run as a single PDB. In this post I am going to share how to upgrade an EBS database from 12c to 19c.
Current EBS Environment:
Apps : 12.2.10
DB: 12.1.0.2
Server : OEL 7.9
Oracle SID: FUAT
AD and TXK : Delta patch 12 already Applied
ASM 19c GRID Home
DB OS user: oracle
Application OS user: applmgr
GRID OS user: oraasm
Important Information Regarding the Upgrade to Oracle Database 19c
- When upgrading your Oracle E-Business Suite to Oracle Database 19c, your database will be converted to a multitenant architecture, which will consist of a Container Database (CDB) with a single Pluggable Database. Only multitenant architecture database are supported for Oracle E-Business Suite with Oracle Database 19c.
- During the upgrade, you will also perform steps to migrate directories defined for PL/SQL File I/O to database directory objects. This requirement is due to the desupport in Oracle Database 19c of the UTL_FILE_DIR database initialization parameter.
- Oracle Database Release Update 19.3 as well as Release Update 19.5 and later are certified.
- If the products implemented are not supporting 19c then please don't upgrade DB.
Key Checks
SYS@FUAT >select name,open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
FUAT READ WRITE
Custom Patch Location: /labsoft/19cDB_Upgrade_EBS
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;
Steps which I performed:
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@funebs122 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@FUAT >spool hcheck_output.log
SYS@FUAT >@hcheck.sql
PL/SQL procedure successfully completed.
Statement processed.
Complete output is in trace file:
/oraapps122/DATABASE/FUAT/12.1.0/admin/FUAT_funebs122/
diag/rdbms/fuat/FUAT/trace/FUAT_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.
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@funebs122 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@FUAT >update STMT_AUDIT_OPTION_MAP set option#=234
where name ='ON COMMIT REFRESH';
2
1 row updated.
SYS@FUAT >commit;
Commit complete.
So I executed solution as mentioned in spool. Re-run script to make sure all is passed.
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.
Patch 25452805
Patch 26052406
Patch 30433124
Patch 33346385
Patch 26521736 - 19c interoperability patch for Release 12.2
Patch 31088182
Patch 31349591
Patch 31800803
Patch 28732161 - Apply on Release 12.2.6 or later versions.
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 (25452805,26052406,30433124,33346385,31088182,26521736,31349591,31800803,28732161);
BUG_NUMBER CREATION_DATE
------------------------------ ------------------
25452805 18-JAN-21
30433124 18-JAN-21
26052406 18-JAN-21
[applmgr@funebs122 ~]$ . EBSapps.env run
E-Business Suite Environment Information
----------------------------------------
RUN File System : /oraapps122/APPS/FUAT/fs2/EBSapps/appl
PATCH File System : /oraapps122/APPS/FUAT/fs1/EBSapps/appl
Non-Editioned File System : /oraapps122/APPS/FUAT/fs_ne
DB Host: funebs122.lab Service/SID: FUAT
Sourcing the RUN File System ...
adop phase=prepare,apply,finalize,cutover,cleanup mtrestart=no
patchtop=/labsoft/19cDB_Upgrade_EBS
patches=33346385,31088182,26521736,31349591,31800803,28732161
Please copy commands in notepad and then make sure they are in single line.
Once Patches applied we can see as below
The prepare phase completed successfully. The apply phase completed successfully. The finalize phase completed successfully. The cutover phase completed successfully. The cleanup phase completed successfully. adop exiting with status = 0 (Success)
Patch 31800803 Post steps:
1. On Application RUN file system
Source the environment variables for Oracle Applications
. EBSapps.env run
Run AutoConfig on the RUN file system.
[applmgr@funebs122 ~]$ . EBSapps.env run
E-Business Suite Environment Information
----------------------------------------
RUN File System : /oraapps122/APPS/FUAT/fs1/EBSapps/appl
PATCH File System : /oraapps122/APPS/FUAT/fs2/EBSapps/appl
Non-Editioned File System : /oraapps122/APPS/FUAT/fs_ne
DB Host: funebs122.lab Service/SID: FUAT
Sourcing the RUN File System ...
[applmgr@funebs122 ~]$ cd $ADMIN_SCRIPTS_HOME
[applmgr@funebs122 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@funebs122 scripts]$ perl $AD_TOP/bin/admkappsutil.pl
Starting the generation of appsutil.zip
Log file located at /oraapps122/APPS/FUAT/fs1/inst/apps/FUAT_funebs122/admin/log/MakeAppsUtil_03121831.log
output located at /oraapps122/APPS/FUAT/fs1/inst/apps/FUAT_funebs122/admin/out/appsutil.zip
MakeAppsUtil completed successfully.
2. 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@funebs122 FUAT_funebs122]$ pwd
/oraapps122/DATABASE/FUAT/12.1.0/appsutil/scripts/FUAT_funebs122
[oracle@funebs122 FUAT_funebs122]$ ./adautocfg.sh
Enter the APPS user password:
Make sure the autoconfig completes successfully.
3) Make sure below parameter is false in DB.
SYS@FUAT >show parameter SEC_CASE_SENSITIVE_LOGON NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ sec_case_sensitive_logon boolean FALSE
In my environment the parameter id already false.
4) 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@funebs122 dbs]$ cd $ORACLE_HOME/appsutil
[oracle@funebs122 appsutil]$ echo $ORACLE_HOME
/oraapps122/DATABASE/FUAT/12.1.0
[oracle@funebs122 appsutil]$ cd $ORACLE_HOME/appsutil
[oracle@funebs122 appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /oraapps122/DATABASE/FUAT/12.1.0
[oracle@funebs122 appsutil]$ export ORACLE_SID=FUAT
[oracle@funebs122 appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@funebs122 bin]$ perl txkOnPremPrePDBCreationTasks.pl -dboraclehome=$ORACLE_HOME \
-outdir=$ORACLE_HOME/appsutil/log -appsuser=apps \
-dbsid=FUAT -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 FUAT_initparam.sql
-rw-r--r--. 1 oracle oinstall 458 Mar 12 18:44 FUAT_datatop.txt
-rw-r-----. 1 oracle oinstall 20992 Mar 12 18:45 spfileFUAT.ora
-rw-r--r--. 1 oracle oinstall 52589 Mar 12 18:45 FUAT_PDBDesc.xml
5) 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@funebs122 19.3]$ mkdir -p /oraapps122/DATABASE/FUAT/19c
unzip -d /oraapps122/DATABASE/FUAT/19c LINUX.X64_193000_db_home.zip
The directory created will be used as 19c Oracle HOME.
19C DB software installation is done.
6) 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. "funcdb" 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@funebs122 ~]$ cat 19cdb.env
export ORACLE_HOME=/oraapps122/DATABASE/FUAT/19c
export ORACLE_SID=funcdb
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
7) 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.10 from 19.3
32218454-DATABASE RELEASE UPDATE 19.10.0.0.0 (Patch)
32067171-OJVM RELEASE UPDATE 19.10.0.0.0 (Patch)
29867728
31405300
31424070
Open new terminal with oracle user and source the 19c environment file.
[oracle@funebs122 ~]$ 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@funebs122 19cDB_Upgrade_EBS]$ cp p6880880_190000_Linux-x86-64.zip $ORACLE_HOME
[oracle@funebs122 19cDB_Upgrade_EBS]$ cd $ORACLE_HOME/
[oracle@funebs122 19c]$ mv OPatch OPatch_old
[oracle@funebs122 19c]$ unzip p6880880_190000_Linux-x86-64.zip
Go to each patch unzipped directory and apply them
cd 32218454
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply
cd 32067171
opatch apply
cd 29867728
opatch apply
cd 31405300
opatch apply
cd 31424070
opatch apply
Do not perform any post patch installation steps as they will be done after upgrade.
8)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@funebs122 ~]$ . 19c.env
[oracle@funebs122 ~]$ unset PERL5LIB
[oracle@funebs122 ~]$ perl $ORACLE_HOME/nls/data/old/cr9idata.pl
Creating directory /oraapps122/DATABASE/FUAT/19c/nls/data/9idata ...
Copying files to /oraapps122/DATABASE/FUAT/19c/nls/data/9idata...
Copy finished.
Please reset environment variable ORA_NLS10 to /oraapps122/DATABASE/FUAT/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@funebs122 ~]$ cat 19cdb.env export ORACLE_HOME=/oraapps122/DATABASE/FUAT/19c export ORACLE_SID=funcdb 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=/oraapps122/DATABASE/FUAT/19c/nls/data/9idata
9) Copy appsutil.zip from Application Tier to Database 19c home
On Application Tier source run file system environment
perl $AD_TOP/bin/admkappsutil.pl
Copy appsutil.zip file to 19c Oracle Home and unzip
[oracle@funebs122 ~]$ cd $ORACLE_HOME
[oracle@funebs122 19c]$ pwd
/oraapps122/DATABASE/FUAT/19c
[oracle@funebs122 19c]$
cp /oraapps122/APPS/FUAT/fs1/inst/apps/FUAT_funebs122/admin/out/appsutil.zip .
[oracle@funebs122 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@funebs122 19c]$ unzip -o appsutil.zip
10) 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@funebs122 19c]$ cd $ORACLE_HOME/appsutil [oracle@funebs122 appsutil]$ cp -r $ORACLE_HOME/jdk/jre . [oracle@funebs122 appsutil]$ cp $ORACLE_HOME/jlib/orai18n.jar
$ORACLE_HOME/appsutil/jre/lib/ext
11) 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)(funcdb), 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@funebs122 ~]$ . 19c.env
[oracle@funebs122 ~]$ cd $ORACLE_HOME/bin
[oracle@funebs122 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@FUAT >SELECT value AS db_charset
FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET'; 2 3
DB_CHARSET
--------------------------------------------------------------------------------
AL32UTF8
SYS@FUAT >SELECT value AS db_ncharset
FROM nls_database_parameters
WHERE parameter = 'NLS_NCHAR_CHARACTERSET'; 2 3
DB_NCHARSET
--------------------------------------------------------------------------------
AL16UTF16
[oracle@funebs122 ~]$ ps -ef |grep -i pmon
oraasm 2608 1 0 Mar12 ? 00:00:06 asm_pmon_+ASM
oracle 3396 1 0 Mar12 ? 00:00:08 ora_pmon_FUAT
oracle 27931 1 0 00:16 ? 00:00:00 ora_pmon_funcdb
12)Run datapatch on the CDB
Use the following commands to load any necessary patches on the CDB.
Source 19 environment
[oracle@funebs122 ~]$ . 19cdb.env
[oracle@funebs122 ~]$ export ORACLE_SID=funcdb
[oracle@funebs122 ~]$ $ORACLE_HOME/OPatch/datapatch
SQL Patching tool version 19.10.0.0.0 Production on Sun Apr 11 10:47:07 2021
Copyright (c) 2012, 2020, Oracle. All rights reserved.
Log file for this invocation:
/oraapps122/DATABASE/cfgtoollogs/sqlpatch/sqlpatch_25829_2021_04_11_10_47_07/
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 31424070 (APPSST19C XTTS PDB - TABLE IMPORT/CREATION FAILED WITH
ORA-39083 ORA-14334):
Binary registry: Installed
PDB CDB$ROOT: Applied successfully on 11-APR-21 02.21.25.128967 AM
PDB PDB$SEED: Applied successfully on 11-APR-21 03.27.11.083950 AM
Interim patch 32067171 (OJVM RELEASE UPDATE: 19.10.0.0.210119 (32067171)):
Binary registry: Installed
PDB CDB$ROOT: Applied successfully on 11-APR-21 02.21.21.996398 AM
PDB PDB$SEED: Applied successfully on 11-APR-21 03.27.07.902371 AM
Current state of release update SQL patches:
Binary registry:
19.10.0.0.0 Release_Update 210108185017: Installed
PDB CDB$ROOT:
Applied 19.10.0.0.0 Release_Update 210108185017 successfully on 11-APR-21
02.21.21.977155 AM
PDB PDB$SEED:
Applied 19.10.0.0.0 Release_Update 210108185017 successfully on 11-APR-21
03.27.07.888208 AM
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 Sun Apr 11 10:48:32 2021
13)Create the CDB MGDSYS schema
Source 19c Environment
Use SQL*Plus to connect to the CDB as SYSDBA and run the
export ORACLE_SID=funcdb
[oracle@funebs122 ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Apr 11 10:49:59 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>
SQL> @$ORACLE_HOME/rdbms/admin/catmgd.sql
This creates the new MGDSYS schema on the CDB.
14) Create 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@funebs122 ~]$ cd $ORACLE_HOME/appsutil
[oracle@funebs122 appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /oraapps122/DATABASE/FUAT/19c
[oracle@funebs122 appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@funebs122 bin]$ perl txkGenCDBTnsAdmin.pl -dboraclehome=$ORACLE_HOME \
-cdbname=funcdb -cdbsid=funcdb -dbport=1522 \
-outdir=$ORACLE_HOME/appsutil/log
15) 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.
16) On Application Tier
Complete patching cycle and remove adop created editions
This will clean up the editions created by previous adop patching cycles. These commands also complete any open patching cycle.
On the current run file system:
$ adop phase=prepare
$ adop phase=actualize_all --> This alone took apporx 13hrs to complete
$ adop phase=finalize finalize_mode=full
$ adop phase=cutover mtrestart=no
Source the new Environment
On the new run file system:
$ adop phase=cleanup cleanup_mode=full --> This alone took apporx 18hrs to complete
17) 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@funebs122 ~]$ . FUAT_funebs122.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@funebs122 ~]$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=/oraapps122/DATABASE/FUAT/12.1.0/appsutil/FUAT_funebs122.xml \
-oraclehome=/oraapps122/DATABASE/FUAT/12.1.0 -outdir=/tmp \
-upgradedhome=/oraapps122/DATABASE/FUAT/19c -mode=getUtlFileDir -servicetype=onpremise
Enter the APPS Password:
Script Name : txkCfgUtlfileDir.pl
Script Version : 120.0.12020000.15
Started : Sat Mar 19 09:17:41 IST 2022
Log File : /tmp/TXK_UTIL_DIR_Sat_Mar_19_09_17_38_2022/txkCfgUtlfileDir.log
Context file: /oraapps122/DATABASE/FUAT/12.1.0/appsutil/FUAT_funebs122.xml exists.
==============================================================================
Successfully generated the below file with UTL_FILE_DIR content:
/oraapps122/DATABASE/FUAT/12.1.0/dbs/FUAT_utlfiledir.txt
==============================================================================
Completed : Sat Mar 19 09:17:46 IST 2022
Successfully Completed the script
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 FUAT_utlfiledir.txt
Based on path check and create the directories on server using oracle user
mkdir -p /oraapps122/DATABASE/FUAT/temp/FUAT
mkdir -p /oraapps122/DATABASE/FUAT/19c/appsutil/outbound/FUAT_funebs122
mkdir -p /oraapps122/DATABASE/FUAT/temp/FUAT
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@funebs122 dbs]$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=/oraapps122/DATABASE/FUAT/12.1.0/appsutil/FUAT_funebs122.xml \
-oraclehome=/oraapps122/DATABASE/FUAT/12.1.0 -outdir=/tmp \
-upgradedhome=/oraapps122/DATABASE/FUAT/19c -mode=setUtlFileDir -servicetype=onpremise
Enter the APPS Password:
Enter the SYSTEM Password:
Script Name : txkCfgUtlfileDir.pl
Script Version : 120.0.12020000.15
Started : Sat Mar 19 09:25:16 IST 2022
Log File : /tmp/TXK_UTIL_DIR_Sat_Mar_19_09_25_06_2022/txkCfgUtlfileDir.log
Context file: /oraapps122/DATABASE/FUAT/12.1.0/appsutil/FUAT_funebs122.xml exists.
** WARNING: Incorrect value s_applptmp detected on Apps Tier nodes. Please check log for details
Completed : Sat Mar 19 09:25:32 IST 2022
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.
18) 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.
19) 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.
20) 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
21) 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@funebs122 ~]$ lsnrctl stop FUAT 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=funebs122.lab)(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@FUAT >alter system set local_listener='';
System altered.
22) 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@funebs122 ~]$ $ORACLE_HOME/jdk/bin/java
-jar /oraapps122/DATABASE/FUAT/19c/rdbms/admin/preupgrade.jar TERMINAL TEXT
Report generated by Oracle Database Pre-Upgrade Information Tool Version
19.0.0.0.0 Build: 1 on 2022-03-19T10:16:14
Upgrade-To version: 19.0.0.0.0
=======================================
Status of the database prior to upgrade
=======================================
Database Name: FUAT
Container Name: FUAT
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: ARCHIVELOG
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
================
None
RECOMMENDED ACTIONS
===================
1. Update NUMERIC INITIALIZATION PARAMETERS to meet estimated minimums.
This action may be done now or when starting the database in upgrade mode
using the 19 ORACLE HOME.
Parameter Currently 19 minimum
--------- --------- ------------------
processes 200 300
The database upgrade process requires certain initialization parameters
to meet minimum values. The Oracle upgrade process itself has minimum
values which may be higher and are marked with an asterisk. After
upgrading, those asterisked parameter values may be reset if needed.
alter system set processes=400 scope=spfile;
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
---------
O7_DICTIONARY_ACCESSIBILITY
optimizer_adaptive_features
utl_file_dir
alter system reset O7_DICTIONARY_ACCESSIBILITY scope=spfile;
alter system reset optimizer_adaptive_features scope=spfile;
alter system reset utl_file_dir scope=spfile;
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;
1 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.
sqlplus '/as sysdba'
@$ORACLE_HOME/olap/admin/catnoamd.sql
5. 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.
6. 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.
7. 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.
8. Review and remove any unnecessary HIDDEN/UNDERSCORE parameters.
The database contains the following initialization parameters whose name
begins with an underscore:
_ksb_restart_policy_times
_compression_compatibility
_system_trig_enabled
_gby_vector_aggregation_enabled
_optimizer_vector_transformation
_optimizer_mode_force
_sort_elimination_cost_ratio
_always_anti_join
_optimizer_null_aware_antijoin
_optimizer_partial_join_eval
_partition_view_enabled
_b_tree_bitmap_plans
_cpu_to_io
_optimizer_extended_cursor_sharing
_optimizer_extended_cursor_sharing_rel
_optimizer_adaptive_cursor_sharing
_optimizer_cost_model
_optimizer_undo_cost_change
_optimizer_system_stats_usage
_new_sort_cost_estimate
_complex_view_merging
_unnest_subquery
_optimizer_unnest_scalar_sq
_eliminate_common_subexpr
_pred_move_around
_convert_set_to_join
_px_ual_serial_input
_px_minus_intersect
_remove_aggr_subquery
_optimizer_push_down_distinct
_optimizer_cost_based_transformation
_optimizer_squ_bottomup
_push_join_predicate
_push_join_union_view
_push_join_union_view2
_fast_full_scan_enabled
_optimizer_skip_scan_enabled
_optimizer_join_sel_sanity_check
_optim_enhance_nnull_detection
_parallel_broadcast_enabled
_always_semi_join
_ordered_nested_loop
_optimizer_max_permutations
_nlj_batching_enabled
_mmv_query_rewrite_enabled
_local_communication_costing_enabled
_left_nested_loops_random
_improved_row_length_enabled
(list truncated)
SYS@FUAT >set head off
SYS@FUAT >set lines 200 pages 200
SYS@FUAT >set echo off
SYS@FUAT >set feedback off;
spool hidden.sql
SELECT 'alter system reset '||'"'||name||'"'||' scope =spfile;'
FROM SYS.V$PARAMETER
WHERE name LIKE '\_%' ESCAPE '\';
spool off
Execute hidden.sql
Check again now after restart any hidden paremeter left:
SELECT name,description
FROM SYS.V$PARAMETER
WHERE name LIKE '\_%' ESCAPE '\';
Remove hidden parameters before database upgrade unless your application
vendors and/or Oracle Support state differently. Changes will need to be
made in the pfile/spfile.
9. 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.
10. (AUTOFIXUP) Gather stale data dictionary statistics prior to database
upgrade in off-peak time using:
EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;
Dictionary statistics do not exist or are stale (not up-to-date).
Dictionary statistics help the Oracle optimizer find efficient SQL
execution plans and are essential for proper upgrade timing. Oracle
recommends gathering dictionary statistics in the last 24 hours before
database upgrade.
For information on managing optimizer statistics, refer to the 12.1.0.2
Oracle Database SQL Tuning Guide.
INFORMATION ONLY
================
11. Consider removing the following deprecated initialization parameters.
Parameter
---------
sec_case_sensitive_logon
These deprecated parameters probably will be obsolete in a future release.
12. Ensure there is additional disk space in LOG_ARCHIVE_DEST_1 for at least
4486 MB of archived logs. Check alert log during the upgrade that there
is no write error to the destination due to lack of disk space.
Archiving cannot proceed if the archive log destination is full during
upgrade.
Archive Log Destination:
Parameter : LOG_ARCHIVE_DEST_1
Destination : /oraapps122/DATABASE/FUAT/data/archive
The database has archiving enabled. The upgrade process will need free
disk space in the archive log destination(s) to generate archived logs to.
13. 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.
ORACLE GENERATED FIXUP SCRIPT
=============================
All of the issues in database FUAT
which are identified above as BEFORE UPGRADE "(AUTOFIXUP)" can be resolved by
executing the following
SQL>@/oraapps122/DATABASE/FUAT/12.1.0/cfgtoollogs/FUAT/preupgrade/preupgrade
_fixups.sql
=============
AFTER UPGRADE
=============
REQUIRED ACTIONS
================
None
RECOMMENDED ACTIONS
===================
14. (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.
15. 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.
16. 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 14 user directory objects to be checked: APPS_DATA_FILE_DIR,
AW_DIR, CSR_XML_TOP, EBS_DB_DIR_UTIL, EBS_UTL_FILE_DIR_2378614680646,
EBS_UTL_FILE_DIR_7219131372786, EBS_UTL_FILE_DIR_8078957515276,
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.
17. (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.
18. 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
================
19. 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,Oracle Machine Generated Data
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 FUAT
which are identified above as AFTER UPGRADE "(AUTOFIXUP)" can be resolved by
executing the following
SQL>@/oraapps122/DATABASE/FUAT/12.1.0/cfgtoollogs/FUAT/preupgrade/postupgrad
e_fixups.sql
==================
PREUPGRADE SUMMARY
==================
/oraapps122/DATABASE/FUAT/12.1.0/cfgtoollogs/FUAT/preupgrade/preupgrade.log
/oraapps122/DATABASE/FUAT/12.1.0/cfgtoollogs/FUAT/preupgrade/preupgrade_fixups.sql
/oraapps122/DATABASE/FUAT/12.1.0/cfgtoollogs/FUAT/preupgrade/postupgrade_fixups.sql
Execute fixup scripts as indicated below:
Before upgrade:
Log into the database and execute the preupgrade fixups
@/oraapps122/DATABASE/FUAT/12.1.0/cfgtoollogs/FUAT/preupgrade/preupgrade_fixups.sql
After the upgrade:
Log into the database and execute the postupgrade fixups
@/oraapps122/DATABASE/FUAT/12.1.0/cfgtoollogs/FUAT/preupgrade/postupgrade_fixups.sql
Preupgrade complete: 2022-03-19T10:16:15
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@funebs122 ~]$ 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@FUAT >@/oraapps122/DATABASE/FUAT/12.1.0/cfgtoollogs/FUAT/preupgrade/preupgrade_fixups.sql
For Source Database: FUAT
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. invalid_objects_exist NO Manual fixup recommended.
2. exclusive_mode_auth NO Manual fixup recommended.
3. case_insensitive_auth NO Manual fixup recommended.
4. mv_refresh NO Manual fixup recommended.
5. underscore_events NO Informational only.
Further action is optional.
6. dictionary_stats YES None.
7. parameter_deprecated NO Informational only.
Further action is optional.
8. min_archive_dest_size NO Informational only.
Further action is optional.
9. rman_recovery_version NO Informational only.
Further action is optional.
Ignore These
23) 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
24) Run the Post Upgrade Script generated during the Pre-Upgrade Steps.
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
SQL> @/oraapps122/DATABASE/FUAT/12.1.0/cfgtoollogs/FUAT/preupgrade/postupgrade_fixups.sql
25) Post-Upgrade Tasks
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
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
26) Run DataPatch
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
[oracle@funebs122 ~]$ $ORACLE_HOME/OPatch/datapatch
27) Connect to sysdba and run below
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
SQL> @?/rdbms/admin/dbmsxdbschmig.sql
SQL> @?/rdbms/admin/prvtxdbschmig.plb
28) Run ADgrants
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
Copy adgrants.sql from $APPL_TOP/admin to DB tier and run it
[oracle@funebs122 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.
29) Grant create procedure privilege on CTXSYS
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
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@funebs122 tmp]$ sqlplus apps/apps @adctxprv.sql manager CTXSYS
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 12 18:38:22 2021
Version 19.10.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Last Successful login time: Mon Apr 12 2021 18:38:14 +05:30
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.10.0.0.0
Connecting to SYSTEM
Connected.
PL/SQL procedure successfully completed.
Commit complete.
30) Compile invalid objects
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
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
31) Grant datastore access
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
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.
32) Gather statistics for the SYS schema
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
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.
$ sqlplus "/ as sysdba"
SQL> alter system disable restricted session;
System altered.
SQL> exit
--------------------------------------------------
--- adstats.sql started at 2022-03-20 13:17:36 ---
Checking for the DB version and collecting statistics ...
PL/SQL procedure successfully completed.
------------------------------------------------
--- adstats.sql ended at 2022-03-20 14:02:45 ---
Commit complete.
33) Create the new MGDSYS schema (Conditional)-Not required by me
Source 19c Environment
. 19c.env
export ORACLE_SID=FUAT
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
34) Convert Database to Multitenant Architecture or PDB
There are two databases that are associated with the 19c Oracle home, the CDB(funcdb) and the non-CDB database (FUAT). 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 (FUAT) has to be kept down.
a) 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@funebs122 tmp]$ cd $ORACLE_HOME/appsutil
[oracle@funebs122 appsutil]$ . ./txkSetCfgCDB.env dboraclehome=/oraapps122/DATABASE/FUAT/19c
Oracle Home being passed: /oraapps122/DATABASE/FUAT/19c
[oracle@funebs122 appsutil]$ export ORACLE_SID=FUAT
[oracle@funebs122 appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@funebs122 bin]$ perl txkOnPremPrePDBCreationTasks.pl
-dboraclehome=/oraapps122/DATABASE/FUAT/19c \
> -outdir=/oraapps122/DATABASE/FUAT/19c/appsutil/log -appsuser=apps -dbsid=FUAT
Enter the APPS Password:
****************************************************************************************
* *
* IMPORTANT NOTE: DO NOT START THE DB TILL THE DATA FILES ARE MIGRATED *
* *
* IF DB IS STARTED, THEN PDB DESCRIPTOR XML GENERATED BECOMES INVALID *
* *
****************************************************************************************
b) 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@funebs122 dbs]$ pwd
/oraapps122/DATABASE/FUAT/12.1.0/dbs
[oracle@funebs122 dbs]$ cp FUAT_initparam.sql FUAT_datatop.txt /oraapps122/DATABASE/FUAT/19c/dbs/
Remove line from FUAT_initparam.sql
alter system set CONNECTION_BROKERS="((TYPE=DEDICATED)(BROKERS=1)), ((TYPE=EMON)(BROKERS=1))" scope=spfile;
[oracle@funebs122 bin]$ cd $ORACLE_HOME/appsutil
[oracle@funebs122 appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /oraapps122/DATABASE/FUAT/19c
[oracle@funebs122 appsutil]$ export ORACLE_SID=funcdb
[oracle@funebs122 appsutil]$ sqlplus "/ as sysdba"
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 12 19:18:08 2021
Version 19.10.0.0.0
Copyright (c) 1982, 2020, 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/FUAT_initparam.sql
SQL> alter system set LOCAL_LISTENER="funebs122:1522" 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 2147482136 bytes Fixed Size 9136664 bytes Variable Size 436207616 bytes Database Buffers 1677721600 bytes Redo Buffers 24416256 bytes Database mounted. Database opened.
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
FUNCDB READ WRITE
c) 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@funebs122 dbs]$ cd $ORACLE_HOME/appsutil
[oracle@funebs122 appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /oraapps122/DATABASE/FUAT/19c
[oracle@funebs122 appsutil]$ export ORACLE_SID=funcdb
[oracle@funebs122 appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@funebs122 bin]$ perl txkChkPDBCompatability.pl -dboraclehome=$ORACLE_HOME \
-outdir=$ORACLE_HOME/appsutil/log -cdbsid=funcdb \
-pdbsid=FUAT -servicetype=onpremise
****************************************************************************************
* *
* 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 *
* *
****************************************************************************************
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.
d) 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@funebs122 bin]$ cd $ORACLE_HOME/appsutil
[oracle@funebs122 appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /oraapps122/DATABASE/FUAT/19c
[oracle@funebs122 appsutil]$ cd $ORACLE_HOME/appsutil/bin
[oracle@funebs122 bin]$ pperl txkCreatePDB.pl -dboraclehome=$ORACLE_HOME
-outdir=$ORACLE_HOME/appsutil/log \
-cdbsid=funcdb -pdbsid=FUAT -dbuniquename=funcdb -servicetype=onpremise
I am keeping the data top for non-CDB(FUAT) 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/FUAT/data]:
Enter the corresponding PDB data top [/oraapps122/DATABASE/FUAT/data]:
In case of ASM
Number of DATA_TOPs: 2
DATA_TOP_2
===========
Enter the non-CDB data top [+EBS_DATA/FUAT/TEMPFILE]:
Enter the corresponding PDB data top [+EBS_DATA/FUAT/TEMPFILE]:
DATA_TOP_1
===========
Enter the non-CDB data top [+EBS_DATA/FUAT/DATAFILE]:
Enter the corresponding PDB data top [+EBS_DATA/FUAT/DATAFILE]:
e) Run the post PDB script
Source 19c
export ORACLE_SID=funcdb
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@funebs122 bin]$ cd $ORACLE_HOME/appsutil
[oracle@funebs122 appsutil]$ . ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME
Oracle Home being passed: /oraapps122/DATABASE/FUAT/19c
[oracle@funebs122 appsutil]$ perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl
-dboraclehome=$ORACLE_HOME \ -outdir=$ORACLE_HOME/appsutil/log -cdbsid=funcdb -pdbsid=FUAT \ -appsuser=apps -dbport=1522 -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 FUAT READ WRITE NO
f) 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@funebs122 dbs]$ export ORACLE_SID=funcdb
[oracle@funebs122 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;
35) 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.
funcdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=tcp)(HOST=funebs122.lab)(PORT=1522))
(CONNECT_DATA = (SERVICE_NAME=ebs_FUAT)(INSTANCE_NAME=funcdb))
)
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
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.
36) Apply post-upgrade WMS patches (Conditional)-Not Needed
If you upgraded from a database version prior to 12c, apply Patch 19007053. Since the WLS admin server has not yet been brought up, apply the patch in downtime mode on the run APPL_TOP by running the following command:
$ adop phase=apply patches=19007053 apply_mode=downtime
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>)))';
38) Start Application Services and Validate the Database Version
Finally this completes our upgrade to 19c
Please also check document for issues after upgrade
19c Database with Oracle E-Business Suite R12 Known Issues & Solutions (Doc ID 2662860.1)
References:
MOS Doc Id. 1594274.1 Install Oracle Database binaries 19c and apply EBS overlay patches as per
MOS Doc Id. 2552181.1 Interoperability Notes: Oracle E-Business Suite Release 12.2 with Oracle EBS Database 19c
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.2
(MOS Note 2554156.1) Export/Import Process for Oracle E-Business Suite Release 12.2 Database Instances Using Oracle Database 19
52 Comments
Great Article with elaborative steps.
ReplyDeleteAweosome
ReplyDeleteGreat article with all the required steps and good exlpanation
ReplyDeleteHi,
ReplyDeleteMy dbua is stuck at recompile invalid objects. What should i do.. should i let be or can i manually recompile it.
Thanks
Please let it run,It would be recompiling objects which takes long time. But keep an eye on logs so that no errors are there. You can also connect with me over telegram. Links in footer sction.
DeleteGetting the below erorr when i run pdb decriptor creation
ReplyDeleteDatabase altered.
BEGIN DBMS_PDB.DESCRIBE(pdb_descr_file => '/orahome/db/tech_st/19.0.0/dbs/CLONE_PDBDesc.xml'); END;
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [kdsgrp1-kdsgrp], [], [], [], [],
[], [], [], [], [], [], []
ORA-06512: at "SYS.DBMS_PDB", line 13
ORA-06512: at line 1
What in the trace file, and was the upgrade successful. All table space has sufficient space ??
DeleteYes the upgrade was successful. This error is occurring in the PDB creation.
ReplyDeleteThis is the error i am getting:
PDB conversion went through fine, but it could not be opened successfully due to plugin violations. Resolve plugin violations manually.
When i check the open_PDB.OUT: it shows " Warning: PDB altered with errors."
and in spool_convert_noncdb_to_pdb.log at the end i find this
ERROR at line 1:
ORA-04031: unable to allocate 64 bytes of shared memory ("shared pool","select
obj#,type#,ctime,mtim...","SQLA^a0d627f0","kksol : kksnsg")
ORA-06512: at "SYS.UTL_RECOMP", line 689
ORA-06512: at "SYS.UTL_RECOMP", line 692
ORA-06512: at "SYS.UTL_RECOMP", line 923
ORA-04031: unable to allocate 64 bytes of shared memory ("shared pool","select
length from fet$ wher...","SQLA^9443c307","qosdInitExprCtx: qosdExprCtx")
ORA-06512: at "SYS.UTL_RECOMP", line 609
ORA-06512: at "SYS.UTL_RECOMP", line 447
ORA-04031: unable to allocate 40 bytes of shared memory ("shared pool","select
cols,audit$,textlengt...","SQLA","tmp")
ORA-06512: at "SYS.DBMS_UTILITY", line 1329
ORA-06512: at line 1
ORA-06512: at "SYS.UTL_RECOMP", line 433
ORA-06512: at "SYS.UTL_RECOMP", line 599
ORA-06512: at "SYS.UTL_RECOMP", line 858
ORA-06512: at line 4
How much memory you have free on you DB node, Please try to increase the memory.
DeleteThankyou Himanshu , Increasing the size of shared_pool_size parameter resolved the problem. 19c upgrade was successful Thankyou for the great Document.
ReplyDeleteGood to hear that
DeleteHello Himanshu.. After following your document my upgrade was successful but the application response time is slow . Java forms takes time to load and even the requests takes up to hours to complete. Any idea.
ReplyDeleteAlso one more question in point 35 when i add the tns entry and run auto config the tns file is edited by the Autoconfig but the tns entry is there.
did you check gather stats
DeleteAlso Please below Oracle doc
Delete19c Database with Oracle E-Business Suite R12 Known Issues & Solutions (Doc ID 2662860.1)
yes i did run gather schema stats but the reponse is slow. followed the document 2662860.1 but no success.
DeleteI would suggest to raise an SR, 19c still not that stable in my opinion
DeleteHi ,
ReplyDeleteI have completed dbua ,while doing post steps I am getting below error .and I am unable to connect apps user .Can you suggest where I am missing ?
SQL> alter trigger SYSTEM.EBS_LOGON compile;
alter trigger SYSTEM.EBS_LOGON compile
*
ERROR at line 1:
ORA-04080: trigger 'EBS_LOGON' does not exist
sqlplus apps/password
ERROR:
ORA-01017: invalid username/password; logon denied
Hi ,
DeleteCan you please suggest on it ?
which step you are getting this error
Deletei'm having the same after running DBUA, i'm not able to compile the trigger since it doesn't exist
DeleteIf you have completed the migration for EBS_SYSTEM, SYSTEM.EBS_LOGON no longer exists.
DeleteThere are few important post-upgrade miscellaneous tasks that need to be performed.
ReplyDeleteIf you previously had the SEC_CASE_SENSITIVE_LOGON initialization parameter set to FALSE, re-enable the parameter.
Yes,Himanshu I have re-enabled SEC_CASE_SENSITIVE_LOGON and followed same steps but unable to complete upgrade.
DeleteI have completed till below step .
25) Post-Upgrade Tasks
Source 19c Environment
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.
SQL> alter system set SEC_CASE_SENSITIVE_LOGON=false;
System altered.
Created CDB only :
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
Please advice .
Have you done any document on 19c Cold clone with R12.2 ?
ReplyDeleteERROR DESCRIPTION:
ReplyDelete(*******FATAL ERROR*******
PROGRAM : (/u02/oracle/PROD/fs1/EBSapps/appl/fnd/12.0.0/patch/115/bin/txkCfgUtlfileDir.pl
)
TIME : Wed Dec 8 13:30:02 2021
FUNCTION: main::getUtlFileDirParam [ Level 1 ]
ERRORMSG: Unable to read UTL_FILE_DIR parameter.
)
ERRORCODE = 1 ERRORCODE_END
.end std out.
.end err out.
Result : FAILED
You said:
ReplyDelete----
2) Apply required patches on EBS as required based on the version and AD/TXK delta versions.
As per my environment I am required to apply below patches.
Patch 26521736 - 19c interoperability patch for Release 12.2
Patch 31088182
Patch 31349591
Patch 31800803
Patch 28732161 - Apply on Release 12.2.6 or later versions.
---
What tools did you used to find those above patches? EBS Technology Codelevel Checker?
Thanks!
Please read the document for all the patches required.
DeleteInteroperability Notes: Oracle E-Business Suite Release 12.2 with Oracle Database 19c (Doc ID 2552181.1)
Hello, Thanks for the detailed document.
ReplyDeleteI have completed until the 2.4 After the Database Upgrade and trying to perform 2.5 Convert Database to Multitenant Architecture but I can neither see my context file nor database environment file created in 19c Oracle Home. Also my listener.ora and tnsnames.ora contains entry with blank alias name. I tried to manually key in my alias (Database name) but that doesnt help. Because of this I am not able to bring up the listener
All my upgrade process completed without any errors and much similar to your document.
Hi Himanshu,
ReplyDeleteThanks for the detailed document. I am upgrading my Oracle EBS R12.2 DB 11.2.0.4 to 19c
I have completed until 2.4 After the Database Upgrade and about to start 2.5 Convert Database to Multitenant Architecture. But I can neither see a context file nor database environment file in my 19c Oracle Home. I followed all the steps in sequence in the document Interoperability Notes: Oracle E-Business Suite Release 12.2 with Oracle Database 19c (Doc ID 2552181.1) and also used yours as a reference.
Also my listener.ora and tnsnames.ora file have been created with entries with blank alias names. I tried to manually key in the alias name (Similar to Database name) but that doesnt help in starting the listener. Not sure where it went wrong.
Hi Himanshu,
DeleteI continued with other steps in the section 2.5 Convert Database to Multitenant Architecture and I was able to succeed until the section 2.5 Convert Database to Multitenant Architecture and then it errored out with the following error when I try to perform Run the post PDB script
Starting /u03/oracle/UAT/product/19.0.0/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /u03/oracle/UAT/product/19.0.0/network/admin/listener.ora
Log messages written to /u03/oracle/UAT/diag/tnslsnr/lor06086/uatcdb/alert/log.xml
TNS-01151: Missing listener name, UATCDB, in LISTENER.ORA
Listener failed to start. See the error message(s) above...
I was able to bypass issue by manually entering the CDB alias but then the script again errored out
DB_LISTENER : UATCDB
DISPLAY : localhost:10.0
Executing SYSTEM command: perl /u03/oracle/UAT/product/19.0.0/appsutil/bin/adbldxml.pl appsuser=apps servername=lor06086.cov.virginia.gov
Connection parameters values:
Database server hostname ==> LOR06086.COV.VIRGINIA.GOV
Database listener port ==> 1528
Database SID ==> UAT
Database schema name ==> apps
Could not Connect to the Database : ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4475
Additional information: 2014383107
Looks like it is not able to connect to PDB instance. When I try to manually bring up the PDB below is the error I receive
ERROR at line 1:
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/u03/oracle/UAT/db/apps_st/data/system01.dbf'
ORA-01204: file number is 16 rather than 1 - wrong file
good article, Hello, Thanks for the detailed document.
ReplyDeletemy website is https://oracleappsdba.com
Excelent Article ... It's really helpful and I's very well explained.
ReplyDeletePlease also make the document to upgrade R12.2.11
ReplyDeleteHello
ReplyDeletefirst i would like to thank you for that great effort
i had a problem in step 28) Run ADgrants , the error is as follows
********************************************************************
** **
** Error - PDB env not set exiting adgrants.sql **
** **
** Source the CDB env file **
** and set the ORACLE_PDB_SID to the pdb SID to enable. **
** **
********************************************************************
thank you
Which patch is being applied here. Is you PDB and CDB environment files present in DB Oracle Home
DeleteI Faced a problem in step 28 Run ADgrants
ReplyDelete********************************************************************
** **
** Error - PDB env not set exiting adgrants.sql **
** **
** Source the CDB env file **
** and set the ORACLE_PDB_SID to the pdb SID to enable. **
** **
********************************************************************
thank you
I have only one env file which is created in step 6 and modified in step 8
DeleteWhats the Oracle SID set. It should be the DB name for EBS
Deletewhen i set the source DB SID it returns ORA-01034 ORACLE not available
Deleteand ORA-01012 not logged on
what's in your environment file.
Deletehi am getting below error while create utl file after db upgrade 12.1.2 to 19c
ReplyDelete[ora1229@cenarsrcdb01 ~]$ perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=/udb01/app/oracle/EBS1229/12.1.0/appsutil/EBS1229_cenarsrcdb01.xml -oraclehome=/udb01/app/oracle/EBS1229/12.1.0 -outdir=/udb01/app/oracle/EBS1229/12.1.0/appsutil/log -upgradedhome=/udb01/app/oracle/EBS1229/19.3.0 -mode=getUtlFileDir
Enter the APPS Password:
Script Name : txkCfgUtlfileDir.pl
Script Version : 120.0.12020000.7
Started : Tue Jan 10 23:14:50 EST 2023
Log File : /udb01/app/oracle/EBS1229/12.1.0/appsutil/log/TXK_UTIL_DIR_Tue_Jan_10_23_14_46_2023/txkCfgUtlfileDir.log
Context file: /udb01/app/oracle/EBS1229/12.1.0/appsutil/EBS1229_cenarsrcdb01.xml exists.
Completed : Tue Jan 10 23:14:59 EST 2023
ERROR DESCRIPTION:
(*******FATAL ERROR*******
PROGRAM : (/udb01/app/oracle/EBS1229/12.1.0/appsutil/bin/txkCfgUtlfileDir.pl)
TIME : Tue Jan 10 23:14:59 2023
FUNCTION: main::getUtlFileDirParam [ Level 1 ]
ERRORMSG: Unable to read UTL_FILE_DIR parameter.
)
ERRORCODE = 1 ERRORCODE_END
Did you make sure your file location exists?
DeleteThanks..Its really helpful to upgrade the database. But what about EM as EM is not upgraded and not working after upgrade
ReplyDeleteyou should use OEM separately and not with Database.
DeleteAfter the upgrade, we are facing issue where we are seeing database contention between 2 nodes due to which gather stats are completing for days also batches which used to take 5mins are running for hours. This is happening only when database is in cluster (RAC) but if we run database with one node if works as it working in 12c.
ReplyDeleteAfter the upgrade, we are facing issue where we are seeing database contention between 2 nodes due to which gather stats are completing for days also batches which used to take 5mins are running for hours. This is happening only when database is in cluster (RAC) but if we run database with one node if works as it working in 12c.
ReplyDeletePlease raise an SR on this with Oracle
Deletethis topic very verry good. thanks. i configed Rac complate. thanks thanks thanks
ReplyDeleteWhile Convert Database to Multitenant Architecture and then it errored out with the following error when I try to perform Run the post PDB script
ReplyDeleteStarting /u03/oracle/UAT/product/19.0.0/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /u03/oracle/UAT/product/19.0.0/network/admin/listener.ora
Log messages written to /u03/oracle/UAT/diag/tnslsnr/lor06086/uatcdb/alert/log.xml
TNS-01151: Missing listener name, UATCDB, in LISTENER.ORA
Listener failed to start. See the error message(s) above...
I was able to bypass issue by manually entering the CDB alias but then the script again errored out
DB_LISTENER : UATCDB
DISPLAY : localhost:10.0
Executing SYSTEM command: perl /u03/oracle/UAT/product/19.0.0/appsutil/bin/adbldxml.pl appsuser=apps servername=lor06086.cov.virginia.gov
Connection parameters values:
Database server hostname ==> LOR06086.COV.VIRGINIA.GOV
Database listener port ==> 1528
Database SID ==> UAT
Database schema name ==> apps
Could not Connect to the Database : ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4475
Additional information: 2014383107
Looks like it is not able to connect to PDB instance. When I try to manually bring up the PDB below is the error I receive
ERROR at line 1:
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/u03/oracle/UAT/db/apps_st/data/system01.dbf'
ORA-01204: file number is 16 rather than 1 - wrong file
Thanks for this great guide.
ReplyDeleteOne of the Best Blogger Himanshu Thanks for all your efforts. Appreciate.
ReplyDeletethanks for your feedback
DeletePost a Comment