Completeness of Patch Population I'm performing an audit on Oracle database changes and the database is on a Linux OS.

After using the command opatch lsinventory, we learned that this command has not been pulling the complete population of patches on the database. It is only showing the last patch applied. Contrary to many online definition; which is ALL patches.

What could be causing this? What's a foolproof way to pull all changes (patch, scheme, table etc) applied?

Thank you all!
Many times a patch is rolled back before a new one is applied so you may not be able to get a clear picture of everything that has ever been applied. You don't state your Oracle version, but if it is 12c, you can try a similar query to get some information:

set linesize 200
set pagesize 100
column version format a10
column action format a10
column action_time format a25
column BS format a5
column description format a75
select patch_id, version, action,
to_char(action_time, 'yyyy/mm/dd hh24:mi:ss') as action_time, bundle_series as BS, description
from dba_registry_sqlpatch
order by action_time desc;


This won't get non-sqlpatch patches though. Meaning if it is only a binary patch, this won't show that. But that should be in lsinventory.

You can also poke around file: $ORACLE_HOME/inventory/ContentsXML/comps.xml

Take care not to modify this file! But I do believe this shows patches that have been rolled back and ones that are currently applied. I'm not exactly sure what's all in there though.

Another thing to keep in mind is the Oracle Home. Some patches are for GRID home and some are for the RDBMS home. And some shops build an entire new home with each patch... Just ensure you are looking in the correct place.