Monday, April 22, 2019

Creating Gold Images on 18c

Both gridSetup.sh in grid infrastructure and runInstaller in Oracle database software has the option to create gold images from an installation. This facilitate standardization and uniformity. Moreover each time a patch is applied a new gold image could be created which will include the patched binaries. So any new home created from the gold image will also include the patch. This post shows steps for creating gold image for grid infrastructure and oracle database.

Creating Gold Image of Grid Infrastructure
Gold image from a grid infrastructure setup is created using gridSetup.sh with the createGoldImage option. By default this expect X-windows to be available. If not the execution will fail.
./gridSetup.sh -createGoldImage -destinationLocation /media/giGold
ERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.

Secondly the destination location must be at least 23GB, even though the final zip file generated could be 5-6 GB (depending on excluding certain files). Execution will fail if there isn't sufficient space
./gridSetup.sh -createGoldImage -destinationLocation /media/giGold -silent
Launching Oracle Grid Infrastructure Setup Wizard...

[FATAL] [INS-32707] The specified destination location (/media/giGold) does not have enough free space.
   ACTION: Provide a destination location path with at least (22,694) MB of free space.
If there's no risk of patches being rolled back, then the .patch_storage folder could be excluded from the gold image. This will reduce the size of the final zip file created. Other candidates for exclusions are files that have the server hostname in the name.
 ./gridSetup.sh -createGoldImage -destinationLocation /media/giGold -silent -exclFiles $GI_HOME/.patch_storage
Launching Oracle Database Setup Wizard...

Successfully Setup Software.
Gold Image location: /media/giGold/grid_home_2019-03-26_12-20-38PM.zip
Any new grid infrastructure installation done using the gold image will have the patches.
$ /opt/app/oracle/product/18.x.0/grid/OPatch/opatch lspatches
28864607;ACFS RELEASE UPDATE 18.5.0.0.0 (28864607)
28864593;OCW RELEASE UPDATE 18.5.0.0.0 (28864593)
28822489;Database Release Update : 18.5.0.0.190115 (28822489)
28547619;TOMCAT RELEASE UPDATE 18.0.0.0.0 (28547619)
28435192;DBWLM RELEASE UPDATE 18.0.0.0.0 (28435192)
27908644;UPDATE 18.3 DATABASE CLIENT JDK IN ORACLE HOME TO JDK8U171
27923415;OJVM RELEASE UPDATE: 18.3.0.0.180717 (27923415)
The gold image doesn't zip all the files in the current installation. Some directories such as log directories are excluded automatically. In previous versions when installing from a gold image, these missing folders caused issue. But this appear to be fixed on 18c and no issues were encountered when a new installation was done using the gold image.




Creating Gold Image of Oracle Database
The gold image for Oracle database software is created using runInstaller. There are two runInstallers inside an OH. One is in $OH/runInstaller and other is in $OH/oui/bin/runInstaller. This gold image creating option is only available in $OH/runInstaller.
./runInstaller -createGoldImage -destinationLocation /media/ohGold -silent -exclFiles $ORACLE_HOME/.patch_storage
Launching Oracle Database Setup Wizard...

Successfully Setup Software.
Gold Image location: /media/ohGold/db_home_2019-03-26_03-35-48PM.zip
As mentioned earlier patch storage could be excluded from the gold image. Any new database installation created using the gold image will have the patches already applied.
/opt/app/oracle/product/18.x.0/dbhome_1/OPatch/opatch lspatches
28864593;OCW RELEASE UPDATE 18.5.0.0.0 (28864593)
28822489;Database Release Update : 18.5.0.0.190115 (28822489)
27908644;UPDATE 18.3 DATABASE CLIENT JDK IN ORACLE HOME TO JDK8U171
27923415;OJVM RELEASE UPDATE: 18.3.0.0.180717 (27923415)
Any new database created will also have the post patch scripts applied.
SQL> select PATCH_ID,PATCH_TYPE,ACTION,STATUS,SOURCE_VERSION,TARGET_VERSION,ACTION_TIME from dba_registry_sqlpatch;

  PATCH_ID PATCH_TYPE ACTION          STATUS                    SOURCE_VERSION  TARGET_VERSION  ACTION_TIME
---------- ---------- --------------- ------------------------- --------------- --------------- ------------------------------
  28822489 RU         APPLY           SUCCESS                   18.1.0.0.0      18.5.0.0.0      27-MAR-19 12.10.44.167872 PM
  27923415 INTERIM    APPLY           SUCCESS                   18.1.0.0.0      18.1.0.0.0      27-MAR-19 12.10.44.171197 PM

Update on 2021-02-15

It appears creating gold image excluding .patch_storage could cause issues down the line even if explicity patch rollback is not done. For example, a gold image was created from a GI home which had RU 19.5 and one-off patch 29013832 installed (needed to fix an issue on AFD). The installation using the gold image was fine until RU 19.10 was applied. During GI home patch the opatchauto command failed with and following could be seen on the patch logs
[Feb 15, 2021 3:25:56 PM] [INFO]    Patch 29013832:
                                    Copy Action: Directory "/opt/app/oracle/product/19.x.0/grid/.patch_storage/29013832_Oct_25_2019_13_06_10" does not exists or is not readable.
                                    'oracle.rdbms, 19.0.0.0.0': Cannot copy file from 'asmcmdafd.pm' to '/opt/app/oracle/product/19.x.0/grid/lib/asmcmdafd.pm'
[Feb 15, 2021 3:25:56 PM] [INFO]    Prerequisite check "CheckRollbackable" on auto-rollback patches failed.
                                    The details are:

                                    Patch 29013832:
                                    Copy Action: Directory "/opt/app/oracle/product/19.x.0/grid/.patch_storage/29013832_Oct_25_2019_13_06_10" does not exists or is not readable.
                                    'oracle.rdbms, 19.0.0.0.0': Cannot copy file from 'asmcmdafd.pm' to '/opt/app/oracle/product/19.x.0/grid/lib/asmcmdafd.pm'
[Feb 15, 2021 3:25:56 PM] [SEVERE]  OUI-67073:UtilSession failed: Prerequisite check "CheckRollbackable" on auto-rollback patches failed.

It appears RU 19.10 does an implicity rollback of the patch 29013832 (as it is included in RU 19.10) but the old version of (19.5) is not available.
As old patch directory (29013832_Oct_25_2019_13_06_10) could not be copied over from an earlier setup, had to recover from this situation by reinstalling GI as software only and then configuring HAS.
So it maybe best to create the gold images with .patch_storage folder though that can add several GBs to the final size of the gold image.