I blogged multiple times about DBMS_OPTIM_BUNDLE, the package to work with the Fix Control Persistence (FCP) framework in the database. And we also gave recommendations over the years that you need to test carefully when you are going to enable the fixes while patching. But it is a good practice do enable them when you do upgrade testing, and also when you start creating new databases in a new environment. Just make sure you keep the settings equal across your environments. The other day I received a question from Dennis asking about DBMS_OPTIM_BUNDLE – what it shows, and what oradiff lists.

Photo by Steve A Johnson on Unsplash
DBMS_OPTIM_BUNDLE?
As mentioned, I blogged a bit about it over the years, and you can browse through the various blog posts of interest.
- DBMS_OPTIM_BUNDLE Package in Oracle 12.2 and 18c
- DBMS_OPTIM_BUNDLE and the standby database?
- DBMS_OPTIM_BUNDLE and Out-Of-Place Patching
- Should you enable _fix_controls with DBMS_OPTIM_BUNDLE?
- New interesting underscores for more than 255 _FIX_CONTROLs
The key is that you are using this command to see the fixes you can toggle (mostly to enable them, some also to disable them) via the package:
SQL> set serveroutput on; SQL> execute dbms_optim_bundle.getBugsforBundle;
Once you have the list, you can toggle the entire stack with one single call:
SQL> execute dbms_optim_bundle.enable_optim_fixes('ON','BOTH', 'YES');
Make sure you check beforehand whether you have other fixes set under _fix_control as the above call will wipe them out.
Why is there a divergence?
Coming back to the topic Dennis raised (and thanks again for bringing this up). He did wonder for the 19.30 Release Update 5 fixes get listed:
SQL> execute dbms_optim_bundle.getBugsforBundle(260120);
….
19.30.0.0.260120DBRU:
Bug: 34807859, fix_controls: 34807859
Bug: 37695497, fix_controls: 37695497
Bug: 31495387, fix_controls: 31495387
Bug: 33875479, fix_controls: 32455005
Bug: 34396205, fix_controls: 34396205
when oradiff.oracle.com lists 7 ??
At first, you need to logon to oradiff.oracle.com, and under “Included Fixes” with the subitem “Fix Controls” you can do this comparison:

oradiff.oracle.com ==> Included Fixes ==> Fix Controls: 19.29 vs 19.30
I think the package lists zero in 19.31 while oradiff lists 5 fix controls.
Why this divergence?
First of all, oradiff.oracle.com takes the information simply from V$SYSTEM_FIX_CONTROL as you can see in the above screenshot – and of course in oradiff.oracle.com itself, too. Hence, this isn’t a secret.
But why is there a divergence?
We did ask internally, and we learned that the difference comes from where the fix gets in. If it is coming with an RU only, then it will be covered under the FCP regime, and you can easily enable/disable it at will with the above calls. But when it had been implemented into the MAIN code line, too, then it doesn’t get covered under FCP assuming it has a given setting right out of the box. This is required for consistency across releases as well.
Still, it gets listed in the V$SYSTEM_FIX_CONTROL because it has a switch, and you can toggle it if you want or need to toggle it.
I know, this doesn’t sound logic at first sight. But be assured that it makes sense and is required in the way how FCP is implemented. In case you ever ask yourself the same thing Dennis did, you will find the reasoning here.
Further Links and Information
- DBMS_OPTIM_BUNDLE and disabling another fix
- DBMS_OPTIM_BUNDLE Package in Oracle 12.2 and 18c
- DBMS_OPTIM_BUNDLE and the standby database?
- DBMS_OPTIM_BUNDLE and Out-Of-Place Patching
- Should you enable _fix_controls with DBMS_OPTIM_BUNDLE?
- New interesting underscores for more than 255 _FIX_CONTROLs
–Mike
Hi Mike, We’ve gotten into the habit of switching to the latest release early on and consistently enabling the corresponding optimizer fixes. The “test” begins in our dev environment, and if we don’t notice anything unusual—or even run into major issues—by the time we reach the testing phase, we always roll out the same setup to all customers using that software version. Is there a reason not to do that?
It’s a shame that the latest RUs have always had teething problems. I hope that improves soon.
Regards
Roland
Thanks Roland – and happy and glad to hear that.
Daniel and I received similar messages at recent events where customers felt out of a cushion realizing that enabling optimizer fixes made their apps run significantly faster. But you name the crucial part already: You need to test carefully.
And yes, I agree with your observation on RUs. This makes it really hard, and I hope that we’ll do better quickly.
Mike