Skip to main content

Online Patches for the RDBMS

Assume you are closing your month-end periods, running Create Accounting for Finance and OPM modules and finance stakeholders report this issue –

So, first thing we do is check request logs for Journal Import program–

Checking alert log gave me,



After raising ticket with Oracle, they gave us Patch – 23268430.
Readme gave us below information, online patchable may sound familiar to most of view, but was something new for me, so thought of documenting this.

Going through 761111.1 got some key highlights that are worth noting –
1. Online RDBMS patches are special patches that are applied on live instance, no shutting down of database instance.
2. A shared library is constructed with relevant fixes.
3. They internally use oradebug to apply patch.
4. Oradebug is responsible to inform each process to map shared library into their address space, original function changes to jump to new version in shared library and resolve references to right memory location for static functions

Some common DBA questions popping up now –

1. Which patch is an online rdbms patch?

       Not all patches are RDBMS online applicable, we can confirm for patch to be online       applicable in 3 ways –
          Readme.txt
      cd <PATCH_TOP>/23268430
 opatch query -all online
      cd <PATCH_TOP>/23268430
      ls
 etc/ files/ online/ README.txt

  

2. Limitations and Implications?
       They support only few OS versions.
       Additional memory consumption.
       Process start time delays

Use-case –

Coming back to our scenario, lets analyze both situations assuming client is a single node ERP system.
ONLINE MODE –



OFFLINE MODE –

We were having those days where it is difficult to shutdown system, with end-users from different modules performing activities like, closing periods, generating payroll, closing batches, etc. Applying this patch in online mode can be done as follows –

opatch apply online -connectString <SID>:<USERNAME>:<PASSWORD>:<NODE>

opatch lsinventory -details | grep online
Check for folder –
cd $ORACLE_HOME/hpatch


orapatchSTAGE.cfg is like a flag controller to enable/disable this hot patch. 

Whenever this hotpatch is rollbacked, only orapatchSTAGE.cfg is updated.
Over the weekend, when it was possible to take downtime, we rollbacked this online patch and applied it as regular with
opatch rollback -id 23268430 -connectString STAGE
SQL> shut immediate
opatch apply

Subsequent startup –

opatch lsinventory -details | grep 23268430

Conclusion –

1.    We bought some time and delayed downtime to apply this rdbms patch online without disturbing business activities during peak hours.
2.    Though this feature was introduced in 11.1, it is not being applied on a larger scale due to its implications like per process memory overhead.
3.    Again, this feature is overshadowed by Rolling patches in RAC environment.


Happy DBAing ðŸ˜Š

Comments

Popular posts from this blog

Logfile locations in EBS r12.1 and EBS r12.2

Startup/shutdown Apps tier services are started and stopped frequently and we must know logfiles when troubleshooting startup/shutdown issues. $INST_TOP/logs/appl/admin/log $INST_TOP/logs/appl/admin/log Apache OHS being part of opmn in r12.1 has continued in r12.2. Logfile locations for troubleshooting have been changed $INST_TOP/logs/ora/10.1.3/Apache/error_log[timestamp] $INST_TOP/logs/ora/10.1.3/opmn/HTTP_Server~1.log $IAS_ORACLE_HOME/instances/*/diagnostics/logs/OHS/*/*log*   OPMN Logfile locations for r12.1 and r12.2 have been changed $INST_TOP/logs/ora/10.1.3/opmn/opmn* $IAS_ORACLE_HOME/instances/*/diagnostics/logs/OPMN/opmn/* Oacore oacore in r12.1 is oc4j component and part of 10gAS. However, in r12.2, oacore is now a managed server for weblogic server $LOG_HOME/ora/10.1.3/j2ee/oacore/oacore*/ $LOG_HOME/ora/10.1.3/j2ee/oacore/oacore*/ $LOG_HOME/ora/10.1.3/opmn/oacore*/oacor...

Query to Check AD and TXK code levels in your EBS environment

Below query can be very handy in finding out current AD and TXK code levels. col ABBREVIATION for a10 set lines 1000 col NAME for a50 col CODELEVEL for a20 SELECT ABBREVIATION,NAME,codelevel FROM AD_TRACKABLE_ENTITIES WHERE abbreviation in ('txk','ad'); ABBREVIATI NAME                                                CODELEVEL ---------- -------------------------------------------------- ------------ ad           Oracle Applications DBA                             C.11 txk         Oracle Applications Technology Stack    ...

Query to fetch Function assigned to which responsibility

1. Check for which function needs to be assigned to which responsibility. 2. Check for responsibility's menu sytem administrator-> Secutiry -> responsibilty -> Define 3. Search for responsiblity (% Inventory User) 4. Get default Menu name and search for that menu System Administrator -> Application->Menu 5.Once you get Function name, go for function short name as follows - System Administrator -> Application->Function Enter Function Short code for below query SELECT frtl.responsibility_name,        fr.responsibility_key,        fm.menu_id,        fm.menu_name,        menu.function_id,        menu.prompt,        menu.grant_flag,        fffv.user_function_name,        fffv.function_name,      ...