Oracle Database 23c: The Next Long Term Support Release

September 19, 2023 | 13 minute read
Dominic Giles
Master Product Manager
Text Size 100%:

We are pleased to announce that the new version of the world’s most powerful database, Oracle Database 23c, is now Generally Available on OCI Oracle Base Database Service. We’ve also taken the opportunity to update the popular Oracle Database Free version, available for download here. Releases for Oracle Database On-premises, Exadata, Exadata Database Service, Exadata Cloud at Customer (ExaC@C), and Autonomous Database (ADB) are planned to follow later.

Oracle Database 23c

This release has set its sights on empowering developers and simplifying the use of Artificial Intelligence (AI) in the database, along with a host of other improvements in a database renowned for its unparalleled support for high availability, top-notch performance, and ironclad security. More importantly, this new release enhances Oracle Database’s industry-leading converged database approach, supporting JSON, XML, Graph, Spatial, Text, and Relational for any workload while allowing developers to choose any development style.

In this blog, we’ll look at some new features and point you to additional resources to help you navigate this exciting new release.

Innovation in AI

It can be challenging for data scientists and developers to build analytical models that truly reflect the data in their database. Today, it’s not uncommon to see developers struggling to pull large datasets from a database and then trying to find a Machine Learning (ML) model that gives them accurate results. As a result, we’ve built data mining and machine learning algorithms directly into the Oracle Database and provide tools to help you find the best algorithm to give fast and accurate results. Over the years, we’ve continued to improve and add new machine-learning algorithms to the database, and enhanced the tools to help you choose the right one. Oracle Database 23c continues this legacy with several key improvements to data mining and ML functionality, such as improvements to XGBoost and the Generalised Linear Model algorithm to improve their predictive accuracy.

Recently, things have taken an enormous step forward in the world of AI with massive advances in Generative AI and Large Language Models (LLM) such as GPT-3. We are just beginning to feel the impact of these changes as they start to lead to advancements in AI-powered applications across education, healthcare, business, and more. To assist developers and analysts in exploiting these recent changes in the Oracle Database, we are introducing new functionality that allows you to access the power of LLMs in conjunction with your databases without compromising the security of your data. You can now “chat” in natural language with your Oracle Database (or via APIs) to get it to answer complex queries using the context of your data. Over the coming months, we plan to extend this AI capability to allow you to generate code for all aspects of the database and development tools.

Expanding the Oracle Database’s AI capabilities further, we are adding support for AI vector search within the database. Vectors are used in AI to represent the content of unstructured data such as images, documents, and videos. Each vector is a sequence of numbers called dimensions, which capture the critical features of the unstructured data. Vectors are typically generated by Neural Networks and represent the semantic content of the data and not the underlying words or pixels.

While it’s been possible to store and query vectors inside of Oracle Database 19c, we will be adding in Oracle Database 23c a native Vector datatype along with optimized vector similarity search indexing to greatly enhance query performance. New SQL functions and operators will make it easier to create, manipulate, and query vectors in combination with  other data models already supported in Oracle Database, including JSON, Spatial, Graph, etc.

Making the Developer’s journey simpler

SQL

It’s impossible to understate SQL’s impact on the software industry. It is a standards-led, simple-to-read language that has become universally accepted across the industry, and across every type of database, be they key-value, document, graph, or relational.

Oracle Database has been designed on the principle of SQL first, and because of that, we’ve strived to do SQL better than anyone else. Over the last 40 years, we’ve constantly pushed what could be achieved using this simple and powerful language. From the early days of Oracle, where our SQL leveraged the database’s row-level locking and read consistency capabilities, to more recently, where we use SQL to exploit the power of Document and Graph data models.

We are typically the first commercial database to implement numerous SQL standards that make it easier to query larger and more complex data sets. To ensure that a developer’s SQL is always performant, we’ve enhanced the Oracle Database to optimize execution regardless of whether it’s for analytical or operational systems. Technologies like Parallel Query, Real-Time Materialized Views, In-Memory Columnar Store, etc., ensure fast and scalable execution.

In Oracle Database 23c, we are adding several improvements to our SQL Layer. These include

  • Usage Domains, which allow developers to define what a columns represents such as emails, credit cards, zip codes etc.
  • Annotations provide developers with a means to centralize rich and descriptive metadata for their objects
  • A new boolean data type
  • Direct joins in updates
  • Removal of the need for “from dual” in simple select statements
  • GROUP BY using aliases
  • Aggregation over intervals
  • Table value constructors make it easy to specify multiple rows in insert, select, or merge statements
  • A PL/SQL to SQL transpiler

And many, many more…

We’ll continue to improve our SQL support through the life of Oracle Database 23c to ensure it’s the world’s best database for managing complex, mission-critical workloads at any scale.

JSON

In Oracle Database 23c, our JSON capabilities exceed what our competition provides. Ever since Oracle Database 12c we’ve enabled customers to benefit not only from the flexibility that building apps with JSON offers but also all of the benefits that the world’s leading database engine can provide for data management and analytics.

Both JSON and Relational have their strengths and weaknesses. When building apps, developers often must choose one of the two data models and live with its shortcomings or look to Object Relation Mapping frameworks and all of the complexities and problems they bring.

  • Document Benefits: Straightforward app dev (programming-object mappings, get/put access, common interchange format)
  • Relational Benefits: Consistency, space efficiency, normalization (flexible data combination/composition/aggregation)

In Oracle Database 23c, we’re introducing JSON Relational Duality views. This groundbreaking technology allows developers to exploit both data models’ strengths. Developers can build apps that use JSON documents as their primary data persistence model using their preferred access model (PUT, GET, DELETE). They can also leverage the relational model where needed. Since there is a single source of truth for both relational and document data models, developers can leverage either model throughout the development cycle.

The code sample below shows a duality view of a CUSTOMER document with its ORDERS embedded inside of the document. The Oracle database stores the data in relational form but allows you to retrieve and update it in either document or row form. You can do this via SQL, REST, Oracles SODA API or even the Oracle Mongo API.

CREATE or REPLACE JSON RELATIONAL DUALITY VIEW customers_dv AS
   Customers @insert @update @delete
   {CustomerID      : id
    FirstName       : first_name
    LastName        : last_name
    DateOfBirth     : dob
    Email           : email
    Address         : address
    Zip             : zip 
    Orders : orders @insert @update @delete
      [ {OrderID             : id
         ProductID           : product_id
         OrderDate           : order_date
         TotalValue          : total_value
         OrderShipped        : order_shipped
         }]
   }

To make this groundbreaking technology a reality, we’ve added a new optimistic locking model and fine-grained controls on how JSON documents can be modified. The Optimistic locking model provides the benefits of high concurrency without the potential loss of updates common in competing databases.

Alongside the introduction of JSON Relation Duality, we’ve also extended Oracle Database’s core JSON capabilities by adding

  • JSON Schema Support
  • Improved JSON search index performance
  • Improvements to the JSON_TRANSFORM SQL operator

Property Graphs

Graph databases offer a different approach to modeling complex relationships that exist in the real world. However, until recently, the languages used by developers to navigate these relationships and the databases used to store them were proprietary. This held back the adoption of this important technology. The good news is that the industry has come together and worked to ratify standards that mean that developers can benefit from the freedom of choice that SQL brings. Oracle Database 23c is the first commercial database to implement this new standard and we’re confident that these changes will help propel Graph databases into the heart of the enterprise.

The new functionality makes it simple to define the Nodes and Edges that define a graph model and the SQL extensions to query them. In this example, we use new DDL syntax to create a property graph from our CUSTOMERS and CUSTOMER_RELATIONSHIP tables. The customers represent the nodes in our graph and the customer_relationships (friend, spouse, child, parent etc.) represent the edges.

CREATE PROPERTY GRAPH customers_graph
  VERTEX TABLES (
    customers
    KEY (id)
    LABEL customer
    PROPERTIES (id, first_name, last_name)
  )
  EDGE TABLES (
    customer_relationships AS related
    KEY (id)
    SOURCE KEY (source_id) REFERENCES customers (id)
    DESTINATION KEY (target_id) REFERENCES customers (id)
    PROPERTIES (id, relationship)
  );

Once we’ve defined the graph, we can use a simple SQL query that leverages the new SQL/PGQ MATCH function to find connections and relationships between data. This means we can easily express a query in a few lines. Much simpler than it would be before the introduction of this new functionality.

Here we are able to find customers who are of type friend (up to 2 hops shown by {1,2}) to a customer Maria Smith

SELECT DISTINCT customer_name
   FROM graph_table(customers_graph
     MATCH
       (v1 IS customer) -[e IS related WHERE e.relationship = 'friend']-> {1,2} (v2 IS customer)
     WHERE v1.first_name = 'Maria' AND v1.last_name = 'Smith'
     COLUMNS (v2.first_name || ' ' || v2.last_name AS customer_name)
   );

What we’ve shown here just touches on the power of what Graph analytics can deliver. The real power of Oracle Database 23c solution comes from the ability to run graph analytics on top of your operational data. Without this tight integration, you previously needed to extract data into a second specialist propitiatory database. This in turn results in problems associated with keeping two data repositories synchronized, as well as the cost of additional compute and storage resources. Keeping data in a single database allows us to perform real-time graph analytics on data for use cases such as fraud detection and recommendations.

Caching

Caching data in the app tier is an essential development pattern. It can remove a significant portion of the workload from our databases and may even reduce the latency of queries. However, it’s not without its own set of challenges. Many of the current solutions in the market today force the developer to make decisions on what should be cached, how long it should be cached, what causes data to be removed from the cache, what happens in the event of cache failures, the intermediary shape of the data and many other decisions. This results in developers being forced to develop complex code to manage their mid-tier caches.

In Oracle Database 23c, we are introducing True Cache. This solution simplifies caching against the Oracle Database. Developers simply deploy a diskless True Cache instance to their mid-tier and let Oracle manage the rest. Using “Active Dataguard” technology, Oracle Database 23c determines whether the cache is consistent with the latest changes in the primary instance and retrieves data if it’s not present in the cache (cache miss). With minimal application code changes to mark which code should use the cache, it’s never been simpler to benefit from a resilient, high-performance cache that is kept in sync with the primary database server.

And so many other developer improvements

We’ve only touched on some of the enhancements we’ve made to improve the developer experience in Oracle Database 23c. We don’t have the space to cover features like Microservice SAGA Pattern Support, Lock Free Reservations, Faster jdbc Data Loading, Kafka APIs for TxEventQ, Oracle JVM JDK11 support, Improved XML and JSON Text indexing… And so much more. Please take a look at the Oracle Database 23c New Features Guide for a more comprehensive breakdown.

Database Security

Oracle Database is one of the world’s most secure databases. Thousands of customers worldwide depend on it to secure their most mission-critical data. However, there’s always more that we can do, not just in securing data but also making it easier to do. One feature that has been popular in previous releases is Oracle SQL Firewall. Previously, it ran on a separate tier, intercepting SQL and only allowing SQL through that had been approved. This approach virtually eliminated one of the most common security attacks on databases: SQL Injections.

In Oracle Database 23c, we’ve built a new version of SQL Firewall directly into the database. Integration directly into the database kernel offers a more secure model that is easier to manage. All you need to do to use SQL Firewall is to start capturing SQL until you are confident that you have all the SQL you want to put on your “allow list”. Once this allow list is created, you can turn SQL Firewall on, preventing rogue SQL from running against your database. You can add additional rules to SQL Firewall, such as allowing any SQL to be executed from supported IP addresses or supported applications.

Alongside SQL Firewall, we’ve added a new “DB_DEVELOPER_ROLE” in Oracle Database 23c, which provides developers with all the needed privileges to design, build, deploy, and maintain applications in Oracle Database 23c. This managed set of privileges reduces the overall attack surface of the database. We have also added support for granting privileges at the schema level. This change is designed to make granting privileges easier but also simplify the maintenance of scripts as objects are added and removed from the schema.

GRANT SELECT ANY TABLE ON SCHEMA ORDER_MANAGEMENT;

We’ve added many more improvements to Authentication, Auditing, and Encryption, too many to cover in this short blog. All of them help reinforce the fact we believe that there is no safer database in the market to store your data.

High Availability

The impressive features we’ve covered in the previous sections don’t mean much unless your database is accessible. Oracle Database, however, has a proven track record of delivering the very highest levels of availability in the most demanding arenas. Technologies such as Real Application Clusters (RAC), Data Guard, RMAN, Golden Gate, and Sharding ensure you can always access your data. And in the event of a disastrous infrastructure failure, you can quickly get back online.

Oracle Database 23c features many new enhancements to make the database even more resilient to failures. It’s also added some highly requested features, such as the ability to open a standby pluggable database running inside of a container, read-only. This enables the offloading of reporting to the standby container, similar to the functionality found in Oracle Database 19c Active Data Guard for non-container databases.

For RAC and RAC One Node, we’ve also added support for Local Rolling Database Maintenance. This creates a second Oracle Home from the existing Oracle Home on the same physical server that your database is running on. It then starts a second instance of the database allowing you to perform rolling patching operations locally. This can ease the possible disruptions caused by moving large numbers of sessions between servers.

We also added support for Oracle RAC Two Stage Rolling Updates. In previous releases, some database patches couldn’t be applied in a rolling fashion. This could result in costly and difficult-to-schedule outages. In Oracle Database 23c, you can now choose to apply these non-rolling patches after all of the nodes in the cluster have been successfully patched. This approach dramatically reduces the potential outage and makes nearly all non-rolling patches rolling.

Other Enhancements

There are so many improvements in Oracle Database 23c that we need more time and space to cover them than in this short blog. Such as

Improvements to popular error messages that now provide more details with additional context to help you resolve issues quicker

  • Flash Back Data Archive History tables can now be blockchain tables. Meaning that the record of change to your table is immutable and cryptographically signed
  • The ability to shrink tablespaces to recover space
  • Tables can now have up to 4096 columns
  • Unrestricted Data Loads mean you don’t need to commit before performing additional DML operations on the table

And many others. Over the coming weeks, we’ll publish blogs on these and many others to provide a deeper insight into how these new capabilities can impact how you use the Oracle Database.

Upgrading to Oracle Database 23c

One of the many motivations for upgrading to Oracle Database 23c will be five years of premier support and three years of extended support. This long-term support is essential for many of the mission-critical workloads that the Oracle Database is used to support. We take the responsibility to deliver the most dependable database in the industry very seriously. We’ve spent countless compute hours running tests and fixing issues to ensure that right from the very first initial release of the database we’ve done all we can to provide the most stable release of Oracle database.

To Upgrade to Oracle Database 23c, you’ll need to ensure you are on Oracle Database version 19c or 21c. If you are on a prior version, you’ll need to first upgrade to one of these versions. Alternatively, if you have a relatively small database or an upgrade window large enough, you could also use Oracle Data Pump to export and import your data into a newly created Oracle Database 23c instance. If upgrading from 19c or 21c, we strongly recommend using the Autoupgrade tool. It greatly simplifies the process.

Summary

We've just touched on some of the many features available in this important release. To help you discover more of the hundreds of new features, take a look at the following:

 

Dominic Giles

Master Product Manager

Dominic is a master Product Manager for the Oracle Database, responsible for the overall product offering. He’s worked for Oracle for over 28 years since the release of Oracle Database 5. One of Dominic’s primary roles is to update customers on new functionality and gather feedback for future releases. You can follow him on twitter @dominic_giles.


Previous Post

Leading Industry Analysts Comment on the Database Announcement at Oracle CloudWorld 2023

Youko Watari | 5 min read

Next Post


Introducing Oracle Database 23c Free

Gerald Venzl | 1 min read