Upgrading uc-local-apex-dev from 23ai to 26ai without data loss
TL;DR: If you’ve used uc-local-apex-dev before, follow this migration guide to upgrade from 23ai to 26ai without losing data.
Why I prefer local development
#Nowadays I prefer to develop locally on my machine. Even in team projects, I prototype data model changes or PL/SQL packages locally before merging to our dev server. APEX applications are still tricky to version, but APEXlang should fix this soon.
- Blazing fast performance
- Full control: Quick grants, quickly installing something new like utPLSQL, user/schema creation
- Offline/slow connection friendly (great for traveling)
- My tooling boosts productivity
The mentioned tooling is my open-source project uc-local-apex-dev, which sets up Oracle APEX + Database locally in minutes and provides scripts for everyday tasks:
- Create a new user, give all necessary grants, add APEX workspace, and add to SQLcl connection store:
local-26ai.sh create-user new_user - Drop all objects from a schema:
local-26ai.sh clear-schema some_user - Test an installation script in an isolated schema with output of invalid objects:
local-26ai.sh test-script-install ./install.sql
Oracle 26ai and upgrades
#I started this project last year when the ARM images of the Oracle Database 23ai Free Edition were released. When a new database version was released, I tested on another machine if I could just swap out the container and if the database would still work. Then I wrote a small migration guide for everyone else to also do the upgrade.
26ai was released in October 2025, unfortunately the data files are not compatible anymore. So a simple container swap is not possible anymore. As I need my local development environment and I want to be up to date, I had to find a way to migrate my data from 23ai to 26ai.
How the migration works
#The core strategy here is just to export all the data from the old database, start a new 26ai database, and import all the data again. This is easier said than done. For typical APEX development, there are 4 artifacts that need to be migrated:
- Database Schemas (tables, packages, etc.)
- APEX Workspaces
- APEX Applications
- ORDS REST modules
The backup-all.sh script takes care of exporting all these artifacts:
- Schema → datapump export
- APEX Workspaces → SQLcl
apex export-workspace -woi {workspace_id} -overwrite-files - APEX Applications → SQLcl
apex export-all-applications -woi {workspace_id} -overwrite-files - ORDS REST modules → SQLcl
rest export schema
So next up, I created a new 26ai database, making sure that it would not interfere with my existing 23ai containers to be able to abort the migration if something goes wrong.
Then I created a import-all.sh script that would re-create all the users and then import all the artifacts back into the new database. This worked like a charm.
If you also want to do this migration, follow the exact steps in this guide.
Join the local development club
#If this sounds like something you would like to try out, check out uc-local-apex-dev. If you have any ideas or feedback, feel free to open an issue on GitHub. I am committed to keeping this project up to date with the latest Oracle Database and APEX releases.