Oracle 23ai New Features: AI Vector Search, JSON Duality, and Why It Matters for DBAs

Oracle Database 23ai brings native AI vector search, JSON Relational Duality, and True Cache to the enterprise. Here is what actually changes for multi-platform DBAs.


Oracle Database 23ai landed in May 2024, and for the first time in a long while, Oracle shipped something that actually changes how you would design a system — not just how you would tune one. After spending time with the documentation, here is what I think matters most if you are running Oracle as part of a multi-platform DBA operation.

This is not a feature parade. I will skip the things that are incremental polish and focus on the ones that change the decision calculus.

1. AI Vector Search — Native Embeddings in the Database

This is the headline feature, and for once, Oracle did not just bolt something on. Oracle 23ai introduces a native VECTOR datatype, a VECTOR_DISTANCE() function, and HNSW / IVF index support — meaning you can store embeddings, search them, and do it inside the same transaction boundary as your relational data. No ETL to a separate vector store. No eventual consistency between your Postgres vector extension and your source of truth.

CREATE TABLE product_embeddings (\n  product_id   NUMBER PRIMARY KEY,\n  name         VARCHAR2(200),\n  description  VARCHAR2(2000),\n  embedding    VECTOR(768)   -- 768-dimension float vector\n);\n\nCREATE SEARCH INDEX emb_idx ON product_embeddings(embedding)\n  FOR VECTOR\n  PARAMETERS (type HNSW, neighbors 16, construction 32);\n\nSELECT name, description,\n       VECTOR_DISTANCE(embedding, :query_embedding, COSINE) AS score\nFROM   product_embeddings\nORDER BY score\nFETCH FIRST 10 ROWS ONLY;

The VECTOR_DISTANCE function supports cosine, Euclidean, and dot product. If you are already running Oracle Exadata or Autonomous Database, this makes the "should we move our vector workload to a separate Pinecone/Milvus instance" question largely moot for greenfield work.

2. JSON Relational Duality — The Most Interesting Architecture Decision in 23ai

Free · 2 Minutes
How healthy is your database, really?
Get your free database health score — spot risks before they become incidents.
Get my health score

JSON Relational Duality lets you define a single table that simultaneously behaves as structured relational rows and as JSON documents. Oracle generates a dual-access view automatically — you can query it with SQL or read it as JSON without maintaining two separate data stores.

The use case is the dual-write pattern: an application that needs to serve both a transactional workload (SQL, foreign keys, joins) and a document-oriented API against the same underlying data, without duplication or sync jobs.

CREATE JSON RELATIONAL DUALITY VIEW order_dv AS\nSELECT o.order_id, o.customer_id, o.order_date,\n       o.status,\n       (SELECT ROW j FROM JSON_TABLE(\n          o.line_items, '
            
Free · Takes 2 Minutes

Get your free database health score

Find out exactly where your database is vulnerable before it causes an incident. 30+ years of DBA expertise, distilled into a single assessment.

Back to all posts
COLUMNS (product_id, qty, price))\n AS j) AS items\nFROM orders o;

You can now query order_dv as rows (SELECT * FROM order_dv) or as JSON documents — Oracle maintains a single copy of the data, the JSON is derived not stored twice. This is architecturally significant for microservices and teams that historically fought over relational vs. document design.

3. True Cache — Read Scale Without the RAC Bill

True Cache is Oracle's answer to the "I need read scale but cannot justify Oracle RAC" problem. It provides a fully in-memory, read-scale caching layer that sits transparently in front of an Oracle database — applications see it as a cache but it behaves like a first-class database read replica.

The licensing question matters: True Cache requires Oracle Database Enterprise Edition plus Active Data Guard. If you are already running Data Guard, adding True Cache to a standby is a legitimate read-scale path.

4. Native JSON Datatype — First-Class Citizen at Last

Oracle has had JSON support for years via check-constraint columns and JSON_VALUE/JSON_TABLE functions. But it was always a workaround — storing JSON in a CLOB with a validation constraint. 23ai changes that with a native JSON datatype:

CREATE TABLE api_events (\n  event_id    NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,\n  event_type  VARCHAR2(50),\n  payload     JSON,           -- native JSON, not CLOB\n  created_at  TIMESTAMP DEFAULT SYSTIMESTAMP\n);\n\nSELECT event_id, JSON_VALUE(payload, '$.customer.region' RETURNING VARCHAR2(10))\nFROM   api_events\nWHERE  event_type = 'order.placed'\n  AND  JSON_EXISTS(payload, '$.customer.region');

5. Search Index — Beyond Basic Text Matching

Oracle's CREATE SEARCH INDEX command now handles vector search, keyword text search, and hybrid combinations from a single index structure:

CREATE SEARCH INDEX hybrid_idx ON products(description)\n  FOR VECTOR, TEXT;

This lets you combine semantic similarity with traditional keyword matching through one index rather than two. The ABOUT() function for semantic text search has also been enhanced — Oracle's NLP sits underneath it.

6. Property Graphs — Graph Analytics Without a Separate Engine

Oracle Property Graphs lets you run graph traversal and analytics directly in Oracle using PGQL (Property Graph Query Language — SQL-like syntax for graphs):

CREATE PROPERTY GRAPH social_graph\n  VERTEX TABLES (users, accounts)\n  EDGE TABLES (\n    follows SOURCE KEY(from_user) TARGET KEY(to_user) LABEL 'FOLLOWS',\n    likes   SOURCE KEY(user_id)   TARGET KEY(post_id)  LABEL 'LIKES'\n  );\n\nSELECT * FROM GRAPH_TABLE(social_graph\n  MATCH (a)-(:FOLLOWS)->(b)-(:FOLLOWS)->(c)\n  WHERE ID(a) = :user_id\n  COLUMNS (ID(c) AS friend_of_friend));

Graph algorithms (PageRank, community detection, shortest path) run via DBMS_GRAPH. The value is that your graph lives alongside your relational data — no ETL to a separate graph database. Some algorithms require the Oracle Graph Server option, licensed separately.

7. SQL Improvements Worth Noting

JSON_TRANSFORM — patch JSON documents without a full replace:

SELECT JSON_TRANSFORM(payload,\n  'SET $.status' = 'processed',\n  'SET $.processed_at' = CURRENT_TIMESTAMP\n) FROM api_events WHERE event_id = :id;

JSON_MERGEPATCH — merge two JSON documents (RFC 7386 compliant).

Enhanced MATCH_RECOGNIZE — pattern matching for sequential event analysis. If you have ever written row-by-row PL/SQL to detect sequences, MATCH_RECOGNIZE in a single query is worth revisiting.

What This Means for Your Multi-Platform Strategy

Oracle 23ai's most interesting move is the convergence: vectors inside the relational engine, JSON as a native type, graph analytics in the same database, and a cache layer that does not require a cluster. For years, the pitch to move off Oracle was "you need a vector store, a document store, and a graph database — Oracle cannot do any of those." That argument is weaker after 23ai.

The practical question is not "should I upgrade?" — it is whether your current workload is hitting limits that 23ai specifically addresses. Vector search matters if you are actively building AI/ML features. JSON Relational Duality matters if you have been maintaining dual data stores. True Cache matters if read scale is a pain point and you are not on RAC.

Ready to stress-test your Oracle environment? We run database health assessments covering architecture review, performance baseline, and upgrade readiness. If you are evaluating 23ai, we can help you model the migration path and identify what will actually break.

Free · Takes 2 Minutes

Get your free database health score

Find out exactly where your database is vulnerable before it causes an incident. 30+ years of DBA expertise, distilled into a single assessment.

Get my free health score Download the DBA checklist
__RELATED_POSTS__ Back to all posts