On Red Hat 7 Linux VMs we use a zip of a 19c Oracle home with the latest quarterly database release update applied which at the moment in 19.16, the July 19, 2022 version. Our standard deployment script just unzips the gold image zip and then runs the installer silently with a response file. But when I ran the same process on a Red Hat 8 VM I got errors. I found something that said to set this variable to resolve the first error:
And then I got package missing errors which I could ignore about this package:
But I finally hit an error that I could not get around no matter what I did:
[FATAL] Error in invoking target ‘all_no_orcl’ of makefile ‘/oracle/product/db/184.108.40.206/rdbms/lib/ins_rdbms.mk’.
So, I opened a service request (SR) with Oracle support, and they gave me a series of steps to rebuild my 19.16 gold image zip in a way that would get past this error. There was only once step that I had to add to what they recommended so I want to document that here.
First, they recommended unzipping the base 19.3 install file in my oracle home and then putting in the current opatch. These steps looked like this on my system:
unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
cp p6880880_190000_Linux-x86-64.zip $ORACLE_HOME
mv OPatch OPatch.orig
This just left me with the base 19.3 install and the current opatch in the Oracle home but nothing installed.
Through a bunch of trial and error I found that I needed this step before I went further:
cp /etc/oraInst.loc /oracle/product/oraInventory
Our VMs come with an OEM client pre-installed so there is already an inventory. Maybe that is why I needed this step. I have not had a chance to test this on a clean RHEL 8 VM without an OEM client installed.
Next, I had to run the actual install which required an X server with the DISPLAY variable setup. I had fun getting this to work with MobaXterm and its ssh tunnel feature but once I figured it out it worked great. I ended up setting my DISPLAY variable like this:
I set the tunnel to listen on port 6000 on my RHEL8 vm and connected it to that same port on the ip for my MobaXterm X server. Maybe that needs a separate post, but other people probably do this all the time.
The install uses this patch:
Patch 34160854: COMBO OF OJVM RU COMPONENT 220.127.116.11.220719 + GI RU 18.104.22.168.220719
I unzipped this to /oracle/db01/install/34160854
Then I ran the install like this:
./runInstaller -applyRU /oracle/db01/install/34160854/34130714
This spit out some text messages about applying the patch but then went into the normal graphical interactive installation steps through X windows. I did a standalone binary install without RAC.
Next, I had to apply the other part of the combo patch:
$ORACLE_HOME/OPatch/opatch apply /oracle/db01/install/34160854/34086870
This ran like a typical opatch apply.
Now that I had followed Oracle’s instructions to install 19.16 in a way that could be made into a gold image that works on RHEL 8 I did the following to make the gold image:
./runInstaller -silent -createGoldImage -destinationLocation /oracle/db01/install
Then I blew away everything in the oracle home and the inventory directory and redid the install from the new gold image like this:
unzip /oracle/db01/install/db_home_2022-09-20_05-53-23PM.zip -d $ORACLE_HOME
$ORACLE_HOME/runInstaller -silent -responseFile $ORACLE_HOME/19cresponsefile.rsp
The response file was the same that we always use for 19c on RHEL 7. Also, I did not need to set CV_ASSUME_DISTID=’OL7′ because the gold image has a recent version of the installer that does not require it. I think the main point of installing from patch 34160854 was to get a patched version of the installer that works with RHEL 8. My old gold image zip was made from the base 19.3 zip with the 19.16 database release update applied. Evidently that did not update the installer to make it support Red Hat 8, so I had to build a new gold image using patch 34160854 as described above.
Anyway, I don’t have a ton of time to go back and clean all this up right now but hopefully this basic dump of information will be helpful to someone. If nothing else, it will remind me!