This is the first post in a series which will dissect online patching internals.
With E-Business Suite 12.2.4, Oracle introduced a revolutionary feature called Online Patching, which cut down the downtime required for patching drastically. This comes very handy to those shops who need to be online as much as possible and downtimes are frowned upon.
To achieve online patching, Oracle had to alter their architecture a bit. Weblogic plays a major role in making online patching work, so does Edition Based Redefinition (EBR) feature of 11g R2.
In any system, care has to be taken to ensure that you provide consistency to the online users – which means you don’t change something when a user is in the middle of something. How do we do online patching then? Here comes the concept of dual file systems and database editions. EBS 12.2.4 and onward, the app server comes with two file systems – one named RUN and other names PATCH. Similarly, the database generates “editions” (footnote 1) during EBS patching.
Essentially, the concept is that when the DBA begins patching, the application creates a copy of the current file system (called RUN). The copy is called PATCH file system. At the same time, the database generates a new patch edition as well. All the patching activity is done on the PATCH file system and the patch edition and is 100% transparent to the end user (footnote 2). Then at a pre-defined window, the utility switches the RUN and PATCH file system and DB edition. So PATCH becomes RUN and the application is brought up – with the latest patch that we applied. This approach drastically reduces the downtime required – we need downtime only for the shutdown and switch of the file systems, and not for the actual patching process. Pretty Cool, huh?
Footnote 1 EBR will be discussed in a later post in detail Foot note 2: As always, edge cases exist, for example there could be custom concurrent programs that are deemed unfit to run while an online patching is done. This is a developer call and changes are done in the program definition to prevent data corruption. Another extensive topic and out of scope for this overview. Will be discussed in a later post.