PSU or BP? Patch Set Update or Bundle Patch?

Well, in my new role as unofficial Junior Product Manager for Patching (just kidding) I get asked once a day (at least!) via email or in customer meetings or workshops: Should we take the PSUs or the BPs?

Should we take the PSUs or the BPs ?

PSUs are Patch Set Updates, BPs are (sometimes called: Proactive) Bundle Patches.

And the answer is very simple:

  • If you have an Oracle Engineered System: Take the Bundle Patches for Engineered Systems
  • In all other cases:
    • If you are on Oracle Database 12.1.0.x or newer: Take the Bundle Patches
    • If you are on Oracle Database Take the Patch Set Updates
    • If you are on a release below Oracle Database Upgrade!

Is there an official recommendation or guideline?

Yes, of course, there’s one. Very well explained in MOS Note: 1962125.1 – Overview of Database Patch Delivery Methods:

Bundle Patch Recommendation

Recommendation for Oracle 12c: Bundle Patches

What else do you need to know?

  1. Q: Is there a difference between “Bundle Patch” and “Proactive Bundle Patch“.
    A: It’s the same thing.
  2. Q: Can I apply Exadata Bundle Patches on non-Exadata Systems in Oracle 11g?
    A: Even though this is technically possible for Linux, there are certain restrictions. This is only supported in a standby configuration where one part is operated on an Exadata. See the FAQ at the end of MOS Note: 1962125.1 – Overview of Database Patch Delivery Methods
  3. Q: Can I flip from PSUs to BPs?
    A: When you approach a release or patch set upgrade (i.e. Oracle Database to Oracle Database, or Oracle Database to Oracle Database you will start from scratch and have the full choice. But in-between a release you’ll have to deinstall at least the sql changes and roll in the new sql changes when you change between PSUs and BPs or vice versa. See my previous blog posts about switching from PSUs to BPs:
  4. Q: Why does Oracle still deliver PSUs in Oracle 12c even though it recommends to use the BPs?
    A: I don’t know. I can just assume that some customers insist to get the PSUs having a smaller number of fixes meaning potentially lower effect on their systems. But personally I totally disagree. When you look up the current issues list for Oracle you will find out that many of the fixes are included in the BPs but not in the PSUs. If it would be my choice, I can perfectly (and better) live without PSUs but only getting BPs instead.
  5. Q: I have issues with the patches’ readme – can you explain it to me?
    A: No. Please log an SR. I get the “readme complaint” from almost every customer I see. And I see all the points and agree in most of them. Still, I’m not the owner of patching nor the owner of the readme’s. Telling it me is good – but telling it Oracle Support via an SR, and force a bug to be logged is the much better solution. Please please please, do log SRs when you are not happy with the patches’ readme, when things are unclear or wrongly carried over or whatever. The readmes get written by humans and they will need your feedback to improve the readmes.



At the DOAG Conference in November in Nürnberg in November 2016 a customer asked me right after my talk about “Upgrade to Oracle Database 12.2. – Live and Uncensored” why the DBA_REGISTRY_HISTORY does not get updated when he applies a Bundle Patch and follows all instructions including the “./datapatch -verbose” call.

I was wondering as well and asked him to open an SR. Which he did. And he received the message from Support that it is not supposed to appear in Oracle 12c anymore this way but only in DBA_REGISTRY_SQLPATCH. Now I dug a bit deeper internally to get a clear statement (thanks to Carol (my boss) and Rae (my teammate) and Scott (the man who owns datapatch) for following up!).

Patch Query in Oracle Database 11g

Tim Hall has published this simple and quite helpful script to query applied PSUs and BPs in Oracle Database 11g:
Script to monitor DBA_REGISTRY_HISTORY

And the output in my environment looked like this:

 -------------------- ------- ------- -------- ------- -------------------- ---
 01-JUL-2016 15:24:56 APPLY   SERVER 160419  PSU  PSU
 21-OCT-2016 17:40:32 APPLY   SERVER 161018  PSU  PSU

But running the same script on Oracle Database returnes (as for the customer) “no rows selected“.

Patch Query for Oracle Database 12c

Since Oracle Database we use DBA_REGISTRY_SQLPATCH instead of DBA_REGISTRY_HISTORY to track PSUs and BPs applied to the database. I used this script: check_patches.sql.

My output in Oracle Database looks like this:

-------------------- ------- -------- -------------------- -------- -------- ----
21-OCT-2016 17:29:36 APPLY   SUCCESS  DBP: 24340679 DBBP

when using this tiny script:

COLUMN action_time FORMAT A20
COLUMN description FORMAT A40
COLUMN bundle_series FORMAT A10

SELECT TO_CHAR(action_time, 'DD-MON-YYYY HH24:MI:SS') AS action_time,
 FROM   sys.dba_registry_sqlpatch
 ORDER by action_time;

But the question remains if – as in Oracle Database – both views should get updated.


In, we used the script catbundle.sql to apply bundle patches.  It uses DBA_REGISTRY_HISTORY only.  For with the introduction of datapatch, we now have the (much better) DBA_REGISTRY_SQLPATCH.  This is used for both, bundle and non-bundle patches.  In Oracle Database for bundle patches we actually called catbundle internally, so in both registries were updated for bundle patches.
Starting in, however, only DBA_REGISTRY_SQLPATCH is queried and updated for bundle and non
bundle patches.

Update [Dec 23, 2016]

After discussing this and other issues with the owners of datapatch my teammate Rae logged a bug for this issue as we believe both views should be updated as it happened in Bug# 25269268 tracks the issue.


July 2016 – Proactive BPs and PSUs are available

Last night the July 2016 patches got released

Not all of them actually. In case you miss AIX, Intel Solaris and zLinux versions those should be available by Friday, July 22, 2016.

See the Oracle Critical Patch Update Advisory July 2016 for further details, and especially the Database announcement on MOS.

What’s new, what’s important?

First of all the renaming of DBIM and Exadata Bundle Patches into PROACTIVE BUNDLE PATCHES is now settled in more MOS notes.

2.1 Database patch for Engineered Systems and Database In-Memory renamed to “Proactive Bundle Patch”

Starting from Apr2016 onwards the prior Database Bundle that was called “Database patch for Engineered Systems and Database In-Memory” will now be called “Proactive Bundle Patch”. This patch will continue be a cummulative patch and will include all prior fixes. The Apr2016 Proactive BP can also be applied on top the Jan2016 “Database patch for Engineered Systems and Database In-Memory”.

Does Oracle really recommend the Proactive Bundle Patches?

Well, I blogged about it almost 3 months ago and received several emails and comments from customer and colleagues sending me either complaints or SRs where somebody in Oracle Support gave them a hard time as one has applied a Proactive Bundle patch on a non-Exadata system. Hm … the fact the Proactive BPs were available in Solaris, AIX and HP-UX as well got simply ignored. Sorry for the inconvenience – but Oracle is a big ship and sometimes it takes a while until the message reaches really everybody.

Anyhow, in case you get into discussion with Oracle Support people in an SR please direct them to MOS Note: 1962125.1 – Oracle Database – Overview of Database Patch
Delivery Methods

Oracle makes the following recommendation for which patch method to use for Database related installations:

  • Every customer should at least install PSUs. Minimal testing required.
  • Customers wanting a more comprehensive set of fixes should install the Database Proactive Bundle patch. This requires a bit more testing than a Patch Set Update (PSU), but delivers a larger set of fixes

1 The “Database Proactive Bundle Patch” requires a bit more testing than a Patch Set Update (PSU) as it delivers a larger set of fixes. 

[above table and text is taken from MOS Note:1962125.1 as of July 20, 2016]

Other changes you should be aware of?

And you’ll find also significant changes in the naming in MOS Note:1683799.1 – Patch Set – Availability and Known Issues. The Recommended Patches section differentiates now between Exadata, RAC and non-RAC systems making your choice much easier, and removes the misleading naming for DBIM:

Non Exadata Non RAC

Document Description Rolling RAC Patch Download
Note:23615334.8 Combo of OJVM PSU and DBBP (Jul 2016) Part Patch:23615334
Note:23615289.8 Combo of OJVM PSU and DB PSU (Jul 2016) Part Patch:23615289
Note:23273686.8 Database Proactive Bundle Patch (Jul 2016) Yes Patch:23273686
Note:23177536.8 Oracle JavaVM Component Database PSU (Apr 2016) (OJVM PSU) No Patch:23177536
Note:23054246.8 (Jul 2016) Database Patch Set Update (DB PSU) Yes Patch:23054246

I’d recommend you the one in BOLD letters unless you use OJVM and require the OJVM patch in addition.

And finally … the summary!

For those who have no time to read such a lengthy blog post here’s the important facts:



Please be aware of:

  • Two workarounds:
    • Addition of UnixODBC package to server
      • Install the “unixODBC” packages:
        yum install unixODBC
      • Re-run the
        • cd $ORACLE_HOME/odbc/lib/
        • make -f isqora
    • Removing the sqora relinking from ‘actions.xml’ file of Linux x86-64 DBPSU
      • It is already removed from all the other platforms


Oracle April 2016 PSU and Proactive BPs are there

Hurray, it’s Patching Day!

Sounds a bit like D-Day 😉 But April 19, 2016 the most recent April PSUs (Patch Set Updates) and BPs (Bundle Patches) got released.

Find all the necessary information with the below links:

The important change in the April PSU/BP release:
The database patch for “Engineered Systems and Database In-Memory” luckily got renamed into “Proactive Bundle Patch”. That is not only a rebranding but it should express that we would like to encourage you to apply the Bundle Patches
instead of the PSUs. Simple reason is that the BPs will contain optimizer fixes.

In the MOS Note: 2102148.1 (Patch Set Update and Critical Patch
Update April 2016 Availability Document)
you’ll find a section 3.1.4 linking to the database patches.

This is the recommended one for Oracle Database

  • Database Proactive Bundle Patch (Apr2016) Patch 22899531,

But right now it is available for Linux-x86-64, zLinux and Intel Solaris only. Not sure when the others will get released. Please find links to the regular PSUs and other ports and releases such as and Windows etc in the above MOS Note: 2102148.1.

This is the list of fixes included in this Bundle Patch:

And don’t worry about the name – I found out yesterday that not all MOS Notes have adopted the new naming convention to rename “Bundle Patches for Engineeered Systems and DB In-Memory” which was very misleading anyway into the new “Proactive Bundle Patches” naming. This may take a few additional days I’d guess …

I will download it right now and patch my HOL environment.

And as usual don’t forget the most recent version of opatch (Patch 6880880).

opatch download MOS


PSU October 2014

October 14, 2014 Oracle released a new Patch Set Update. And as usual we strongly recommend that you’ll apply it as soon as possible to your databases.

There’s one fix for JAVA in it which requires to either take the database down or do some other actions. Please find a detailed description here:

  • Eric Maurice’s security blog:
    Due to the nature of the fixes required, Oracle development was not able to produce a normal RAC-rolling fix for these issues. To help protect customers until they can apply the Oracle JavaVM component Database PSU, which requires downtime, Oracle produced a script that introduces new controls to prevent new Java classes from being deployed or new calls from being made to existing Java classes, while preserving the ability of the database to execute the existing Java stored procedures that customers may rely on.”
  • MOS:1929745.1 – “Oracle
    JavaVM Component Database PSU”