Stackvora.tech

Oracle Database 23ai: what changed and what to check before upgrading

AI vector search, JSON relational duality, SQL Domains and the practical upgrade path from 19c — plus the compatibility checks to run before you commit.

Oracle Database 23ai is the long-term support release that follows 19c for most estates. It bundles a large feature set, but for an upgrade decision only a handful of items usually matter.

The features that change designs

  • AI Vector Search — a native VECTOR data type with distance operators and vector indexes, so retrieval-augmented generation can run against operational data without a separate vector store.
  • JSON Relational Duality Views — one schema exposed both as normalised tables and as documents, updatable from either side. This removes a lot of ORM/document sync code.
  • SQL Domains and Annotations — reusable column semantics (currency, email, percentage) declared once and enforced everywhere.
  • Boolean data type and improved IF [NOT] EXISTS DDL — small, but they remove a decade of workarounds.
  • Lock-free reservations for high-contention inventory-style columns.
-- Vector search example
CREATE TABLE docs (
  id     NUMBER GENERATED ALWAYS AS IDENTITY,
  body   CLOB,
  embed  VECTOR(768, FLOAT32)
);

SELECT id, body
FROM   docs
ORDER  BY VECTOR_DISTANCE(embed, :query_vec, COSINE)
FETCH FIRST 5 ROWS ONLY;

Pre-upgrade checklist

  1. Run preupgrade.jar / AutoUpgrade in analyze mode and clear every ERROR item.
  2. Check deprecated and desupported features: non-CDB architecture is gone, so a non-CDB 19c database must be converted to a PDB.
  3. Confirm client compatibility — older JDBC/OCI clients may need patching; test your application driver matrix first.
  4. Capture a SQL Performance Analyzer baseline and replay it after the upgrade; optimizer changes are the main source of post-upgrade surprises.
  5. Verify Data Guard and backup tooling versions, and take a guaranteed restore point before starting.
  6. Review character set and any deprecated parameters flagged by the analysis.

Upgrade paths

AutoUpgrade is the supported and by far the least painful route for in-place upgrades. For large databases with tight windows, consider a Data Guard rolling upgrade or a full transportable export/import into a fresh CDB — the latter also gives you a clean tablespace layout.

After the upgrade

  • Re-gather dictionary and fixed-object statistics.
  • Set OPTIMIZER_FEATURES_ENABLE back to the new default only after SPA validation.
  • Recompile invalid objects (utlrp.sql) and check for invalid PL/SQL from removed built-ins.
  • Keep the guaranteed restore point until a full business cycle has passed.

See also the Oracle vendor page for documentation, LiveLabs and certification links.

Back to the knowledge base · Ask the AI assistant