Upgrading uc-local-apex-dev from 23ai to 26ai without data loss

uc-local-apex-dev lets you run Oracle APEX and Database 26ai locally with minimal setup. Upgrade from 23ai 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.

Other Posts

Comments

Loading comments...
Homepage All Blogposts

AI disclaimer: I spend hours writing my blog posts by hand, adding my own thoughts and experiences to them. In my view, purely AI-generated content lacks that human depth and isn't worth publishing. I only use AI for research and editing assistance.