JDK patching happens with every RU since January 2020

A while ago, a customer asked me whether he needs to apply JDK patches separately. He discovered that the JDK in the $ORACLE_HOME is quite outdated. But there was no clear answer available. And the MOS Note he pointed me to, seemed to be quite incomplete. But times have changed. And JDK patching happens with every RU since January 2020.

JDK patching happens with every RU now

Photo by David Billings on Unsplash

JDK who?

JDK stands for Java Development Toolkit. As the Wikipedia article explains, “the JDK includes a private JVM and a few other resources to finish the development of a Java Application”. And it is used by various Oracle tools. For instance, in AutoUpgrade we use the java loader for java binaries – and we do the same for the preupgrade.jar. OPatch delivers a JDK, too. And following a discussion earlier this year with Dominic Giles on JDK versions in our homes, I realized that my Oracle Homes don’t have necessarily the newest JDKs in them.

On this page you find the newest JDKs (you need to scroll down a bit):

In Oracle 19c, we use JDK 1.8 – and the most recent, while I write this blog post, would be Java SE 8u251.

This is also the one you can download directly from MOS Note: 2584628.1 – JDK and PERL Patches for Oracle Database Home and Grid Home:

JDK patching happens with every RU now

MOS Note: 2584628.1 – JDK and PERL Patches for Oracle Database Home and Grid Home

What is in my home?

Now I’m curious. I booted my old 18c hands-on lab as in the current one I have everything patched already to the April 2020 bundles. But which JDK versions will I find in the more-than-one-year-old lab?

At first, I check what my OS – in this case:

  • cat /etc/os-release
    
    NAME="Oracle Linux Server" 
    VERSION="6.10" 
    ID="ol" 
    VERSION_ID="6.10" 
    PRETTY_NAME="Oracle Linux Server 6.10"

And it has the following JDK from the OS side:

  • oracle@localhost:/u01/app/oracle/product/11.2.0.4/jdk/bin
    $ java -version
    java version "1.7.0_221"
    OpenJDK Runtime Environment (rhel-2.6.18.0.0.1.el6_10-x86_64 u221-b02)
    OpenJDK 64-Bit Server VM (build 24.221-b02, mixed mode)

Afterwards, then I check my database homes:

    • Oracle 11.2.0.4 with PSU 11.2.0.4.180717
      oracle@localhost:/u01/app/oracle/product/11.2.0.4/jdk/bin
      $ ./java -version
      java version "1.5.0_51"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_51-b10)
      Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_51-b10, mixed mode)
    • Oracle 12.1.0.2 with BP 12.1.0.2.191015
      oracle@localhost:/u01/app/oracle/product/12.1.0.2/jdk/bin
      $ ./java -version
      java version "1.6.0_75"
      Java(TM) SE Runtime Environment (build 1.6.0_75-b13)
      Java HotSpot(TM) 64-Bit Server VM (build 20.75-b01, mixed mode)
    • Oracle 18c with RU 18.8.0.0.191015
      oracle@localhost:/u01/app/oracle/product/18/jdk/bin
      $ ./java -version
      java version "1.8.0_171"
      Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
      Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

Now a quick check via any search engine reveals the release date of each JDK:

Checking with the April 2020 Patch Bundles

I repeat the same test now in my current lab environment.

At first again, I check my operating system:

  • cat /etc/os-release
    
    NAME="Oracle Linux Server"
    VERSION="7.7"
    ID="ol"
    ID_LIKE="fedora"
    VARIANT="Server"
    VARIANT_ID="server"
    VERSION_ID="7.7"
    PRETTY_NAME="Oracle Linux Server 7.7"

As I update it on a regular basis, it has the following JDK deployed:

  • $ /usr/bin/java -version
    openjdk version "1.8.0_242"
    OpenJDK Runtime Environment (build 1.8.0_242-b08)
    OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

Then I check the JDK versions in my 3 Oracle Homes. I patched them recently with the April 2020 bundle patches:

  • Oracle 11.2.0.4 with PSU 11.2.0.4.200414
    oracle@hol:/u01/app/oracle/product/11.2.0.4/jdk/bin
    $ ./java -version
    java version "1.5.0_51"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_51-b10)
    Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_51-b10, mixed mode)
  • Oracle 12.2.0.1 with Apr 2020 RU: 12.2.0.1.200414
    oracle@hol:/u01/app/oracle/product/12.2.0.1/jdk/bin
    $ ./java -version
    java version "1.8.0_241"
    Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
    Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
  • Oracle 19.7.0 with RU 19.7.0.0.200414
    oracle@hol:/u01/app/oracle/product/19/jdk/bin
    $ ./java -version
    java version "1.8.0_241"
    Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
    Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
    

The important part here is: When you patch with an RU, no matter if it is Oracle 12.2.0.1, Oracle 18c or Oracle 19c, you will always get a recent JDK installed into the database home. By default this will be a 3 month year old JDK. The version 1_.8.0_241 is from January 2020.

This has been initiated in with the January 2020 RUs.

You can still patch to the match recent one. MOS Note: 2584628.1 – JDK and PERL Patches for Oracle Database Home and Grid Home offers you the download to it.

OPatch’es JDK?

All the April 2020 Opatch deployments deliver the same JDK. I’ve had to exchange all my OPatch versions before being able to apply the April 2020 patch bundles.

  • OPatch
    oracle@hol:/u01/app/oracle/product/12.2.0.1/OPatch/jre/bin
    $ ./java -version
    java version "1.8.0_191"
    Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

This version 1.8.0_191 is from October 2019.

The OPatch owners confirmed that with the next opatch version being available most likely end of April 2020, you will get the same JDK as the database homes.

Summary

Since the January 2020 Release Updates, each RU (and I guess the RURs as well) contains a stable 3 month old JDK. This applies to Oracle 12.2.0.1, Oracle 18c and Oracle 19c. Of course, you can patch your older versions manually as well. And for instance, in the case of Oracle 11.2.0.4 you should do that as the current JDK is almost 5 years old and quite “insecure” I’d say. MOS Note: 2584628.1 – JDK and PERL Patches for Oracle Database Home and Grid Home is your best friend and gives you access to the recent JDK patch numbers and downloads.

More Information and Links

–Mike

Share this: