Many of our non-Production instances have 10GB allocated to RDBMS 10.2.0 ORACLE_HOME. While applying Oct 2008 CPU for Database (patch 7369190), the size of $ORACLE_HOME/.patch_storage increased from 2.7 GB to 7.3 GB. It increased by 4.6 GB because all database CPU patches are cumulative in nature. So Oct 2008 CPU includes all security patches for database released till Oct 2008. The .patch_storage directory has a backup of all the files replaced during a patch and a restore script to backout the patch. Due to this, the .patch_storage directory is actually bigger than the $ORACLE_HOME legitimate binaries and libraries. If you don't want your patch to fail, make sure that your instance has at least 10 GB free in its 10.2.0 $ORACLE_HOME mount.
The DBAs improvised by moving .patch_storage directory to a different mount and created a soft link called .patch_storage in $ORACLE_HOME.
As already mentioned by an anonymous reader of this blog, I just found out that With the latest OPatch versions for 10.2.0.x and 11.1.0.x, available for download as Patch 6880880, there is a new command 'util' which can perform several utility actions. One of them is the cleanup of all the backup directories under .patch_storage not needed for rollback purposes.
To see all the different option for the util command you could use 'opatch util -help'
To delete the directories not needed for rollback interim patches we should use the 'cleanup' option.
'opatch util cleanup -help' will show the associated help for the cleanup option:
Metalink Note 550522.1 has the details.
I tried this on an instance where .patch_storage was 6.4 GB and after running the command:
opatch util cleanup
The 6.4 GB was reduced to 137 MB.