Simple database installation with applyRU and applyOneOffs

Some of you may remember my blog post from April 22, 2021 about issues I saw with the unattended installation using applyRU and applyOneOffs switches. The installation failed with a strange jox error when I passed on the OJVM bundle to my installation queue. But there is relief – finally, after almost one year. So let me give you some background, and of course show you the workaround for the Simple database installation with applyRU and applyOneOffs.

Simple database installation with applyRU and applyOneOffs

Photo by Xan Griffin on Unsplash

What has happened?

A longer while ago, we introduced the very convenient ability to install patches right away in one action with runInstaller using the switches -applyRU and -applyOneOffs. You could have the most recent (or even an older) RU applied but also a list of one off patches, merges and bundles such as the OJVM patch.

But unfortunately, as soon as I’ve been thrilled by this simple installation technique, it started failing. Exactly in the case you wanted to apply the OJVM bundle, you received:

Error in invoking target 'irman ioracle idrdactl idrdalsnr idrdaproc' of makefile '/u02/patch/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oraInventory/logs/InstallActions2022-05-16_12-29-19PM/installActions2022-05-16_12-29-19PM.log' for details.

from Oracle Database 19.11.0 on.

And this was flagged in the install.log:

INFO: 
/u02/patch/lib//libserver19.a(joxwtp.o): In function `jox_eujs_nowait':
joxwtp.c:(.text+0xf7b): undefined reference to `jox_eujs_nowait_'

INFO: 
make: *** [/u02/patch/rdbms/lib/oracle] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'irman ioracle idrdactl idrdalsnr idrdaproc' of makefile '/u02/patch/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oraInventory/logs/InstallActions2022-05-16_12-29-19PM/installActions2022-05-16_12-29-19PM.log' for details.
Exception Severity: 1
INFO:  [May 16, 2022 12:39:35 PM] Linking RMAN Utility
INFO:  [May 16, 2022 12:39:35 PM] Linking RMAN Utility
INFO: The output of this make operation is also available at: '/u02/patch/install/make.log'
INFO:

I described it in this blog post:

And of course, I did open a bug for this issue and discussed this topic quite a few times with the development team:

  • Bug 32816171 – 19.11.0 INSTALLATION WITH “-APPLYRU -APPYONEOFFS” FAILS WHEN OJVM 19.11.0 INCLUDED: MAKEFILEEXCEPTION WITH JOX_EUJS_NOWAIT

Also a MOS note got written – which basically told you to install OJVM afterwards separately.

This of course is not a fancy workaround as it leads the concept ad absurdum.

Finally, more customers hit this trap in the following months.

 

There is relief – with a fix

It took a little while – and then apparently after a lot of back and forth, my bug got closed as a duplicate of another issue which had been raised later.

  • Bug 33865116 – REPLACE OBJ FILES IN LIBKNLOPT.A WITH FILES IN RDBMS/LIB WHILE LINKING ORACLE

Well, I don’t really care which bug is supposed to be a duplicate of another one. But I was curious whether this works. When you download the fix for Bug 33865116 and unpack it, you will recognize that it only exchanged the make file for the rdbms. Nothing more and nothing less than that.

So I did a quick test and kicked off an installation of 19.15.0 with the matching OJVM 19.15.0 on my Linux environment:

  • RU: p33806152_190000_Linux-x86-64.zip
  • OJVM: p33808367_190000_Linux-x86-64.zip

And as expected, it failed.

Then I added the fix for Bug 33865116 to my install queue – and now, magically, it worked fine without issues.

Hurray – this issue is now finally fixed. And as far as I can see, the fix should be included in the 19.16.0 July 2022 RU.

 

A quick step-by-step guidance

In short, this is what you need to do.

  1. Create a new Oracle Home
    Create your new Oracle Home directory, for instance /u01/app/oracle/product/19_15_0
  2. Download 19.3.0 Base Release
    Download the 19c base software and unzip it in this newly created Oracle Home
  3. Download newest OPatch
    Download the most recent OPatch and unzip it into the same directory with zip -o (overwrites the existing – too old – OPatch directory with the newer one)
  4. Create a patch directory
    Create a subdirectory where you unpack the patches into, for instance /u01/app/oracle/product/19_15_0/patch
  5. Download the newest RU
    Download the most recent RU, for instance 19.15.0. You can find it the easiest with MOS Note: 2118136.2 – Download Assistant for Patch Bundles. Unpack it into a separate directory, for instance into /u01/app/oracle/product/19_15_0/RU19150
  6. Download the newest OJVM
    Download the most recent OJVM, for instance 19.15.0. You can find it the easiest with MOS Note: 2118136.2 – Download Assistant for Patch Bundles. Unpack it into a separate directory, for instance into /u01/app/oracle/product/19_15_0/OJVM19150
  7. Download the Patch for the install issue
    Download the fix for Bug 33865116 and unpack into another separate directory, for instance into /u01/app/oracle/product/19_15_0/OUIpatch

Now you have the following structure:

$ tree -L 2
.
├── RU19150
│   └── 33806152
│   └── PatchSearch.xml
├── OJVM19150
│   └── 33808367
│   └── PatchSearch.xml
├── OUIpatch
    ├── 33865116
    └── PatchSearch.xml

It is important to keep patches in separate subdirectories as otherwise the PatchSearch.xml will be overwritten by every other patch, and the installation will fail.

And here is the solution – it is time to install:

./runInstaller -applyRU RU19150/33806152 -applyOneOffs OUIpatch/33865116,OJVM19159/33808367

Of course, you can pass on more one offs such as the DST patches or the JDK. Just separate them with a comma from each other in the above call.

And finally, don’t forget to cleanup:

  1. Remove the patch download zip archives
  2. Remove the subdirectories where you unpacked the patches into

 

Further Links and Information

–Mike

Share this: