Monday, May 18, 2026

online vs downtime mode in ADOP — When Oracle Forces a Full Outage

online vs downtime mode in ADOP — When Oracle Forces a Full Outage | punitoracledba

online vs downtime mode in ADOP — When Oracle Forces a Full Outage

One of the most common assumptions EBS R12.2 DBAs make is that all patches run in online mode — that users stay connected throughout and the only downtime is the brief cutover window. This is usually true, but not always.

Some patches require downtime mode, which is a fundamentally different way of applying a patch. It bypasses the online patching cycle entirely, patches the run filesystem directly, and requires a full application outage during the apply phase — not just at cutover.

Understanding the difference between online mode, downtime mode, and hotpatch mode is essential before you start any patching session. Getting it wrong means either an unexpected outage or a failed patch apply.

The Three apply_mode Options

ADOP supports three modes through the apply_mode parameter. Each works differently and applies the patch to a different target.

apply_mode Target Outage Required Uses Patching Cycle
online Patch edition and patch filesystem Only at cutover — 10 to 30 min Yes — full prepare to cleanup cycle
downtime Run edition and run filesystem directly Full outage during apply phase No — no patching cycle needed
hotpatch Run edition and run filesystem directly None — services stay running No — no patching cycle needed

The default mode when you run adop phase=apply without specifying apply_mode is online. You never need to type apply_mode=online explicitly — it is assumed unless you specify otherwise.

Online Mode — The Standard Approach

Online mode is what ADOP was built for. The patch is applied to the patch edition of the database and the patch filesystem while the run edition continues serving users. The five-phase cycle runs in full — prepare, apply, finalize, cutover, cleanup.

Standard online mode apply — default behaviour
# apply_mode=online is the default — no need to specify it
adop phase=apply patches=36478206 workers=8

# Same result — explicit is fine but not required
adop phase=apply patches=36478206 apply_mode=online workers=8

What happens during online mode

  1. Patch files are copied to the patch filesystem
  2. Database changes are applied to the patch edition only
  3. Users continue working on the run edition — fully unaffected
  4. Finalize compiles objects and generates forms in the patch edition
  5. Cutover is the only window where services restart — typically 10 to 30 minutes

All Oracle EBS R12.2 CPU patches are designed and tested for online mode. This is the mode you should use for every quarterly CPU patch unless the patch README explicitly states otherwise.

Downtime Mode — When Oracle Forces a Full Outage

Downtime mode bypasses the online patching cycle entirely. There is no prepare phase, no patch edition, and no dual filesystem switch. The patch is applied directly to the run edition and run filesystem — with all application services shut down first.

This is a fundamentally different process. It is not just a longer version of online mode. It is a separate patching method with its own rules.

Downtime mode apply command
# Shut down ALL application services before running this
# ADOP will verify services are down before proceeding
adop phase=apply patches=36478206 apply_mode=downtime

# No prepare phase before this
# No finalize, cutover, or cleanup after this
# The patch is complete when the apply command finishes

What happens during downtime mode

  1. ADOP verifies that all application tier services are shut down
  2. If services are still running, ADOP will refuse to proceed
  3. The patch is applied directly to the run edition of the database
  4. The patch is applied directly to the run filesystem
  5. When apply completes, restart services manually — no cutover needed

Important rules for downtime mode from Oracle:

1. Downtime mode is only supported for production use where it is explicitly documented in the patch README, or when directed by Oracle Support or Development.

2. R12.2 patches are not normally tested in downtime mode. Use it only when Oracle mandates it — not as a shortcut.

3. No online patching cycle can be in progress when running downtime mode.

Shutting down services before downtime mode

Stop all services before downtime mode apply # Source the run environment source /u01/oracle/R122/EBSapps.env run # Stop all application tier services $ADMIN_SCRIPTS_HOME/adstpall.sh apps/<apps_password> # Verify services are down $ADMIN_SCRIPTS_HOME/adstatus.sh # Now run the downtime mode apply adop phase=apply patches=36478206 apply_mode=downtime # After apply completes — restart services $ADMIN_SCRIPTS_HOME/adstrtal.sh apps/<apps_password>

Hotpatch Mode — Online Without a Patching Cycle

Hotpatch mode applies the patch directly to the run edition while services remain running — with no prepare phase and no patching cycle. It is the fastest mode but also the most restricted.

Hotpatch mode is only safe for patches that do not modify existing schema objects or code used by the running application. Oracle restricts hotpatch use to specific patch types — NLS patches, Online Help patches, and any patch whose README explicitly states hotpatch is supported.

Hotpatch mode apply command
# Only use when the patch README explicitly approves hotpatch
adop phase=apply patches=36478206 apply_mode=hotpatch

# Services remain running — no outage
# No prepare, finalize, cutover, or cleanup needed

Do not use hotpatch mode for CPU patches. CPU patches modify schema objects and code. Applying them in hotpatch mode can cause application failures for users who are connected during the apply. Always use online mode for CPU patches.

How to Know Which Mode Your Patch Requires

This is the most practical question and the one most DBAs skip in their rush to start patching. The answer is always in the patch README. Here is how to check.

Step 1 — Read the patch README

Every patch downloaded from MOS includes a README.txt and README.html file. Open it before running any adop command. Look for these specific phrases:

What to search for in the README # Open the README and search for these terms grep -i "downtime\|apply_mode\|hotpatch\|online patching" README.txt # Keywords that mean downtime mode is required: "apply_mode=downtime" "requires downtime" "application services must be down" "not supported in online mode" # Keywords that mean online mode is fine (most patches): "online patching cycle" "adop phase=prepare" "apply in online mode"

Step 2 — Run a dryrun before the real apply

A dryrun simulates the apply without making any changes. If the patch requires downtime mode and you attempt it in online mode, the dryrun will flag the issue before you commit to the real apply.

Always run dryrun first # Run dryrun — no changes are made, issues are flagged adop phase=apply patches=36478206 apply_mode=dryrun # Review the dryrun log for any mode-related warnings tail -100 $APPL_TOP_NE/admin/log/adop/<session_id>/<timestamp>/adop.log

Step 3 — Check MOS for the patch note

For CPU patches, the MOS availability document — MOSFS KA1539 for April 2026 — lists any patches that require downtime mode. Always read this before downloading patches.

Key Differences — Side by Side

Factor Online Mode Downtime Mode Hotpatch Mode
Prepare phase needed Yes No No
Services during apply Running Must be down Running
Patch applied to Patch edition / patch filesystem Run edition / run filesystem Run edition / run filesystem
Cutover phase needed Yes No No
Total user downtime 10 to 30 min at cutover only Full duration of apply None
Tested by Oracle internally Yes — standard Not normally Only for specific patch types
Safe for CPU patches Yes Only when README states it No
Can abort if needed Yes — adop phase=abort No — no cycle to abort No — use restart=yes or abandon=yes

Why Some Patches Require Downtime Mode

Online patching in R12.2 works because of Edition-Based Redefinition (EBR) in the Oracle database. EBR allows two editions of database objects to exist simultaneously — the run edition for users and the patch edition for patching. This is what makes online patching possible.

However, not all database objects can be editioned. Objects like database triggers, sequences, synonyms, and certain types of tables are non-editioned — they exist in a single copy shared by both editions.

When a patch needs to modify a non-editioned object, it cannot do so safely while users are connected to the run edition. Making a structural change to a shared object while users are actively using it risks data corruption or application errors. Oracle therefore mandates downtime mode for patches that touch these objects.

  • Editioned objects — packages, procedures, functions, views, types — safe for online mode
  • Non-editioned objects — sequences, synonyms, triggers, certain tables — require downtime mode
  • The patch README will always state which category applies

Planning Your Maintenance Window

The mode your patch requires directly determines how long your maintenance window needs to be. Plan accordingly before communicating downtime to your users.

Mode When to Communicate Downtime Estimated Window
Online mode For cutover phase only 10 to 30 minutes at cutover
Downtime mode For entire apply phase plus service restart Duration of apply plus 15 to 30 min for service start/stop
Hotpatch mode No downtime to communicate Zero user-facing downtime

When a CPU patch cycle includes both online patches and one downtime-mode patch, plan the maintenance window around the downtime-mode patch. Apply downtime patches in their own separate session. Do not mix modes in the same ADOP cycle.

Quick Decision Guide

Situation Mode to Use
Quarterly CPU patch — README says online patching cycle apply_mode=online (default)
README explicitly says apply_mode=downtime apply_mode=downtime — shut down services first
NLS patch or Online Help patch apply_mode=hotpatch — only if README confirms
Oracle Support directs you to downtime mode apply_mode=downtime — follow their instructions exactly
Not sure which mode to use Read the README. Run dryrun. Default to online. Raise SR if unclear.

Common Mistakes to Avoid

Mistake What to Do Instead
Running downtime mode without reading the README Always read README first — downtime mode is only for patches that mandate it
Using downtime mode as a shortcut to skip the patching cycle Online mode is the standard. Downtime mode is not a shortcut — it carries risk
Running downtime mode while services are still up ADOP will refuse to proceed — shut down all services before running downtime mode
Using hotpatch mode for CPU patches CPU patches modify schema objects — hotpatch mode will cause application errors
Running downtime mode while an online patching cycle is active Complete or abort the existing cycle before running downtime mode
Not running dryrun before the real apply Always dryrun first — it will flag mode-related issues before real apply starts

Summary

  • Online mode is the default and the standard for all CPU patches — users stay connected throughout, only cutover causes a brief outage
  • Downtime mode bypasses the patching cycle, patches the run edition directly, and requires a full outage during apply — use only when the patch README mandates it
  • Hotpatch mode patches the run edition with no outage — restricted to NLS, Online Help, and patches that explicitly document hotpatch support
  • Always read the patch README before starting any apply session
  • Always run apply_mode=dryrun before the real apply
  • When in doubt, default to online mode and raise an SR with Oracle Support

No comments: