Log Oracle REST Data Services bugs and issues using My Oracle 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.
This release sees the introduction of Oracle SQL Developer Web.
ORDS 19.4.0 saw the introduction of Oracle 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
Performance of ORDS based REST APIs was significantly improved in ORDS 19.4.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.4.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.
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
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:
jdbc.MaxConnectionReuseCountin increments until a point is found where the database is no longer experiencing resource exhaustion.
In ORDS 19.4.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:
java -jar ords.war
java -jar ords.war install <OPTIONS> simple
java -jar ords.war install <OPTIONS> advanced
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.
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
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.
Error-Reasonheaders to be replaced by space characters to avoid error on WebLogic
APEX_PUBLIC_USERwhen dispatching APEX Static Resources service
X-DB-Content-Lengthresponse header produced by OWA
url-mapping.xmlbased mapping that uses
security.requestValidationFunctionsetting configurable per database pool
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.
From ORDS 18.1.0 and later you can launch ORDS on JDK 9 by just typing:
java -jar ords.war <command-name>
--add-modules java.xml.bindcommand 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
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
$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
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.
/sign-in/interactive sign in form. Accessing
/sign-in/in APEX workspaces will produce a 404 status.
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