OracleFree generatorPDF, Excel, Word exportOracle E-Business SuiteAll Oracle E-Business Suite tools

How to Check Applied Patches and Patch Level in Oracle EBS: SQL Generator

This generator writes the queries an Apps DBA uses to answer what release an Oracle EBS instance is on, whether a bug fix is applied, and which patching cycles ran recently, for 12.1 and 12.2. 12.2-only blocks cover adop sessions, AD and TXK code levels and AD_PATCH.IS_PATCH_APPLIED.

Fill in

Each number in single quotes, separated by commas.

FND_APPLICATION short names: AP is SQLAP, GL is SQLGL.

Generated code
Download:

1. Release (works on 12.2)

SELECT release_name
FROM   apps.fnd_product_groups;

2. Are these bugs applied? (12.1 and 12.2)

SELECT b.bug_number,
       b.application_short_name,
       b.language,
       b.creation_date
FROM   ad_bugs b
WHERE  b.bug_number IN ('12345678','23456789')
ORDER  BY b.creation_date DESC;

3. Most recent patch runs (12.1 and 12.2)

SELECT *
FROM  (SELECT ap.patch_name,
              ap.patch_type,
              pd.driver_file_name,
              pr.start_date,
              pr.end_date
       FROM   ad_applied_patches ap
       JOIN   ad_patch_drivers pd ON pd.applied_patch_id = ap.applied_patch_id
       JOIN   ad_patch_runs pr    ON pr.patch_driver_id  = pd.patch_driver_id
       ORDER  BY pr.end_date DESC)
WHERE  ROWNUM <= 50;

4. 12.2 only: online patching sessions and patches

SELECT adop_session_id, prepare_status, apply_status, finalize_status,
       cutover_status, cleanup_status, abort_status, status, node_name
FROM   ad_adop_sessions
ORDER  BY adop_session_id DESC;

SELECT adop_session_id, bug_number, status, applied_file_system_base,
       patch_file_system_base, adpatch_options, node_name, end_date
FROM   ad_adop_session_patches
ORDER  BY end_date DESC;

5. 12.2 only: AD, TXK and ATG code levels

SELECT abbreviation,
       codelevel
FROM   ad_trackable_entities
WHERE  abbreviation IN ('ad','txk','fnd','atg_pf')
ORDER  BY abbreviation;

6. Product installation status and patch level

SELECT fa.application_short_name,
       fpi.patch_level,
       DECODE(fpi.status, 'I', 'Installed', 'S', 'Shared', 'N', 'Not installed', fpi.status) AS install_status,
       fpi.product_version
FROM   fnd_product_installations fpi
JOIN   fnd_application fa ON fa.application_id = fpi.application_id
WHERE  fa.application_short_name IN ('AD','FND','ONT','INV','PO','SQLAP','SQLGL','AR')
ORDER  BY fa.application_short_name;

7. 12.2 only: explicit or implicit application of one bug

-- Returns EXPLICIT, IMPLICIT or NOT_APPLIED; -1 checks across all APPL_TOPs
SELECT ad_patch.is_patch_applied('R12', -1, 12345678) AS patch_status
FROM   dual;

AD_TRACKABLE_ENTITIES and AD_ADOP tables exist only in 12.2. Confirm the AD_PATCH.IS_PATCH_APPLIED call against My Oracle Support guidance for your AD level, and use adop -status for the authoritative state of the current patching cycle.

Get your patch level summary reviewed

Send the output of these queries and we will flag missing AD, TXK and product prerequisites for your next update.

Optional. The tool and every export work without this. No spam.

Was this tool useful?

How to use it

Choose the release, enter the bug numbers a support note or SR asked you to confirm, and adjust the product short names. Run block 1 for the release string (for example 12.2.10), block 2 to see whether the bugs are recorded in AD_BUGS, and block 3 for the last 50 patch driver runs. On 12.2 also run blocks 4, 5 and 7. Block 6 lists the patch level per product, such as R12.ONT.C.delta.10 on 12.2 (12.1 uses the B codeline, for example R12.ONT.B.delta.3), which is what Oracle Support asks for when they want to know your family pack or RUP level. All queries are read-only and can be run as APPS or any user with select on the AD and FND tables.

Where patch history lives

AD_BUGS holds one row per bug fixed by any applied patch, including bugs included in merged or cumulative patches. AD_APPLIED_PATCHES holds one row per patch, AD_PATCH_DRIVERS one row per driver file, and AD_PATCH_RUNS one row per run of a driver with start and end dates. In 12.2, online patching adds AD_ADOP_SESSIONS (one row per patching cycle with the status of each phase: prepare, apply, finalize, cutover, cleanup and abort) and AD_ADOP_SESSION_PATCHES (each patch applied in a session, with the file system base it was applied to). AD_TRACKABLE_ENTITIES stores the code level of tracked components such as ad, txk, fnd and atg_pf, for example C.Delta.13.

12.1 versus 12.2 differences

On 12.1 adpatch updates AD_BUGS when a patch completes, so AD_BUGS is a reliable answer. On 12.2, patches are applied to the patch edition during an online patching cycle, and a cycle can still be aborted before cutover. For that reason Oracle provides AD_PATCH.IS_PATCH_APPLIED, which reports EXPLICIT when the bug was applied directly, IMPLICIT when it is included in a later patch, and NOT_APPLIED otherwise. Use it and adop -status rather than a bare AD_BUGS lookup when the answer matters for a support case or an upgrade prerequisite.

  • Apply status in AD_ADOP_SESSIONS: check that cutover and cleanup completed, not only apply.
  • Patch Wizard compares your instance with recommended patches and is the right tool for gap lists.

Worked example

An SR asks you to confirm two bug fixes before an upgrade. Block 1 returns 12.2.9. Block 2 returns one of the two bugs with a creation date from last year's cycle. Block 7 for the missing bug returns IMPLICIT, meaning a later cumulative patch already contains the fix, so nothing needs to be applied. Block 5 shows ad and txk at C.Delta.12, which tells you the AD and TXK delta prerequisites for the next RUP still need to be applied first.

Frequently Asked Questions

How do I check which version of Oracle EBS I am on?

Run SELECT release_name FROM apps.fnd_product_groups. It returns the release such as 12.1.3 or 12.2.10. You can also see it under Help > About Oracle Applications in the Forms interface or in Oracle Applications Manager. For 12.2, the AD and TXK code levels from AD_TRACKABLE_ENTITIES complete the picture.

How do I check if a patch is applied in Oracle EBS 12.2?

Run SELECT ad_patch.is_patch_applied('R12', -1, <bug>) FROM dual. It returns EXPLICIT, IMPLICIT or NOT_APPLIED. Combine it with adop -status to make sure the cycle that applied the patch completed cutover. On 12.1, query AD_BUGS by BUG_NUMBER instead.

Which tables store applied patches in Oracle R12?

AD_APPLIED_PATCHES, AD_PATCH_DRIVERS, AD_PATCH_RUNS and AD_BUGS in both 12.1 and 12.2. Release 12.2 adds AD_ADOP_SESSIONS and AD_ADOP_SESSION_PATCHES for online patching cycles and AD_TRACKABLE_ENTITIES for code levels. Product patch levels are in FND_PRODUCT_INSTALLATIONS.

What does the patch_level column in FND_PRODUCT_INSTALLATIONS mean?

It records the highest family pack or release update pack level applied for that product, in the form R12.<PRODUCT>.<codeline>.<level>, for example R12.ONT.C.delta.10 on 12.2 or R12.ONT.B.delta.3 on 12.1. Oracle Support uses it to confirm prerequisite levels; it is not updated by every one-off patch, so do not use it to check individual bug fixes.

If your DBAs want to ask your EBS instance about patches, versions and cycles in plain English on your own servers, we can set that up.

ArchRay builder
Design the on-prem AI stack for Oracle E-Business Suite: model, GPUs, RAG pipeline, guardrails
See memory, speed and cost as you swap parts, then export the diagram. Free, in your browser.
Open the builder

Keep exploring

Free tools

ERP fixes and how-tos

Runs with your ERP

AI on your ERP

Integrations

Software