Chapter 28 · Upgrades, Patching, Data Pump, Migration, and Zero/Low-Downtime Change

Database Upgrade Planning, Compatibility Parameters, Prechecks, Deprecated Features, and Validation

Separate software upgrade from COMPATIBLE feature adoption, use current AutoUpgrade analyze/fixups/deploy checks, review 26ai deprecations/desupports and client certification, and preserve fallback until irreversible compatibility gates are deliberately crossed.

Expert135–155 minutesUpgrade readiness + COMPATIBLE gate labAutoUpgrade / Replay Upgrade only for 26aiDirect upgrade minimum: 19cLast reviewed: August 2026

Learning outcomes

A team installs 26ai binaries and immediately raises COMPATIBLE because “the upgrade is finished.” A critical application regression then appears, but the one-way compatibility gate removed the clean downgrade/restore-point fallback they expected. A software upgrade, database dictionary upgrade, and COMPATIBLE feature/disk-format adoption are related but distinct lifecycle steps.

01

Separate source/target Oracle Home, database dictionary upgrade, RU level, and COMPATIBLE.

02

Use AutoUpgrade Analyze/Fixups/Deploy concepts and current 26ai desupport/deprecation review instead of DBUA/manual upgrade scripts.

03

Capture application/client/driver, invalid object, component, timezone, patch, storage and backup readiness evidence.

04

Explain why COMPATIBLE is one-way, why raise_compatible defaults to N, and when 26ai dynamic increases are still irreversible.

05

Build an upgrade acceptance/fallback matrix before enabling new 26ai-only features.

Generation-time baseline, licensing, patchability, and topology boundary

Mandatory examples target Oracle AI Database Free 26ai and were reviewed against the current July 2026 RU 23.26.3 documentation, the August 2026 Upgrade Guide, SQL Developer 26.2 (26.2.0.186.2220), and SQLcl 26.2.1.222.1617. Free remains limited to 2 foreground CPU cores, 2 GB combined database RAM, 12 GB user data, and one installation per logical environment, and it is explicitly unsupported for applying Release Updates/security patches or opening Oracle Support SRs. The course baseline remains CDB/instance FREE, application PDB/service FREEPDB1, owner SERVICEHUB_OWNER, runtime SERVICEHUB_APP, and persistent /opt/oracle/oradata for the container learning path. Production patching/upgrading must use the exact platform RU README, Oracle Home inventory, PDB state, client certification, backup/restore evidence, and current Licensing Information. No mandatory lab applies a binary RU to Free, raises COMPATIBLE, enables GoldenGate, RAC, Data Guard, Fleet Patching and Provisioning, or a management pack. Data Pump, DBMS_REDEFINITION, and cross-platform backup/recovery have Free learning paths; extra compression/parallel/encryption/HA/CDC behavior is gated separately where relevant.

1. Upgrade software first; adopt incompatible formats later

Oracle AI Database 26ai can run an upgraded database with a lower compatible setting so you can test the new software while delaying features that would write newer on-disk structures. For direct upgrade into 26ai the supported source baseline is Oracle Database 19c or later and the source COMPATIBLE must be at least 19.0.0.

sql · current state
SELECT banner_fullFROM v$versionWHERE banner_full LIKE 'Oracle%';SHOW PARAMETER compatibleSELECT  version,  version_fullFROM v$instance;

2. Only supported 26ai upgrade engines

For upgrading to 26ai, Oracle documents AutoUpgrade and Replay Upgrade as the supported methods. Database Upgrade Assistant (DBUA), dbupgrade/catctl.pl, and manual upgrade-script methods are desupported for 26ai.

Operational consequence

A legacy runbook saying “run catctl.pl because it worked on 19c” is not a supported 26ai upgrade plan.

3. AutoUpgrade Analyze is the first executable gate

bash · source host — use the latest AutoUpgrade jar
java -jar autoupgrade.jar   -config servicehub26.cfg   -mode analyze

Analyze mode runs readiness checks and generates reports without performing the database upgrade. Oracle recommends using the latest AutoUpgrade from the supported distribution/MOS rather than assuming the copy bundled in an old home is current enough.

bash · fixups then deploy after review
java -jar autoupgrade.jar   -config servicehub26.cfg   -mode fixupsjava -jar autoupgrade.jar   -config servicehub26.cfg   -mode deploy

Fixups can change source state, so back up before running them. Deploy performs the actual end-to-end upgrade and includes downtime while the database is opened in upgrade mode.

4. A minimal configuration keeps COMPATIBLE unchanged

text · illustrative AutoUpgrade config
global.autoupg_log_dir=/u01/app/oracle/cfgtoollogs/autoupgradeservicehub.sid=FREEservicehub.source_home=/u01/app/oracle/product/19c/dbhome_1servicehub.target_home=/u01/app/oracle/product/26ai/dbhome_1servicehub.target_version=23servicehub.raise_compatible=no

raise_compatible defaults to N. Keep it that way until the new release has passed application, restore, performance and operational acceptance and you intentionally choose the higher feature gate.

5. Free local readiness snapshot

sql · capture upgrade-relevant state
SELECT name,valueFROM v$parameterWHERE name IN (  'compatible',  'db_block_size',  'cluster_database')ORDER BY name;SELECT comp_id,comp_name,version,statusFROM dba_registryORDER BY comp_id;SELECT owner,object_type,COUNT(*) invalid_countFROM dba_objectsWHERE status='INVALID'GROUP BY owner,object_typeORDER BY invalid_count DESC;SELECT * FROM v$timezone_file;SELECT patch_id,patch_type,action,status,target_versionFROM dba_registry_sqlpatchORDER BY action_time DESC;

These queries are not AutoUpgrade replacements. They teach what readiness means: software components, invalid objects, time-zone files, patch level and compatibility all affect an upgrade and application behavior.

6. Deprecation/desupport review is application work

26ai changes defaults and removes/deprecates features and parameters. Review the current desupport/deprecation list, not an old certification checklist. Map each finding to an owner, remediation, test and deadline. Also re-certify JDBC/ODP.NET/Python/Node clients, ORMs, backup agents, monitoring, OS/kernel, wallets and external libraries against the target.

sql · deprecated/obsolete parameter visibility
SELECT name,value,isdeprecated,isbasicFROM v$parameterWHERE isdeprecated='TRUE'ORDER BY name;

A parameter being deprecated is not an instruction to delete it blindly; determine the replacement/default behavior and test the application's dependency.

7. COMPATIBLE is a one-way disk-format/feature gate

For current 26ai new installations, default compatibility is in the 23.x compatibility family (current documentation describes 23.9.0 as the default for RU 23.9 and later new installs). After an upgrade from 19c/21c, the prior compatible level can remain until you raise it deliberately. Once raised, it cannot be decreased, database downgrade is no longer available, and earlier restore-point downgrade expectations are invalidated.

Do not confuse numbers

The RU label 23.26.3 is not a valid reason to set COMPATIBLE to 23.26.3. Use only documented compatibility levels/default values and feature prerequisites.

8. 26ai can increase COMPATIBLE dynamically—but the decision remains irreversible

Starting with 26ai RU 23.9, Oracle supports increasing compatibility within 26ai without an instance restart using a database command. The change must be issued in CDB$ROOT, cannot be performed inside a PDB, must be coordinated with standbys (standbys first), and the SPFILE/init setting must also be made persistent. Dynamic does not mean reversible.

sql · read-only gate before any change
SHOW PARAMETER compatibleSELECT  SYS_CONTEXT('USERENV','CON_NAME') AS con_name,  database_role,  open_modeFROM v$database;

This course deliberately does not execute a COMPATIBLE increase.

9. Deliberately wrong: raise compatibility immediately after first successful login

The database starts, so an operator raises COMPATIBLE before application regression testing and restore rehearsal. Two hours later the ORM/driver workload fails on a behavior change. The binary/dictionary upgrade may have been reversible using the planned fallback, but the compatibility gate is not.

sql · decision record — simulation, not ALTER DATABASE
CREATE TABLE sh28_upgrade_gate (  gate_name VARCHAR2(60) PRIMARY KEY,  pass_flag CHAR(1) CHECK (pass_flag IN ('Y','N')),  evidence VARCHAR2(500));INSERT INTO sh28_upgrade_gate VALUES(  'AUTOUPGRADE_ANALYZE','Y','all blocking checks resolved');INSERT INTO sh28_upgrade_gate VALUES(  'RESTORE_REHEARSAL','Y','restore and open verified');INSERT INTO sh28_upgrade_gate VALUES(  'APP_REGRESSION','N','ORM batch workload still failing');INSERT INTO sh28_upgrade_gate VALUES(  'RAISE_COMPATIBLE','N','blocked until all acceptance gates pass');COMMIT;SELECT *FROM sh28_upgrade_gateWHERE pass_flag='N';

The safe repair is to keep COMPATIBLE unchanged, fix the application regression, repeat acceptance, and only then make a separate approved feature-adoption change.

10. Post-upgrade validation is broader than INVALID=0

  • AutoUpgrade postupgrade/fixup status and logs.
  • Oracle component registry and invalid objects investigated/recompiled.
  • Application schema object counts, grants, synonyms, jobs, services and DB links.
  • Critical SQL plans and representative runtime behavior.
  • Backup/recovery job success in the new home.
  • Driver/ORM/session-pool behavior and TLS/wallet integrations.
  • Alert log/ADR and OS resource baseline.
sql · component/object validation sample
SELECT comp_id,status,versionFROM dba_registryORDER BY comp_id;SELECT owner,COUNT(*) invalid_objectsFROM dba_objectsWHERE status='INVALID'GROUP BY ownerORDER BY invalid_objects DESC;

11. Cleanup and production judgment

sql · cleanup
DROP TABLE sh28_upgrade_gate PURGE;

Upgrade with AutoUpgrade/Replay Upgrade, preserve fallback, and separate the irreversible COMPATIBLE decision from software installation. Review deprecations/desupports and certify application clients before production cutover. Do not adopt new features merely because the new binaries expose them.

No mandatory lab upgrades the already-26ai Free instance. The direct-upgrade minimum is 19c, and COMPATIBLE must be at least 19.0.0 before that upgrade. Lesson 3 moves into logical/transportable migration, which can upgrade and relocate data without performing an in-place database upgrade.

Check your understanding

  1. Which upgrade tools are supported for upgrade to 26ai?
  2. What does COMPATIBLE control?
  3. Can COMPATIBLE be decreased after it is raised?
  4. Why does raise_compatible default to N in AutoUpgrade?
  5. Is a successful database startup sufficient upgrade validation?
Review the answers

AutoUpgrade and Replay Upgrade.

The on-disk/feature compatibility level and therefore which newer database structures/features may be used.

No.

To preserve downgrade/fallback capability until the upgraded database is thoroughly tested.

No; component, object, application, performance, backup, driver and operational validation is still required.

Authoritative references

Keep knowledge open

Help the academy stay free and grow.

If these tutorials save you time, a small donation supports new lessons, technical review, diagrams, examples, and long-term maintenance.

ETHEthereum / ERC-20 only
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0

Send only Ethereum or ERC-20 compatible assets to this address.