There are some tables in oracle apps (AD tables especially) involved when
applying patches.
Some of them are very useful when we need specific
information about patch already applied.
I will show the main tables and
afterwards some handy related SQL’s to retrieve patch applied details and how we
can also get all this information via OAM.
AD_APPLIED_PATCHES – The main table when
we are talking about patches that applied in Oracle Apps.
This table holds
information about the "distinct" Oracle Applications patches that have been
applied.
If 2 patches happen to have the same name but are different in
content (e.g. "merged" patches), then they are considered distinct and this
table will therefore hold 2 records (eTRM).
I also found that if the
applications tier node is separate from the concurrent manager node, and the
patch applied on both nodes, this table will hold 2 records, one for each
node.
AD_PATCH_DRIVERS – This table holds
information about all patch drivers included in specific patch.
For example
if patch contain only one unified driver like u[patch_name].drv then
ad_patch_drivers will hold 1 record.
On the other hand, if patch contain more
than 1 driver, for example d[patch_name].drv and c[patch_name].drv, this table
will hold 2 records.
AD_PATCH_RUNS – holds information about
each execution of adpatch for a specific patch driver.
In case a patch
contains more than one driver, this table will hold a record for each
driver.
This table also holds one record for each node the patch driver has
been applied on (column APPL_TOP_ID).
AD_PATCH_RUN_BUGS – holds information
about all the bugs fixed as a part of specific run of
adpatch.
AD_BUGS –
this table holds information about all bug fixes that have been
applied.
We have 2 options to view applied patch
information:1) via OAM – Oracle
Applications Manager
2) Via SQL
queries
With OAM it’s easy and very intuitive, from OAM site map
-> “Maintenance” tab -> “Applied Patches” under Patching and
Utilities.
Search by Patch ID will get all information
about this patch; In addition, drill down by clicking on details will show the
driver details.
For each driver we can use the buttons (Timing
Details, Files Copied, etc.) to get more detailed
information.
With SQL we can
retrieve all the above information, sometimes more easily.
For
example: How to know which modules affected by specific patch?
With OAM:
1) search patch by Patch ID
2)
click on Details
3) For each driver click on “Bug Fixes” and look on product
column.
With SQL:
Run the following query, it will
show you all modules affected by specific patch in one click…
select distinct aprb.application_short_name as "Affected
Modules" from ad_applied_patches aap, ad_patch_drivers
apd, ad_patch_runs apr, ad_patch_run_bugs aprb where
aap.applied_patch_id = apd.applied_patch_id and apd.patch_driver_id =
apr.patch_driver_id and apr.patch_run_id = aprb.patch_run_id and
aprb.applied_flag = 'Y' and aap.patch_name =
'&PatchName';
Another SQL will retrieve basic
information regarding patch applied, useful when you need to know when and where
(node) you applied specific patch:
select aap.patch_name,
aat.name, apr.end_date from ad_applied_patches aap, ad_patch_drivers
apd, ad_patch_runs apr, ad_appl_tops aat where aap.applied_patch_id =
apd.applied_patch_id and apd.patch_driver_id = apr.patch_driver_id and
aat.appl_top_id = apr.appl_top_id and aap.patch_name =
'&PatchName';
To check if specific bug fix is applied,
you need to query the AD_BUGS table only.
This table contains all patches and
all superseded patches ever applied:
select ab.bug_number,
ab.creation_date from ad_bugs ab where ab.bug_number =
'&BugNumber';
|
No comments:
Post a Comment