Blog

One-off ODA patch in the database

Share this article

When applying an ODA patch, you use a dedicated patch bundle which include the patches for all the different component ranging from the disk firmware and the OS to the database software itself. These patch bundles are then installed using oakcli (or odacli, depending on your ODA version).
Given this patch methodology and given that an ODA really needs to be considered an appliance (hence the name Oracle Database Appliance), it is generally not advised to install additional one-off patches.

oda patch one-offBut, not recommended is not the same as not allowed and certainly not the same as not possible.
And let’s face it, sometimes you run into a bug that is important enough for you that you can’t wait until the next ODA patch bundle (and hope the fix will be included).
Applying the one-off patch is simple enough, using the standard opatch utility.
Just don’t forget to uninstall the patch before you install a new ODA patch bundle.

However, it becomes more annoying when you need to find out if an one-off patch you have installed will be conflicting with the new patch bundle or not.
Requesting merge patches takes time, so this is not something you want to find out after applying the ODA patch bundle.
Note 888888.1 on Oracle Support will show you which PSU bundle is included in the ODA patch bundle, but it will not show you which additional one-off patches are included in the bundle.
And neither will the patch bundle readme nor any other MOS note (at least none that I found).
This caused me to search for another way to get this information.

Extracting the ODA patch list

One way I found was to use the db home clone file, which accompanies each new ODA patch bundle.
This file is in essence a tarred Oracle Home, which is used to setup a new Oracle Home when creating an Oracle database. And which has all the database patches from the patch bundle “pre-installed”.
As each Oracle Home has their own inventory which stores the information on the installed patches, we can use this inventory to list the patches.

1. Listing the ODA patch numbers

First, we need to extract the inventory part of the clone file.
Using some pipe constructs, this can be done without extracting everyting

[root@nnnnnnnn clone_files_12.1.2.12.0]# unzip -l p19520042_1212120_Linux-x86-64.zip
Archive:  p19520042_1212120_Linux-x86-64.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
2717317120  09-21-2017 07:11   OAKEndUserBundle_12.1.2.12.0_170920.tar
     1303  09-30-2017 03:33   README.txt
---------                     -------
2717318423                     2 files

[root@nnnnnnnn clone_files_12.1.2.12.0]# unzip -p p19520042_1212120_Linux-x86-64.zip OAKEndUserBundle_12.1.2.12.0_170920.tar | tar -tf -
./pkgrepos/orapkgs/DB/12.1.0.2.170814/Base/db121.tar.gz
./pkgrepos/System/12.1.2.12.0/conf/EndUserImage.xml


[root@nnnnnnnn clone_files_12.1.2.12.0]# unzip -p p19520042_1212120_Linux-x86-64.zip OAKEndUserBundle_12.1.2.12.0_170920.tar | tar -xf - -O ./pkgrepos/orapkgs/DB/12.1.0.2.170814/Base/db121.tar.gz | tar -xzf - inventory/oneoffs/

Now that we have extracted the files from the inventory into the current directory. We can list the patch numbers:

[root@nnnnnnnn clone_files_12.1.2.12.0]# cd inventory/oneoffs/

[root@nnnnnnnn oneoffs]# ls -alh
total 76K
drwxr-xr-x 19 oracle oinstall 4,0K sep  8 20:01 .
drwxr-xr-x  3 root   root     4,0K okt 10 13:19 ..
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 19769480
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 20299023
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 20831110
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 21359755
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:59 21794615
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 21948354
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 22291127
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 23054246
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 24006101
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 24732082
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 20:00 25034396
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 25171037
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 25755742
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 20:00 25897615
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 20:01 26477255
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 19:58 26609783
drwxr-xr-x  4 oracle oinstall 4,0K sep  8 20:01 26609945

2. Excluding the PSU

Some of these patches are part of the PSU patch bundle. To exclude these, we can search for the composite.xml file and list the contents

[root@nnnnnnnn oneoffs]# ls -alh ./*/etc/config/composite.xml
-rw-r----- 1 oracle oinstall 484 sep  8 12:55 ./26609783/etc/config/composite.xml

[root@nnnnnnnn oneoffs]# cat ./26609783/etc/config/composite.xml

Excluding the patches listed in the file from the patches found in the inventory/oneoffs/ directory leaves us with the following patches:

  • 21794615
  • 25034396
  • 25897615
  • 26477255
  • 26609945

In addition to get more information on these patches, we can look at the inventory.xml file within each patch sub directory

[root@nnnnnnnn oneoffs]# cat ./21794615/etc/config/inventory.xml


    
    
    12.1.0.1.4
    21536483
    false
    
    
        
    
    
        
        
    
    
        
    
    
        
    
    
        
    
    true
    
    true
    false
    false
    
    
        
    
    
        
    
    
    
    
    
    false
    false

3. Filtering the one-off patches

One of these patches will be the OCW Patch Update, which is also part of the PSU itself and thus can also be excluded.
After checking the remaining patches, we get the following list of one-off patches that will be installed on top of the PSU bundle patch as part of the 12.1.2.12 patch bundle:

21794615
  21794615 - LNX64-122-RAC-CDB LMS HUNG ON 'LATCH  GC ELEMENT',LMD ORA-600[KJMSCNDSCQ TIMEOUT

25034396
  25034396 - ADVM VOLUMES SHOULD SUPPORT MAXIMUM FILE SIZE OF 1PB

25897615
  25897615 - ORA-600 [KGFMGETCTX0], [KGFM.C]

26477255
  23053606 - LNX64-121-CMT  FAIL TO PATCH GI ON 1ST NODE  ERROR SET ASM TO ROLLING PATCH MODE"
  23108128 - TRACKING BUG TO SUPPORT FLASH AND REDO DISKGROUP ON SAME DISK FOR ODALITE LARGE"
  26430737 - TRACKER BUG FOR RTI 20192990 THAT FIXES REGRESSION IN BUG 25601566"

Conclusion

When patching an ODA, additional one-off patches are installed on top of the Patch Set Update. But Oracle has not documented which ones.
Therefore, you can use the method above to find this information using the db home clone file.

ps) If you are looking for other interesting MOS notes you can checkout our Handy Oracle support notes list.

Tags: Blog
DBA weekend 2017
Oracle Content and Experience Cloud Service

You May Also Like