Oracle REST Data Services 21.4.3

Release Notes

Date: April 28, 2022

Support

  • You are supported by Oracle Support under your current Oracle Database Support license for Oracle REST Data Services production releases .
  • Log Oracle REST Data Services bugs and issues using My Oracle Support.

    • For problems specific to SODA for REST, file a service request using "Oracle XML Developers Kit" as the product.
    • For all other problems, use "Oracle REST Data Services" as the product.

Note - Autonomous Database Shared Subscribers

If you are running a customer-managed ORDS for your Autonomous Transaction Processing, Autonomous Data Warehouse, or Autonomous JSON Database, you must upgrade your customer-managed ORDS to the version used in your Autonomous Database Shared environment. Failure to do so could lead to service disruptions.

To determine the version of ORDS in your Autonomous Database Shared database run this query:

select ords.installed_version from dual;

Documentation

General

  • Documentation for this release is provided on the oracle.com web site. Click here to view the documentation and related information.
  • Documentation on using SODA for REST is provided on the oracle.com web site. Click here, navigate to the documentation section and access the book titled 'SODA for REST'.

Getting Started

  • A tutorial on getting started with developing RESTful Services is included in the ORDS product documentation, in the book titled 'Oracle® REST Data Services Quick Start Guide'.

Feedback

  • At Oracle REST Data Services on oracle.com you will find links to forums and social media channels where you can discuss topics with the ORDS community around the world and leave feedback for the development team.
    • In the forums, be sure to use clear subject lines to initiate a thread. Provide a complete and clear description of the issue, including steps to reproduce the issue.
    • Try to avoid using old, unrelated threads for a new issue.

Important Concepts to Keep In Mind

Migration of Oracle APEX Restful Service Modules

Oracle APEX 22.1 and onwards no longer natively supports the serving of APEX Based Restful Service Modules. Existing APEX Based Restful Service Modules must be migrated to ORDS Resource Modules in order to avoid loss of service.

As migration will replace any previously migrated (and possibly further developed) APEX Based Restful Service Modules from an APEX Workspace, it is the responsibility of the customer to manually initiate the migration. To help with this, Oracle has provided a number of SQL scripts that can be found in the "migrate" folder in the top-level "scripts" folder of the ORDS distribution ZIP file. These scripts must be run as either a DBA or an ORDS "Installation" user.

  • ords_migrate_report.sql - Reports on the migration status of all APEX Workspaces that have one or more APEX Based Restful Service Modules (excluding oracle.example.hr). e.g.
    @ords_migrate_report.sql
    APEX SCHEMA APEX VERSION APEX STATUS ------------------------------------------------ --------------- --------------- APEX_210200 21.2.0 VALID WORKSPACE NAME MIGRATED MODULES --------------------------------------------------------------- -------- ------- APEX_WS_2 NO 6 APEX_WS_1 YES 1
  • ords_manual_migrate_workspace.sql - Manually migrates a single APEX Workspace e.g.
    @ords_manual_migrate_workspace.sql ~/logs/ APEX_WS_2
  • ords_manual_migrate.sql - Manually migrates all APEX Workspaces e.g.
    @ords_manual_migrate.sql ~/logs/

Removal of PDF Generation Support

As previously advised in the ORDS 18.4.0 Release Notes, the Apache FOP based functionality to produce PDF Reports from Oracle Application Express has been removed in this release. This feature has also been removed from Oracle Application Express 19.2. Customers using older versions of Oracle Application Express are recommended to upgrade to newest version.

SQL Developer Web

SQL Developer Web is an ORDS hosted web application giving Oracle Database users an interface for executing queries and scripts, creating and altering database objects, building data models, accessing Performance Hub, and viewing database activity. Please consult the ORDS documentation library for instructions on how to enable this feature, which is disabled by default. Please access the SQL Developer Web documentation library for an overview of features and capabilities.

For consistent representation of date values in SQL Developer Web, ORDS should be run in the UTC timezone. This can be done as follows

java -Duser.timezone=UTC -jar ords.war standalone

The SDW user interface now uses a number of services from the ORDS Database API. Therefore the Database API must be enabled when using SQL Developer Web.

The SDW Scheduling feature requires database version 12.2 or higher.

Performance of REST APIs

Performance of ORDS based REST APIs was significantly improved in ORDS 19.3.0 by changing how ORDS handles proxied database connections. In ORDS 19.2.0 and earlier, for each HTTP request ORDS proxies from ORDS_PUBLIC_USER to the relevant ORDS enabled schema, performs the relevant database calls and then closes the proxy session. We term this behavior 'disposing' a connection.

In ORDS 19.3.0 and later ORDS changes its default behavior to keep proxied connections in the pool, ameliorating away the cost of opening and closing the proxy sessions. This gives a very substantial performance improvement. We term this behavior 'recycling' a connection.

Disabled REST schemas

Once a request is received for a REST enabled schema the mapping of the schema alias portion of the REST request path is cached to improve overall performance. Similarly the proxied database connection for that schema is cached to be reused for subsequent requests. When a previously enabled schema is subsequently disabled and connection pool recycling is in place then a limited number of requests will be processed for that disabled schema. The limit is dictated by the jdbc.MaxConnectionReuseCount setting. More specifically, the number of times a request will be processed for a disabled schema will be whatever reuse counts remain. This will always be less than the jdbc.MaxConnectionReuseCount value. In the event that there is a requirement to immediately stop processing requests for a disabled schema then revert to the old behavior of 'disposing' connections.

Reverting to Previous behavior

ORDS Administrators may revert to the old behavior of 'disposing' connections by performing the following command:

java -jar ords.war set-property jdbc.cleanup.mode dispose

To switch to recycling connections use:

java -jar ords.war set-property jdbc.cleanup.mode recycle

Managing Connection Re-use

To mitigate against database code that is leaking resources, ORDS has a configuration setting: jdbc.MaxConnectionReuseCount which controls how many times ORDS will use a database session before terminating it (and releasing the leaked resources) and replacing it with a new database session. The default value for this setting is 1000. If you are experiencing database resource exhaustion you should:

  • Determine the database code that is leaking resources, and fix the database code not to leak.
  • If that is not feasible then reduce the value of jdbc.MaxConnectionReuseCount in increments until a point is found where the database is no longer experiencing resource exhaustion.

Installer Behavior Using the install or setup Command

In ORDS 19.3.0, the installer does not automatically update the ORDS parameter file (default ords parameter file or user-specified ords parameter file) when you use the following commands:

  • install command
    • java -jar ords.war
    • java -jar ords.war install <OPTIONS> simple
    • java -jar ords.war install <OPTIONS> advanced
  • setup command
    • java -jar ords.war setup <OPTIONS>

If you want the same behavior to update the ords parameter file, you will need to use the --saveParameters option.

Example:

  • java -jar ords.war install --parameterFile <PATH TO PARAMS>/ords_params.properties --saveParameters simple
  • java -jar ords.war install --parameterFile <PATH TO PARAMS>/ords_params.properties --saveParameters advanced
  • java -jar ords.war setup --parameterFile <PATH TO PARAMS>/ords_params.properties --saveParameters

Upgrading ORDS in the database

If you have previously executed script, ords_installer_privileges.sql, to grant your administrator user privileges to perform the install or upgrade, then you must execute the script again on that same user that you provided because additional grants have been added to this script. Note: This script does not apply to the SYS user account.

Supported Java Version

Oracle REST Data Services requires Java 8 or later. Java 7 is no longer supported. Please consult the documentation for the minimum supported Application Server versions for ORDS.

In a future release the minimum required Java version will be Java 11. At that point, earlier versions will not be supported.

Changes in 21.4.3

The following changes have been made since 21.4.2:

Issues Fixed in 21.4.3

  • Bug:34020594 - ORDS: Uptake Jackson 2.13.2 and Jackson Databind 2.13.2.2
  • Bug:33837693 - ORDS: A second call to the same rest enabled procedure with date in parameter fails with unable to marshall date

Changes in 21.4.2

The following changes have been made since 21.4.1:

Issues Fixed in 21.4.2

  • Bug:33502385 - ORDS: PL/SQL Gateway not accepting parameter names with special characters

New Features in 21.4.2

  • Bug:33839193 - ORDS: Uptake SODA 1.1.10
  • Bug:33871448 - ORDS: Uptake Rappid 3.4.1
  • Bug:33915916 - ORDS: Jersey repackaged with Jackson 2.13.1
  • Bug:32386554 - ORDS: Provide new scripts to report on non-migrated workspaces and to individually migrate them
  • Bug:33488849 - ORDS: Check that ORDS can dispatch both /ords/r/... and /ords/{schema}/r/...

Changes in 21.4.1

The following changes have been made since 21.4.0:

Issues Fixed in 21.4.1

  • Bug:33684760 - ORDS: OAuth token empty response in Database Actions
  • Bug:33727577 - ORDS: PDB mapping not working. 404 + SQLException: ORA-01005
  • Bug:33739947 - ORDS: Error trying to export a module with a handler's source bigger than 32kb
  • Bug:33583853 - ORDS: Error using Windows path to TNS folder

Changes in 21.4.0

The following changes have been made since 21.3.2:

Issues Fixed in 21.4.0

  • BUG:33138576 - Database Actions: Table properties dialog window cannot scrolldown
  • BUG:33599211 - ORDS: Plugin examples not working in Getting Started guide

New Features in 21.4.0

  • BUG:33535164 - ORDS: Uptake Jackson 2.13.0
  • BUG:33535164 - ORDS: Uptake Jetty 9.4.44.v20210927
  • BUG:33535164 - ORDS: Uptake Guava 31.0.1-jre
  • BUG:33580638 - ORDS: Uptake AutoAV 20.1.3.41
  • BUG:33132127 - ORDS: Schema level configuration
  • BUG:33146922 - Database Actions: User Interface to job scheduler
  • BUG:33271364 - Database Actions: APEX workspace management
  • BUG:33651611 - ADP: Data Analysis in data tools

Changes in 21.3.2

The following changes have been made since 21.3.1:

Issues Fixed in 21.3.2

  • BUG:33489973 - Database Actions: Public properties - Empty DIVS to DOM when response is empty
  • BUG:33574935 - Database Actions: REST Workshop: REST called is failed when the module is accessed
  • BUG:33406824 - Database Actions: Chart Tour/ Dashboard Tour is left even after the tour is over
  • BUG:33498260 - ORDS: Update jdbc/ucp cumulative patch jars

Changes in 21.3.1

The following changes have been made since 21.3.0:

Issues Fixed in 21.3.1

  • BUG:33278709 - Database Actions: The output of query results is with commas if the column type is number

New Features in 21.3.1

  • BUG:33323698 - Database Actions: Add auto refresh to report component
  • BUG:33408583 - Database Actions: Add customisable banner to all Sign In, OAuth and Database Actions pages
  • BUG:33449736 - ADP: Update AutoAVGen to 20.3.1.39

Changes in 21.3.0

The following changes have been made since 21.2.4:

Issues Fixed in 21.3.0

  • BUG:33103628 - Database Actions: Vertical scroll missing in chart definition in Firefox
  • BUG:32917191 - ORDS: Instance API OpenAPI V3 document specifies incorrect path
  • BUG:31892227 - ORDS: Swagger V2 representation of metadata catalog returns HTTP 200 for modules without a handler

New Features in 21.3.0

  • BUG:33166641 - ADP: Use cards based statistics histogram
  • BUG:33094472 - Database Actions: Data visualizations dashboard
  • BUG:33136055 - ORDS: Database API Data Pump support for Oracle Cloud Object Storage
  • BUG:32028571 - ORDS: Database API Data Pump available to non administrator database users
  • BUG:32372554 - ORDS: Uptake UCP DRIVER (21.0.0.0-p32464841-p32376643-p33041374-p33199445)
  • BUG:32372554 - ORDS: Uptake JDBC DRIVER (21.0.0.0-p32205381-p33094923)
  • BUG:33297723 - ORDS: Uptake jakarta.json JSON-P 2.0.1 and Eclipse Parsson 1.0.0
  • BUG:33307363 - ORDS: Upgrade to SODA 1.1.8

Changes in 21.2.4

The following changes have been made since 21.2.3:

Issues Fixed in 21.2.4

  • BUG:33238570 - ORDS: Uptake Jetty 9.4.43.V20210629
  • BUG:32983106 - Database Actions: Data load from cloud store folder with subfolders counts folders as loadable items

Changes in 21.2.3

The following changes have been made since 21.2.2:

Issues Fixed in 21.2.3

  • BUG:33008285 - ORDS: SQL Export endpoint response Content-Type: application/json regardless of the format of response body
  • BUG:33046417 - ORDS: Before showing the main result of script output button, two elapsed boxes are there

Changes in 21.2.2

The following changes have been made since 21.2.1:

Issues Fixed in 21.2.2

  • BUG:32860938 - ADP: Performance improvement for designer content in Business Model landing page
  • BUG:32860950 - ADP: Performance improvement for deployment state content in Business Model landing page
  • BUG:32997903 - ADP: Performance improvement for Data Insights page
  • BUG:33016115 - ADP: Live feed cloud store schema name is not required
  • BUG:33093313 - ORDS: Colons in simplified JSON syntax is incorrectly interpreted as bind variables
  • BUG:33101999 - ORDS: SQL Developer REST DATA SERVICES Administration view encountered 500 Internal Server Error on connection
  • BUG:32981951 - ORDS: Uptake UCP DRIVER (21.0.0.0-p32464841-p32376643-p33041374)

Changes in 21.2.1

The following changes have been made since 21.2.0:

Issues Fixed in 21.2.1

  • BUG:32988409 - Database Actions: Use correct username reference syntax for certain Database Actions/ADP services

Changes in 21.2.0

The following changes have been made since 21.1.3:

Issues Fixed in 21.2.0

  • BUG:32817733 - ORDS: Too many parse errors database alert logs for PLSQL_GATEWAY_CONFIG query
  • BUG:32703803 - Database Actions: Data loading to a different schema fails to create error logging table
  • BUG:31843537 - Database Actions: SODA syntax errors

New Features in 21.2.0

  • BUG:32935129 - ORDS: Metadata caching
  • BUG:32826282 - ORDS: Uptake UCP DRIVER (21.0.0.0-P32464841-P32376643)
  • BUG:33003755 - ORDS: Uptake Jetty 9.4.42.V20210604
  • BUG:32216752 - ORDS: Improve REST Enabled SQL performance
  • BUG:32924934 - Database Actions: Third Party Library updates - uptake Swagger UI 3.45.1
  • BUG:32861901 - Database Actions: Data Visualizations - Charts

Changes in 21.1.3

The following changes have been made since 21.1.2:

Issues Fixed in 21.1.3

  • BUG:32935381 - ORDS: Fix performance regression when checking patching status of APEX

Changes in 21.1.2

The following changes have been made since 21.1.1:

Issues Fixed in 21.1.2

  • BUG:32884510 - ORDS: Fix automatic layout resizing in worksheet

Changes in 21.1.1

The following changes have been made since 21.1.0:

Issues Fixed in 21.1.1

  • BUG:32631694 - ORDS: Unable to pass OBJECT TYPE variable when calling custom wrapper
  • BUG:32704322 - APD: In Database Actions "Data Tools" cards are not visible

New Features in 21.1.1

  • BUG:32794672 - ORDS: Uptake Jetty 9.4.40

Changes in 21.1.0

The following changes have been made since 20.4.3:

Issues Fixed in 21.1.0

  • BUG:32498488 - ORDS: Only return one x-frame-options header for APEX static resources
  • BUG:32471387 - ORDS: APEX workspace URL mapping cached even if schema subsequently REST-Enabled
  • BUG:32228741 - ORDS: Improve performance of named bind statement parsing
  • BUG:31614372 - ORDS: Open API JSON has uppercase response object property names
  • BUG:30376686 - ORDS: Error response should be JSON when client sends Accept: appplcation/json header
  • BUG:32112867 - SDW: Result Set out parameter missing from REST Workshop

New Features in 21.1.0

  • BUG:32459808 - ORDS: Add DVSYS and PYQSYS schema packages to the default PL/SQL Gateway exclusion list
  • BUG:32537360 - ORDS: Reject requests with Origin: null header
  • BUG:32474210 - ORDS: Uptake 21.1 UCP patch 32464841
  • BUG:32241814 - ORDS: Support Zip Archive (db.wallet.zip) which has only cwallet.sso
  • BUG:32222145 - ORDS: Support pluggable database service name suffix when Oracle Connect Descriptor is used
  • BUG:30560527 - ORDS: Support ICAP SSL/TLS connection
  • BUG:32430092 - SDW: Third Party Library updates - uptake Dexie 3.0.3
  • BUG:32430092 - SDW: Third Party Library updates - uptake AVSC 5.5.3
  • BUG:32430092 - SDW: Third Party Library updates - uptake Monaco 0.22.1
  • BUG:32483801 - SDW: Add autocomplete functionality to JSON QBE editor and document editor
  • BUG:31902012 - SDW: Support Monaco colorizer in code viewer component
  • BUG:31536036 - SDW: Allow User Management to work without access to ORDS metadata

Earlier versions

For information on Issues Fixed and New Features introduced for earlier versions please refer to the release notes for those versions.

Known Issues

Oracle Database may report 'ORA-01031: insufficient privileges' for queries that involve CURSOR expressions

In a number of cases, ORDS executes queries which include a CURSOR expression. An issue has been found executing these queries for some schemas in Oracle 18c and Oracle 19c databases. Depending on the roles and privileges involved, the issue does not occur for all schemas, which can give the impression that the issue is intermittent. Refer to RDBMS bug 29049673 for more information. The issue is manifest as follows in the exception returned:

ORA-00604: error occurred at recursive SQL level 1

ORA-01031: insufficient privileges

This is a problem with view-merging of nested cursors introduced in Oracle 18.1 database. Please use the following as a workaround:

alter system set "_fix_control"='20648883:OFF';

Oracle Database DATE and TIMESTAMP values

ORDS interprets Oracle Database DATE and TIMESTAMP values (which do not possess a time zone) into the time zone of ORDS. These values are then represented in the RFC3339 UTC format.

In a future release Oracle Database DATE and TIMESTAMP values will not by default be interpreted into any time zone. These values will be represented in the ISO 8601 "yyyy-mm-ddThh:mm:ss[.sss]" format. Oracle Database TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE values will remain represented in the RFC3339 UTC format.

SQL Developer Web

  • DATE, TIMESTAMP, TIMESTAMP WITH TIMEZONE values downloaded from the Worksheet Query Result in the JSON format are not presented in the Internet Datetime format.
  • The Instance Viewer in SQL Developer Web does not render properly in IE 11. Please use Edge or another browser as a workaround.

SODA

  • None

JDK Support

  • ORDS will run and is supported on JDK 9 however the only supported way to use ORDS on JDK 9 is by running it in standalone mode, as currently neither Oracle WebLogic or Glassfish are certified for use with JDK 9, and ORDS has not yet been certified on Apache Tomcat on JDK 9.
  • From ORDS 18.1.0 and later you can launch ORDS on JDK 9 by just typing:

    java -jar ords.war <command-name>
    • The requirement in 17.4 to use the --add-modules java.xml.bind command line argument has been eliminated
  • From JDK 11 Nashorn is deprecated and a warning will be displayed. To disable this warning use the following JVM property

    -Dnashorn.args=--no-deprecation-warning

TNS Connections

When using a TNS connection type the JDBC driver needs to know the location of the folder containing tnsnames.ora. To configure this when running ORDS in standalone mode do:

java -Doracle.net.tns_admin=$ORACLE_HOME/network/admin -jar ords.war

(where $ORACLE_HOME points to the folder where Oracle Database/Oracle Instant Client is installed)

If using Tomcat or WebLogic, then the startup script used to start the app server would need to be modified to pass the -Doracle.net.tns_admin=$ORACLE_HOME/network/admin argument to the java command that starts Tomcat/WebLogic

JDBC Array values

ORDS passes array values to the Oracle Database in a number of cases, for example arrays are used to pass the request headers and form fields during PL/SQL Gateway calls. Oracle JDBC Driver 18.3 and later supports an improved mechanism for passing array values, however this feature is only supported on Oracle Database 12c and later. Thus ORDS uses existing deprecated and less efficient APIs for passing array values when connecting to 11G databases, and the improved mechanism when connected to 12c and later. Customers experiencing problems with passing large array sets (for example OutOfMemory exceptions) are encouraged to upgrade from 11G to a newer database version to mitigate these issues.

Autogenerated REST Endpoints

  • AutoRest resources support the OAuth 2.0 Client Credentials flow only.

RESTful Services

  • Application Express workspaces do not support first party authentication, and therefore do not support the /sign-in/ interactive sign in form. Accessing /sign-in/ in APEX workspaces will produce a 404 status.

Support For mod_plsql logmeoff

  • The mod_plsql logmeoff mechanism is not supported reliably by modern browsers and it is not provided by ORDS. The only way to end a HTTP Basic Authentication session is to close the Browser.

Starting Standalone Mode when connected to CDB

The typical manner to start ORDS in standalone mode, once ORDS has been configured is:

java -jar ords.war

ORDS will detect that it is fully configured and proceed to launching standalone mode. Since 18.2 the ORDS_METADATA schema is not installed in the CDB, which means that when the default pool is connected to a CDB there is no way for ORDS to automatically verify the version of the ORDS schema installed in the database, thus ORDS prompts for the SYS AS SYSDBA password so it can connect to each PDB and verify the ORDS version installed in each PDB. This means that when connected to a CDB the above command is not sufficient to start standalone mode automatically. To work around this issue, use the following command to start ORDS (only after the ORDS instance has been configured) in standalone mode automatically:

java -jar ords.war standalone

Support for apex.docTable

  • apex.docTable (now depreciated) and owa.docTable should not be used for APEX 4.x and above as APEX provides its own document table.