EBusiness Suite RUP 12.2.10 Performance Issue

In the Q1 of 2022, I completed a major financial administration software upgrade involving Oracle EBS. As part of the project, EBS was upgraded to its latest version(R12.2.10). The project kicked off sometime in May 2021 and took close to a year. While there were numerous challenges during the project, there were two specific issues that I encountered and would like to talk about in this blog.

1. Batch job performance
Weekly reporting jobs(comprised of request sets that are scheduled from “AR Super User”) took 2x time compared to production

2. RUP 12.2.10 time was unpredictable
I remember while applying RUP 12.2.10(Patch 30399999), the patch completed but cutover(adworker was hanging) was running for several hours. The issue did not replicate in lower environments. I found below SQL from the trace, but not much information why it was hanging

HM: Current SQL: SELECT RIDX.OWNER OWNER , RIDX.INDEX_NAME REVISED_INDEX , RIDX.TABLE_OWNER TABLE_OWNER , RIDX.TABLE_NAME TABLE_NAME , OIDX.INDEX_NAME ORIGINAL_INDEX , CON.CONSTRAINT_NAME CONSTRAINT_NAME FROM DBA_INDEXES RIDX , DBA_INDEXES OIDX , DBA_CONSTRAINTS CON WHERE RIDX.OWNER IN ( SELECT ORACLE_USERNAME FROM SYSTEM.FND_ORACLE_US

*** 2022–02–25T13:00:50.368736–05:00 (CDB$ROOT(1))
HM: Early Warning — Session ID 1384 serial# 60363 OS PID 184855 (FG)
is waiting on ‘PX Deq: Parse Reply’ for 32 seconds, wait id 1190
p1: ‘sleeptime/senderid’=0x4f, p2: ‘passes’=0x4f, p3: ‘’=0x0
Final Blocker is Session ID 3723 serial# 37449 on instance 1
which is waiting on ‘PX Deq: Execution Msg’ for 32 seconds, wait id 41
p1: ‘sleeptime/senderid’=0x1001ffff, p2: ‘passes’=0x4f, p3: ‘’=0x16be05c630

HM: Dumping Short Stack of pid[160.184855] (sid:1384, ser#:60363)
Short stack dump:
ksedsts()+426<-ksdxfstk()+58<-ksdxcb()+872<-sspuser()+200<-__sighandler()<-semtimedop()+10<-skgpwwait()+187<-ksliwat()+2293<-kslwaitctx()+200<-kxfpqidqr()+2478<-kxfpqdqr()+355<-kxfxgs()+71<-kxfxcp()+1904<-qerpxSendParse()+1286<-kxfpValidateSlaveGroup()+231<-kxfpgsg()+4604<-kxfrAllocSlaves()+319<-kxfrialo()+2874<-kxfralo()+450<-qerpxSetupAndAllocSlaves()+495<-qerpx_rowsrc_start()+1780<-qerpxStart()+541<-qerjoStart()+689<-qerflStart()+1133<-rwsstd()+295<-qeruaStart()+166<-qersoStart()+3308<-selexe0()+979<-opiexe()+6990<-opipls()+2427<-opiodr()+1202<-rpidrus()+198<-skgmstack()+65<-rpidru()+132<-rpiswu2()+543<-rpidrv()+1266<-psddr0()+467<-psdnal()+624<-pevm_EXECC()+306<-pfrinstr_EXECC()+56<-pfrrun_no_tool()+60<-pfrrun()+902<-plsql_run()+752<-peicnt()+279<-kkxexe()+720<-opiexe()+24859<-opiall0()+1382<-opikpr()+595<-opiodr()+1202<-rpidrus()+198<-skgmstack()+65<-rpidru()+132<-rpiswu2()+543<-kprball()+1046<-kkxspdbswitch_cbk()+460<-kkxsexr()+279<-kkxsexe()+661<-pevm_icd_call_common()+835<-pfrinstr_ICAL()+128<-pfrrun_no_tool()+60<-pfrrun()+902<-plsql_run()+752<-peicnt()+279<-kkxexe()+720<-opiexe()+24859<-kpoal8()+2226<-opiodr()+1202<-ttcpip()+1246<-opitsk()+1900<-opiino()+936<-opiodr()+1202<-opidrv()+1094<-sou2o()+165<-opimai_real()+422<-ssthrdmain()+417<-main()+256<-__libc_start_main()+245

After some research & multiple iterations, I was able to pin down the issue.

Due to Online Patching Enablement and the underlying Edition-Based Redefinition, there are changes to fixed and dictionary objects. As a result, internal SQL in Online Patching Enablement may at time run longer. Gathering statistics for specific fixed or dictionary objects can help in these cases, particularly on editioning objects.

Metalink note 1581549.1

As soon as I ran the below, within mins the workers completed.

SQL> alter session set container=PROD;
SQL> exec dbms_stats.gather_fixed_objects_stats;
SQL> exec dbms_stats.gather_dictionary_stats;

Takeaway #1. To ensure good performance, run gather dictionary statistics after completing major upgrade(EBS & Database). It is recommended to run gather dictionary statistics both before and after upgrade, because Data Dictionary tables are modified and created during the upgrade

https://docs.oracle.com/en/database/oracle/oracle-database/19/spuss/regathering-fixed-objects-statistics.html#GUID-44B9B605-8FFE-4FFD-89A0-105CE4C4939E

Takeaway#2. Fixed object stats should be taken. Fixed object and dictionary statistics are gathered at the end of Online Patching Enablement (in script ADZDSTATS.sql). However, they are not gathered automatically at any other points during the Release 12.2 upgrade. DBA should ensure that the statistics are re-gathered during peak hours or right after the upgrade.

Therefore after Go Live, I performed below additional steps before releasing to end users.

$ sqlplus “/ as sysdba”
SQL>alter system enable restricted session;
SQL> @adstats.sql
$ sqlplus “/ as sysdba”
SQL>alter system disable restricted session;
SQL>exit;

Published by Indraneil Seal

I originally hail from Kolkata, India, and I've dedicated a significant portion of my professional journey to both India and the United States before relocating to Canada during the pandemic. I’m a member of MongoDB's esteemed Technical Services team. Before joining this exceptional group, I held the role of Senior Apps DBA at the Government of Ontario. Prior to that, I spent many years honing my technical(DBA/Cloud) and soft skills with TCS, KBACE Technologies(which later got acquired by Cognizant Technology Solutions) and Oracle Corporation. Throughout my career, I was deeply immersed in day-to-day operations and spearheaded significant projects, including the modernization of platforms, Oracle application and database upgrades. In my last stint at the Government of Ontario, I was also responsible for overseeing various automation initiatives including out-of-place patching, automated EBS Application patching. Outside of my professional life, I have a strong passion for reading, blogging, spending quality time with my family, and my feline buddies, Smokey & Louis. I also relish solitary walks and jogging as personal interests. As a proponent of open source technologies, I'm looking forward to sharing my knowledge and expertise as well as contribute as much as possible to the success of the IT fraternity thereby perpetually expanding my skillset.

Leave a comment