Oracle Patch sets , PSU and CPU

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  (w/o PSU 3).  Oracle still recommended applying this patch to 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. 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


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. whereas PSU are built on the base of the previous PSU (e.g.

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.

Tagged: , , , , , , , , , , , ,

21 thoughts on “Oracle Patch sets , PSU and CPU

  1. Vipin September 12, 2011 at 5:33 pm Reply

    Article is interesting and very helpful. 🙂

    thanks a lot !

    • swervedba September 25, 2011 at 1:11 am Reply

      You are Welcome

  2. priya October 12, 2011 at 5:58 am Reply

    Very very very knowledgable document.PERFECT..!!! Thanks a lot..

  3. Robert June 27, 2012 at 4:49 am Reply

    Excellent stuff. Keep it up.

  4. Sharad July 10, 2012 at 5:01 am Reply

    This article provideds much insight on a go and explained in a simple and incisive manner,

  5. Satish August 11, 2012 at 5:26 am Reply

    Thanks for knowledge sharing and cleared the confusion.

  6. surya August 14, 2012 at 7:43 am Reply

    Very Good one.. Thank you very much for knowledge sharing

    • satish.g August 18, 2012 at 5:26 am Reply

      great job

  7. rose January 24, 2013 at 12:53 pm Reply

    absolutely great information!

  8. krishnareddy April 19, 2013 at 6:55 am Reply

    i have applied july 2012 psu and i missed oct 2012 psu . now can i apply directly jan 2013 Psu to database

  9. krishnareddy April 19, 2013 at 6:57 am Reply

    similarly if i still applying cpu patches to my environment .
    i have applied july 2012 cpu and i missed oct 2012 cpu . now can i apply directly jan 2013 cpu to database

    • Shan Nawaz April 19, 2013 at 2:21 pm Reply

      Yes , Both are cumulative.


      • Anas August 25, 2013 at 3:02 am

        Hi Brothere
        could you please send me steps to apply DATABASE PATCH SET UPDATE . My Oracle newly Oracle home is Is there any prerequisites patches to apply before deploy this PSU.

        I really appreciate if you reply.


      • Shan Nawaz August 25, 2013 at 1:36 pm

        See instructions below for Non-RAC instance. If you have dataguard, please follow the same procedure on the dataguard instance too.

        NOTE: Please read note 1493990.1 if your current PSU is below (Oct 2012).

        1. unzip

        2. check for conflicts
        cd 16619893
        opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir ./

        3. Shutdown database & listeners using the Oracle home.

        4. Backup Oracle home and inventory if required.

        5. Apply the patch

        cd 16619893
        opatch apply

        6. Run the following on all databases using this Oracle home

        cd $ORACLE_HOME/rdbms/admin
        sqlplus /nolog
        SQL> STARTUP
        SQL> @catbundle.sql psu apply
        SQL> QUIT

        7. Check for opatch errors

        cd $ORACLE_HOME/cfgtoollogs/catbundle
        vi catbundle_PSU__APPLY_.log
        vi catbundle_PSU__GENERATE_.log

        If the files are not in above directory, then cd $ORACLE_BASE/cfgtoollogs/catbundle and search for the above files.

        8.Upgrade rman catalog if any.

        %rman catalog username/password@alias


        This blog represents my thoughts , experiences and opinions and not that of my employer(s) or Oracle Corp or any other vendor referenced in this blog.

        All content provided on this blog is for informational purposes only. The owner of this blog makes no representations as to the accuracy or completeness of any information on this site or found by following any link on this site. The owner will not be liable for any errors or omissions in this information nor for the availability of this information. The owner will not be liable for any losses, injuries, or damages from the display or use of this information.

  10. Saravanan August 9, 2013 at 4:20 pm Reply

    Usefull Link.. Expalained well

  11. Rajesh September 20, 2013 at 1:32 am Reply

    thanks for sharing your knowledge ,much appreciated

  12. joe October 21, 2013 at 3:53 pm Reply

    Good job….Well explained!!!!

  13. rakeshchemikala September 4, 2014 at 10:34 am Reply

    Thanks Shan , very well explained.
    I have a question , in my environment, when we created new DB (11.2 )using DBCA it seems to have automatically executed PSU , but later on we have been applying CPU only on these new DBs to keep same process as it is for all other DBs. Does it have any effect on DB ? PSU was applied on empty new DB, once we moved application data we have been applying CPU only.

    Thanks for your time


  14. Ramki July 21, 2015 at 4:47 am Reply

    good one , keep it up . Thanks

  15. yoga training boston August 13, 2016 at 4:29 pm Reply

    This site was… how do you say it? Relevant!! Finally I’ve found something that helped me.
    Appreciate it!

  16. […] Oracle Patch sets , PSU and CPU | TwelveC – 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. […]

Leave a Reply to Satish Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: