If you are new to Oracle or lost in 1000s of pages of Oracle documentation, then these terms patch set , PSU or CPU is sure to create some kind of confusion.
Based on my experiences with 11gR2, looks like PSU is the way to go. For example we applied PSU3 to resolve mutex issues since there was no one-off fix w/o the PSU route. I also thought that PSUs were more flexible than I initially assumed because when we encountered another bug(10190759), the bug fix was available only for 188.8.131.52 (w/o PSU 3). Oracle still recommended applying this patch to 184.108.40.206.3(with PSU3) and it worked.
Here is brief summary of what is the difference between patch set , PSU and CPU. I will start with a image, might not be 100% accurate but will help a long way in understanding the differences.
Patch sets and PSU
PSU’s(Patch set updates) are patch sets but with some major differences with respect to regular patch sets.
PSUs are generally low risk and do not contain fixes to bugs that require configuration changes or impact database components like optimizer. To achieve this low risk behavior, Each PSU is limited from 25 to 100 new bug fixes. PSU’s are also well tested by Oracle compared to one off patches.
PSUs are referenced by their 5th place in the Oracle version numbers which makes it easier to track ( (e.g. 10.2.0.3.1) and will not change the version of oracle binaries (like sqlplus, exp/imp etc.) As of now (10.2, 11,2) , the best way to determine the PSU version installed is to use opatch utility using the command below
opatch lsinv -bugs_fixed | grep -i PSU
From the database , you can execute the following query(Assuming that catbundle.sql was executed when PSU was installed). The last 2 columns will provide information about the PSU.
select substr(action_time,1,30) action_time, substr(id,1,10) id, substr(action,1,10) action,substr(version,1,8) version,
substr(BUNDLE_SERIES,1,6) bundle, substr(comments,1,20) comments from registry$history;
In summary PSU’s contain fix for bugs that cause
- Instance crash
- Wrong results
- Data Corruption
PSU’s do not contain fix for bugs that may result in
- Dictionary changes
- Major Algorithm changes
- Architectural changes
- Optimizer plan changes
Regular patch sets on other hand include major bug fixes and most of the time requires re-certification. The importance of PSU is diminished once a regular patch set is released for a given version as they tend to be more security related fixes as CPU is part of PSU
PSU and CPU
PSUs contain CPU’s and are released every quarter (like CPU’s) ; In other words Critical Patch Update (CPU) is a subset of the Patch Set Update (PSU). CPU’s are built on the base Patch Set version (e.g. 10.2.0.3) whereas PSU are built on the base of the previous PSU (e.g. 10.2.0.3.1)
A PSU can always be applied over any CPU where as applying a CPU over a PSU will roll back the PSU (at least for now). Therefore it is easy to go from CPUs to PSUs and hard to go back to CPUs from PSUs.