Oracle Application Express automatically backs up modified applications as a part of daily maintenance.
Decrease eye strain by enabling Dark Mode.
The development environment can now render with a darker color scheme, which reduces eye strain and is especially helpful for developing late into the night.
Export App as Zip
You can now export your Application Express apps as a single zip file, which can facilitate integration with GIT / SVN and simplify incremental deployment. The zip file mirrors the directory structure of the APEXExport -split utility and splits your application, pages, and shared components into separate files for easy management.
Faceted search, or faceted navigation, provides an easy-to-use interface to narrow the results of a report and quickly locate specific data.
Like other declarative data-driven components in Application Express, you can create a faceted search page on an existing table, an arbitrary SQL query, an ORDS REST-Enabled SQL Service, or virtually any REST endpoint. Using an intelligent auto-discovery and scoring algorithm, recommended facets are automatically created based upon data distribution, related tables, column sizes, distinct values, average data length, and more. You can customize the recommended facets and easily add new facets using a robust set of declarative attributes.
Friendly URL Syntax
Oracle Application Express application URL syntax has been simplified to support friendlier URLs at runtime. Friendly URLs features application or page numbers, and instead, uses the workspace path prefix, application and page aliases, and standard web parameter syntax for its URL structure.
The new syntax provides a Search Engine Optimization (SEO)-friendly URL structure which is far easier to understand and provides immediate context as to where you are within an app.
The Universal Theme now supports Mega Menu navigation. Mega Menu navigation renders app navigation as a collapsible floating panel that displays all navigation items at once. Mega Menu navigation is especially useful for displaying the various aspects of your app and enables direct access to app sections.
Mega Menu navigation includes a number of template options that enable you to customize the layout and appearance so it uniquely works for your app. You can extend Mega Menu items to include icons, descriptions, and even badges using custom list attributes. No matter the layout for larger screens, the mega menu gracefully adjusts its appearance to fit small screen devices. Mega Menus are fully accessible and keyboard friendly.
Native PDF Printing
You can now print PDF files directly from interactive grids. This feature produces a PDF file which includes formatting options such as highlighting, column grouping, and column breaks. To make use of this feature, simply enable PDF as an additional download format in your region attributes.
New Data Upload
The data upload functionality has been modernized to support native Excel, CSV, XML and JSON documents.
Data upload in SQL Workshop features a new drag and drop user interface that provides support for uploading native Excel, CSV, XML and JSON documents into a new table or into existing tables. These same capabilities can be accessed from the Create Application Wizard by selecting the From a File option.
New Form Region
A new Form region type provides superior functionality compared to the old legacy form pages.
A new Form region type provides support for internal and external data sources (that is, Local Database, REST Enabled SQL Service, or Web Source). Forms can be created on SQL queries, or by creating PL/SQL Functions returning SQL Queries. In addition, this new Form region type supports more than two Primary Key Columns and includes more control on Lost Update detection and Row Locking. Finally, you can migrate existing legacy form pages to the new form region with the Upgrade Application function in App Builder Utilities.
New Team Development
The Team Development application has been completely reimagined to provide a simple and easy way for your team to collaborate together.
Team Development provides a simple, conversational approach to team communication. Create an issue to track everything in a single place. You can classify issues using label groups and labels, create templates to provide users with starter text for issues and comments, and track progress by assigning milestones. Individual users can register their interest in specific issues and define at a general level what attributes they are interested in watching. Users can also choose whether they wish to be notified in the application, by email, or both.
Oracle JET Charts
Popup List of Values (LOV)
Oracle Application Express introduces the completely redesigned Popup List of Values (LOV) which now supports multiple display columns, multiple return values, search-as-you-type, improved multiple value selection, and an all-new simplified user interface.
The Oracle Application Express user interface has been refreshed to align better with Redwood, Oracle's new user experience design language.
The new design and color scheme extends across the full developer experience and provides refreshing new visuals. The appearance of Application Express can now automatically switch between the dark and light appearance modes based on your OS or platform setting.
Remote Application Deployment
Deploy an application to remote Oracle Application Express instances using REST Enabled SQL references.
One-click remote application deployment leverages the existing REST Enabled SQL references that works with a Oracle REST Data Services (ORDS) REST Enabled SQL Service.
REST Read / Write Enhancements
Read and write data using REST Enabled SQL references or Web Source Modules.
Define a REST Enabled SQL reference once and use it across a workspace. Create Web Source Modules to define the source within each application. Both approaches are fully declarative, using Data Discovery with parameters. Forms and interactive grids now include built-in support for the internal or external data source you specify.
Shared List of Values (LOV)
Shared List of Values (LOV) in Oracle Application Express include significant enhancements and new functionality. Shared LOVs now support the full set of data sources (table, SQL Query, function returning SQL query, ORDS REST-Enabled SQL Service and Web Source Modules), declarative column mappings, multiple display columns, grouping, embedded icons, and more.
SQL Workshop Now Supports Simple Oracle Document Access (SODA)
SQL Workshop has now been extended to support Simple Oracle Document Access (SODA) collections. Create and store collections of documents in Oracle Database, retrieve them, and query them, without needing to know Structured Query Language (SQL) or how the documents are stored in the database. You can load data to a SODA collection as JSON, TXT, or ZIP files.
Universal Theme Enhancements
The Universal Theme includes UI refinements, accessibility improvements, new template options, and Theme Roller enhancements.
Universal Theme contains many accessibility improvements including a new Skip to Main Content link. The Universal Theme also includes two additional styles for the tree-based Navigation Menu and a new Inline Popup region template. Finally, a number of components and styles have been visually tweaked and refined to provide a more streamlined user interface.
Enhanced Parallel Execution Applicability
Parallel execution can now be used for abstract data types, character keys with linguistic sorts, and timestamp with time zone.
Broadening the applicability of parallel execution to non-native data types can increase the performance of applications using these data types.
New German Linguistic Sorts for Capital Sharp S Support
Two new linguistic sorts (XGERMAN_S and XGERMAN_DIN_S) are added to Oracle Database to support Latin Capital Letter Sharp S as the uppercase form of Latin Smaller Letter Sharp S.
This feature expands the database linguistic support to meet the requirements of the German market.
New Era Support for Japanese Imperial Calendar
The new Japanese era Reiwa, which went into effect on May 1, 2019, is now supported in Oracle Database for the Japanese Imperial Calendar.
The Japanese Imperial Calendar is used widely in Japan in addition to the Gregorian Calendar. Supporting the new era is an essential requirement for software distributed in the Japanese market.
Unicode 12.1 Support
The National Language Support (NLS) data files for AL32UTF8 and AL16UTF16 character sets are updated to match version 12.1 of the Unicode Standard character database. The support for Unicode Collation Algorithm (UCA) is also updated to conform with UCA 12.1.
This enhancement enables Oracle Database to conform to the latest version of the Unicode Standard.
Zero Downtime Upgrade of Timezone Data
The process of upgrading timezone data to reflect up-to-date Governmental Daylight Saving Time rules and to change existing data to reflect these new rules is accomplished in a streamlined, simplified, and automated manner without the need of any downtime or significant impact on the availability of timezone data for queries and DML operations.
Zero downtime upgrade of timezone information removes the burden of database administrators to schedule a downtime window for this operation, removing complexity and obstacles towards continuous 24x7 availability of any database system.
Java in Oracle Database
Oracle JVM Security Enhancements
Oracle Java virtual machine (JVM) security has been enhanced to make it well suited for pluggable databases (PDBs). The enhancements also include support for the new Java module system and safeguarding of Oracle JVM against security vulnerabilities.
The enhanced Oracle JVM security makes it safe to use Oracle JVM with pluggable databases (PDB) and shields it from security vulnerabilities like the Spectre attack. In addition, it simplifies developing Java in the database applications using the new module system.
Java Library for Reactive Streams Ingestion
This new Java library allows high-speed ingestion of data streams with non-blocking back pressure.
Java applications that use the provided APIs may continuously receive and ingest data from a large group of clients.
The ingestion process is non-blocking and extremely fast through the direct path load into the database tables. The library performs affinity grouping by destination including Oracle Real Application Clusters (RAC) nodes, Oracle Active Data Guard, and Sharded database. The library performs CPU optimization by decoupling record processing from database IO. Through the Universal Connection Pool (UCP), the ingestion process furnishes high availability and scalability.
This feature enables implementing high-speed ingestion of streaming data including sensors data, time series (trading), Call Detail Records (CDRs), geoSpatial activities, social media feeds, web site logs, and so on, with scalability and high availability.
JDBC DataSource for Sharded Databases Access
You can use the new JDBC datasource to simplify the access of Java applications to sharded databases, where the applications can connect to the sharded databases transparently, with almost no change to the application code.
This feature enables Java connectivity to a sharded database without the need for a Java application to furnish a sharding key because the sharding data source derives the sharding key from the SQL statement. Your Java applications can scale out to sharded databases transparently as there is little to no change to the application code.
The sharding data source optimizes the performance of your applications as you do not need to configure the Universal Connection Pool (UCP) or create separate connection pools for cross-shard statements and single-shard statements. Also, you do not have to check-in or check-out a physical connection for every new sharding key because the sharding data source does it automatically.
JDBC Reactive Extensions
The Reactive Extensions are a set of methods that extend the
JDBC standard to offer asynchronous database access with back
pressure support. The Reactive Extensions implement the Publisher
and Subscriber types defined by
java.util.concurrent.Flow. Flow is the JDK's standard
representation of a reactive stream.
The Reactive Extensions use non-blocking mechanisms for creating Connections, executing SQL, fetching rows, committing, rolling back, closing Connections, and reading and writing BFILEs, BLOBs, and CLOBs.
The extensions bring scalability, high throughput, and Reactive Streams support to Java applications that use the Oracle Database in the Cloud and on-premises. This extension works as a Service Provider for the Reactive Streams libraries including: Reactor, RxJava, and Akka Streams.
JDBC Support for Native JSON Data Type
This release introduces a new JSON datatype for efficient
storage of JSON data. The package
provides classes and interfaces for working with SQL JSON type
This feature furnishes a simpler and richer type system (that is, support for dates, timestamps), no constraint check (IS JSON) and improves the performance of Java applications (that is, faster access to nested JSON values). A JSON parser inside the JDBC driver 21c allows optimizations during the conversion from Java String to native JSON and the other way around.
JSON Document Store
New JSON Data Type
JSON is a new SQL and PL/SQL data type for JSON
data. It provides a substantial increase in query and update
The JSON data type is optimized for query and DML processing. It can yield significant database performance improvements for processing JSON data.
You can use the JSON data type in most places where a SQL data type is allowed, including:
- As the column type for table or view DDL
- With SQL/JSON functions and conditions, and with PL/SQL procedures and functions
- In Oracle dot-notation query syntax
- For creation of functional and search indexes
Oracle Call Interface (OCI) and Java Database Connectivity (JDBC) clients now provide APIs that can work directly with binary JSON data, significantly saving network costs and server CPU cycles.
Database In-Memory supports the ability to populate JSON data type columns in the In-Memory column store. JSON data defined with the JSON data type is populated in a proprietary binary format that is optimized for query processing and can significantly improve JSON processing performance.
New Oracle SQL Function JSON_TRANSFORM
You can use SQL function
JSON_TRANSFORM to update
parts of a JSON document. You specify which parts to modify, the
modifications, and any new values.
JSON_TRANSFORM makes it easier for an application
to modify a JSON document, without having to parse and rebuild it.
In most cases, it also avoids a round-trip between the server and
client for the whole document.
SQL/JSON Syntax Improvements
You can now express more complex SQL/JSON queries and express some queries more succinctly.
- New SQL function JSON_SCALAR accepts a scalar instance of a SQL data type and returns a scalar JSON value as an instance of JSON data type.
- New JSON path-language item methods support
- The JSON path-language and dot-notation syntax support new,
- You can now express more complex SQL/JSON queries and express some queries more succinctly, and SQL/JSON path-expression syntax for array steps is improved.
Multivalue Index for JSON
A new create index syntax
CREATE MULTIVALUE INDEX
allows you to create a functional index on arrays of strings or
numbers within a JSON type column. Each unique value within the
array will become a searchable index entry.
This avoids the need for full JSON scans to find values within
arrays in JSON columns, when searched using the
JSON_QUERY operators. It
provides similar benefits to conventional functional indexes when
searching JSON, but conventional functional indexes are limited to
a single indexed value per row.
Enhancements to View Creation and of Virtual Columns Addition
DBMS_JSON.CREATE_VIEW now gives you the option to
create a materialized view instead of a standard view. It also
gives you the option to specify a particular path so the view can
be created on a subset of the data. Both
ADD_VIRTUAL_COLUMN are enhanced to allow automatic
resolution of column naming conflicts, to provide a prefix to be
applied to column names, and to specify the case-sensitivity of
Enhances development flexibility and allows for materialized views, which may improve query performance with a trade-off against DML performance.
JSON Scalar Allowed at Top Level of JSON Document (RFC 8259 Support)
JSON documents in Oracle Database can now have a top-level JSON scalar value. Previously they had to have a JSON object or array value.
This feature helps Oracle JSON support be compliant with RFC 8259.
This feature will only be available when the database
initialization parameter compatible is set to
If the parameter value is at least
20, then JSON
data that is stored either textually (
BLOB) or as JSON data type respects
RFC 8259: it allows top-level scalars in documents. For a JSON
column you can, however, use an
IS JSON check
constraint with keywords
DISALLOW SCALARS to disallow
documents having top-level scalar value.
Compatibility for Old Clients With Binary JSON
The database supports JSON in a binary format. In some situations, clients will work directly with the binary format. However, this requires that the client be a recent enough version to understand the format. The database will now identify older clients and automatically transform JSON data from binary to text (serialized) format before transmitting it to them, and convert back from text to binary format as required.
Support for older clients without being forced to upgrade.
Migration of Oracle CMAN Sessions with High Availability
Client/server sessions can be migrated from one Oracle Connection Manager (CMAN) instance to another Oracle CMAN instance during a planned upgrade or while patching Oracle CMAN. Live sessions can be migrated with data in-transit.
Operations that are running either on a client or on a server continue to run seamlessly during the migration with zero downtime. You can also add new client connections during the migration.
Oracle CMAN Traffic Director Mode Support for All Types of Database Links
Starting with this release, Oracle Connection Manager (CMAN) Traffic Director Mode is extended to support all types of dedicated database links including Fixed User, Connected User, and Current User.
Oracle Connection Manager in Traffic Director Mode enhances application scalability, performance, security, tenant isolation, and high availability (zero downtime during planned and unplanned database outages).
REST APIs for Oracle CMAN Administration, Proxy Protocol, Enhanced Rule List, and Bandwidth Management
You can use REST APIs to manage Oracle Connection Manager (Oracle CMAN) instances. Proxy protocol provides additional security and access control. Enhanced rule list allows scalability with segregation of rule_lists for each service. You can also manage distribution of bandwidth across services using Oracle CMAN.
This feature offers REST API management, security with proxy protocol, scalability with enhanced rule list, and per service bandwidth management.
Reverse Connection Support Using CMAN Tunnels
Starting with Oracle Database 21c, you can use secure tunnels to connect to an Oracle Database instance, which is inside a network that supports only outbound connections.
A network may allow only outbound connections and restrict inbound connections for security reasons. However, using the Oracle Connection Manager tunnel feature, you can connect to a database inside a network that allows only outbound connections. Oracle Connection Manager creates a pool of connections, known as tunnels, that can be used to connect to a database inside the network.
Oracle Call Interface
Improvements to OCI Data Interface for LOBs
This feature makes the OCI Data Interface for LOBs more user friendly.
The OCI Data Interface for LOBs is efficient because it reduces the number of round trips between the client and the database. This feature is further improved by removing the need for NULL callbacks and usage of ‘ind’ variable when the LOB length exceeds the sb2 size.
New C Client Interface APIs for JSON Data Type
This feature introduces new Oracle Call Interface (OCI) APIs to operate with JSON descriptor. You can read and write textual JSON or binary JSON (in Oracle binary format) from/to a buffer or a stream. You can bind and define a JSON descriptor to write and read JSON data from the database.
With the new JSON APIs, you can now preserve abstraction without a need to serialize the data to text.
Oracle Call Interface API to Build and Quote TNS Connection Strings
A new Oracle Call Interface API can now be used to build and quote Oracle Database Transparent Network Substrate (TNS) connection strings.
The Oracle Call Interface enhancement enables validation of values, which you can use for Oracle Net Service connection string attributes.
Oracle Call Interface Session Pool Improvements
The Oracle Call Interface Session Pool has been enhanced.
Monitoring and administration has been improved.
When the number of sessions exceeds the minimum pool size, idle session cleanup now occurs even if there is no pool activity.
There is better OCISessionGet wait timeout accuracy.
When using Oracle Sharding, the pool has better balancing of session across shards.
You can now manage Oracle Call Interface Session Pool better with performance, auto-tuning, and administration improvements.
Oracle SODA for C and PL/SQL APIs Enhancements
This feature introduces new SODA APIs for saving documents to a collection, truncating a document collection, and specifying the array fetch size to read documents from a collection, which reduces network round-trips.
The enhancements improve interoperability of the SODA APIs with the database and utilities.
Support for C99 Syntax in Pro*C/C++ Precompiler
The Pro*C/C++ Precompiler now supports the C99 standard, the ISO/IEC 9899:1999 standards specification for C programming.
C99 syntax and semantics allow application developers to use richer functionality.
Oracle Data Provider for .NET (ODP.NET)
Managed ODP.NET and ODP.NET Core: Bulk Copy
ODP.NET Bulk Copy enables applications to efficiently load large amounts of data from a table in one database to another table in a different database. Managed ODP.NET and ODP.NET Core now support Bulk Copy and all its APIs.
ODP.NET Bulk Copy is the most optimized .NET solution when a large data set needs to loaded into a table or between database tables in different databases.
Managed ODP.NET and ODP.NET Core: Debug Tracing Redaction
Managed ODP.NET and ODP.NET Core has introduced a new trace level, that can exclude SQL statements and network packet contents from being included in the trace file.
Managed ODP.NET and ODP.NET Core: WebSocket and WebSocket Secure
Managed ODP.NET and ODP.NET Core now support both WebSocket and WebSocket Secure. Unmanaged ODP.NET already supports these protocols.
WebSocket has the ability to engage in two-way communication simultaneously using a single connection between web application and host unlike HyperText Transfer Protocol (HTTP). WebSocket Secure uses SSL/TLS to encrypt communications.
Oracle provides two core mechanisms to work with data in object
stores, as part of the new
DBMS_CLOUD package or
manually defining external tables.
DBMS_CLOUD provides benefits and additional
functionality that goes beyond DDL and is fully compatible with
Oracle Autonomous Database. Oracle strongly recommends leveraging
DBMS_CLOUD package over manual external table
to Oracle Database data types and vice versa.
can now also be used for writing programs that need to execute
close to the data.
New PL/SQL Iterator Constructs
PL/SQL is enhanced to help you program iteration controls using new iterators in loops and in qualified expressions.
The new iterator constructs are clear, simple, understandable, and efficient.
New Pragma SUPPRESSES_WARNING_6009
SUPPRESSES_WARNING_6009 pragma allows more
robust error handling and better encapsulation and
The PL/SQL compiler issues warning
PLW-06009 if it
determines that an
OTHERS exception handler does not,
in all cases, end in either an explicit
statement or in a call to the PL/SQL supplied procedure
RAISE_APPLICATION_ERROR. The compiler's behavior is
too aggressive for some programming styles when programmers supply
their own reporting subroutines. This new pragma
quiets the warning.
PL/SQL Qualified Expressions Enhancements
Starting with this release, three new types of iterator choice association are added for use in qualified expressions. The basic iterator choice association extends the current iterator choice association by allowing a full iterator as the index. The index iterator choice association provides an index expression along with the value expression. The sequence iterator choice association allows a sequence of values to be added to the end of a collection. In each case, the expressions specified may reference the iterands.
Qualified expressions improve program clarity and programmer productivity.
PL/SQL Support For New JSON SQL Data Type
You can use the new JSON SQL data type in PL/SQL.
The new JSON data type allows you to pass JSON data from SQL to PL/SQL and back to SQL (static and dynamic). PL/SQL now supports binding directly JSON data from client side interfaces, such as Oracle Call Interface (OCI) and Java Database Connectivity (JDBC), as well, as from PL/SQL to callouts. JSON can be a differentiating type in overload resolution.
PL/SQL Type Attributes in User-Defined Types
You can use attributes of PL/SQL scalar data types, such as
PLS_INTEGER, in non-persistable object
You can use non-persistable object types in your PL/SQL code if you have no desire to persist instances of these types. This is useful when you are developing programs following Oracle's object oriented programming model.
Enhanced SQL Set Operators
The SQL set operators now support all keywords as defined in
ANSI SQL. The new operator
EXCEPT [ALL] is
functionally equivalent to
MINUS [ALL]. The operators
INTERSECT now support the
Full ANSI compliance provides greater compatibility with other database vendors and makes migration to Oracle Database easier than before.
Expression Support for Initialization Parameters
You can specify an expression when setting the value of an initialization parameter.
In previous releases, you were required to specify an absolute value when setting an initialization parameter. You can now specify an expression that takes into account the current system configuration and environment. This is especially useful in Oracle Autonomous Database environments.
Placeholders in SQL DDL Statements
SQL DDL statements can now contain placeholders instead
of hard coded values for some content. For example,
placeholders may be used where a username or password
are required in a
CREATE USER statement.
Oracle Call Interface programs can substitute values into the DDL
statement placeholders before the statements are sent to Oracle
Database. This is similar to data binding, but occurs in Oracle
Application security is improved because values do not need to be hard coded in SQL DDL.
You can create SQL Macros (SQM) to factor out common SQL expressions and
statements into reusable, parameterized constructs that can be used in other SQL statements.
SQL macros can either be scalar expressions, typically used in
GROUP BY and
HAVING clauses, to
encapsulate calculations and business logic or can be table expressions, typically used in a
FROM clause. SQL macros furthermore can improve performance as compared to
SQL macros increase developer productivity, simplify collaborative development, and improve code quality.
Custom Range Bucketing in Result Set Interface
You can now specify range buckets for faceted navigation. For example, you can group all items costing between $10 and $20.
Range buckets increase the usability of faceted navigation and avoid the need to manually create range-value sections in the indexed table.
Facet Navigation Support for JSON Search Indexes
JSON search indexing now supports facet navigation using a JSON result set.
Improved Index Synchronization and Automatic Index Optimization
Index synchronization performance is considerably improved, particularly when lots of sessions are doing DML operations simultaneously with the sync-on-commit option. Optimize index now optimizes all index entries (including SDATA values) rather than just the word-based index entries.
In-Memory Full Text Columns
In previous releases, queries using
JSON_TEXTCONTAINS() were only evaluated with a text
index and JSON search index. Oracle Text technology now supports an
INMEMORY TEXT clause during table creation, enabling
fast in-memory searching rather than creating a separate on-disk
An in-memory table scan can now evaluate columns directly when
they are specified as
INMEMORY TEXT. Queries using
evaluate these operators in SQL predicates without requiring
separate domain-specific indexes. When the In-Memory Column Store
contains both scalar and non-scalar columns, On-line Transaction
Processing (OLTP) applications that access both types of data can
avoid accessing the row store, thereby improving performance.
JSON Support in Result Set Interface
The JSON Result Set Interface (RSI) enables you to perform queries in JSON and return results as JSON.
The RSI enables you to fetch a set of results (a "hitlist") together with summary data such as the total number of hits and facet navigation information. This feature provides easier integration with modern programming languages which support JSON.
Named Entity Recognition Improvements
Some restrictions have been removed from Named Entity Recognition (previously called Entity Extraction). Entity definitions can now be nested.
You can now incorporate existing or user-defined rules into other rules. For example, you can define rule "percentage change" as one of several words (for example, 'climbed', 'dropped', 'rose', 'increased') followed by the built-in rule for percentage.
New DIRECTORY_DATASTORE Data Store Type for Oracle Text
You can now use a new data store type called
DIRECTORY_DATASTORE instead of the deprecated
DIRECTORY_DATASTORE provides greater security
because it enables file access to be based on directory
New NETWORK_DATASTORE Data Store Type for Oracle Text
You can now use a new data store type called
NETWORK_DATASTORE instead of the deprecated
URL_DATASTORE data type.
NETWORK_DATASTORE provides greater security because
it enables URL access based on access control lists (ACLs), which
New Oracle Text Index Type: Search Index
The search indexes for text columns support support sharding and all partition types. Index creation syntax is also simpler now.
The search index type maintains most of the features of the
CONTEXT index type, but has support for
sharding and for multiple partitioning methods (the previous
CONTEXT index type can only support range
partitioning). It also has a simplified index creation syntax
avoiding the semantic complexity necessary for