Known Limitations

Please review the known limitations below. In general, a known limitation describes a case where a documented capability is not available or does not work as expected in the RDS SaaS environment.

APEX Roles and Privileges

APEX roles and privileges are not available for RDS services. Any attempt to attach privileges to a service will result in that service becoming inaccessible. When invoking the service the ORDS services container will respond with a 401, authorization required.

Importing Services and APEX Apps

Importing a service or APEX App using the APEX UI has been disabled to prevent the import of malicious code. Import functionality will be enabled when a virus scan capability has been added. The virus scan capability is on the RDS road map.

Services and APEX Apps are exported as SQL scripts. As a workaround, construct a SQL Script using the APEX SQL Workshop from the contents of the exported file, then run the script. Bear in mind, the script may contain schema names. If you are exporting the service from one workspace for use in another workspace, you will need to modify the schema names. More modifications may be necessary to make the schema functional in another workspace.

APEX UI Explain Plan

Explain Plan in the APEX UI does not work as expected. Explain plan requires select access on replicated TABLES. The APEX user, however, only has access to replicated views by design. See Explain Plan prerequisites in SQL Language Reference: Explain Plan. Nevertheless, you can still access the explain plan functionality using a workaround.

Steps for this workaround:

  1. Perform your query against the database - it may be helpful if you include a hint so that you can later find the SQL_ID for the query when performing step 2. For example we've added a hint with DEMO_WORKAROUND so that it's easy to find our query:

    select /* +DEMO_WORKAROUND */ item, item_desc from rds_wv_item_master where status = 'A';
  2. Next find the SQL_ID for the query you ran in step 1, in our example this returned two rows - 1) that had the actual query from step 1 and the other the one we executed against v$sqlarea. We want the non-v$sqlarea one of those listed:

    select sql_id, sql_text from v$sqlarea where upper(sql_text) like '%DEMO_WORKAROUND%';
  3. Next issue the following command to get the execution plan:

    select * from table(dbms_xplan.display_cursor(<your SQL_ID>));

Reserved Application ID Range

Oracle has reserved the APEX application ID range from 30001-39999 for future enhancements. Use of APEX application IDs within this range in custom code may result in undefined behavior.

Replication, Refresh, and CSN_NBR

There are circumstances where inconsistencies arise between source and target schema that are beyond Golden Gate replication’s ability to handle. When this happens, a data refresh from the source is required. Note, only replicated data is affected. There will be no changes made to your customizations.

In any case, this refresh requires an outage. If the problem can be isolated to a single table, then only a partial refresh (single table) is performed. If the problem cannot be isolated to a single table, then the entire schema is refreshed. Any refreshed table will have a null for CSN_NBR in each row, which means previously preserved CSN_NBRs used for purposes such as incremental updates will no longer be valid.  It is also worth noting that the CSN_NBR for seeded data, i.e., initial data load, will be null.