Every upgrade we have rehearsed, with the environment stated and the clock running.
2026-08-31 · run 2026-08-31-oracle-26.0.0-to-26.7.3
Oracle: 26.0.0 → 26.7.3 migration re-run
Upgrade
26.0.0 → 26.7.3
Database
Oracle Database Free (23ai/26ai), release 23.26.2.0.0, single node, gvenzl/oracle-free:23-slim
Topology
single container
Host
laptop (16 vCPU, 31 GB RAM)
Condition
Engines other than Postgres · third engine, re-run at 26.7.3
Environment
Field
Value
Keycloak from → to
26.0.0 → 26.7.3
Database
Oracle Database Free (23ai/26ai), release 23.26.2.0.0, single node, gvenzl/oracle-free:23-slim
JDBC driver
ojdbc17 + orai18n 23.26.0.0.0 in fixtures/providers/ (unchanged from the 26.7.1 run)
Schema/user
keycloak (APP_USER; user IS schema, KC_DB_SCHEMA not used)
Topology
single container
Host
laptop (16 vCPU, 31 GB RAM)
Procedure
docker compose up -d db # Oracle Free first init (healthy in ~37s on this host)
docker compose up -d keycloak # 26.0.0 (schema created)
docker compose stop keycloak && sed -i 's/^KC_VERSION=.*/KC_VERSION=26.7.3/' .env
docker compose up -d keycloak # migrate
Results
Check
Before (26.0.0)
After (26.7.3)
Keycloak version
26.0.0
26.7.3
migration_model
26.0.0
26.7.3
Tables
87
100
User indexes
218
283
Master-realm token endpoint ready after migration; migration clean and additive
(no DDL errors surfaced in the Keycloak log).
Still not ported (unchanged from the 26.7.1 run)
snapshot/restore — needs Data Pump (expdp/impdp); snapshot.sh/restore.sh
still exit 1 on KC_DB=oracle.
index-audit — Oracle's catalogue is USER_INDEXES/USER_IND_COLUMNS/
USER_IND_EXPRESSIONS (no pg_indexes, no information_schema.statistics);
index-audit.sh still exits 1 on KC_DB=oracle.
S4 DML-only — untested; Oracle's user-is-schema model needs synonyms for a
non-owner account, so the Postgres/MySQL finding does not translate mechanically.