The following procedure is for Non-RAC environment and in the below example I am rolling back July 2016 PSU :
Double check that under $ORACLE_HOME/rdbms/admin
that there is a file with the naming convention catbundle_PSU_DBSID_ROLLBACK.sql
If this file doesn’t exist then you need to execute the following:
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> @utlrp.sql
SQL> QUIT
Shutdown the database
SQL> shutdown immediate;
Execute opatch utility to rollback the patch:
opatch rollback -id 23054359
Remark: the patch number 23054359 is supplied with HTML document that comes with the patch downloaded.
cd $ORACLE_HOME/rdbms/admin
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle_PSU_ORAT772_ROLLBACK.sql
SQL> @utlrp.sql
SQL> QUIT
For Java component:
Shutdown the database
SQL> shutdown immediate;
Execute opatch utility to roll back the patch:
opatch rollback -id 23177551
cd $ORACLE_HOME/sqlpatch/23177551
SQL> CONNECT / AS SYSDBA
SQL> startup upgrade
SQL> @postdeinstall.sql
SQL> shutdown
SQL> startup
SQL> @utlrp.sql
SQL> QUIT