Oracle® Application Express

Release Notes

Release 4.1

E21672-06

April 2012

These Release Notes contain important information not included in the Oracle Application Express documentation. For the most current information, refer to updates of this document, which are located at the following Web site:

http://www.oracle.com/technetwork/indexes/documentation/index.html

For a complete description of each new 4.1 feature, please see "What's New" in the Oracle Application Express Application Builder User's Guide.

This document contains these topics:

- Checking for the Most Current Release

- Configuration Requirements

- New Features

- Changed Behavior

- Functionality No Longer Supported

- Open Bugs and Known Issues

- Documentation Accessibility

1 Checking for the Most Current Release

Oracle Application Express is released more frequently than the Oracle Database. To view information about or download a more current release, refer to:

http://www.oracle.com/technetwork/developer-tools/apex/overview/index.html

2 Configuration Requirements

The value of the character set portion of PlsqlNLSLanguage in the configuration of the mod_plsql Database Access Descriptor (DAD) must be set to AL32UTF8, regardless of the underlying database character set.

The Database Access Descriptor now contains a parameter for PlsqlRequestValidationFunction. The purpose of this parameter is to limit the number of procedures which can be invoked through mod_plsql. By default, the only procedures permitted are the public entry points of Oracle Application Express. This can be extended using the validation functions shipped with Oracle Application Express. To learn more, see "Restricting Access to Oracle Application Express by Database Access Descriptor (DAD)" in Oracle Application Express Administration Guide.

Enabling the PlsqlRequestValidationFunction for a Database Access Descriptor may cause existing applications which relied upon publicly executable procedures to fail. You may choose to either omit the PlsqlRequestValidationFunction from the Database Access Descriptor definition, or follow the recommended approach of extending the supplied validation function.

3 New Features

This section describes new features of Oracle Application Express that are not documented elsewhere.

This section contains the following topics:

- New Checkbox Plug-in Attribute Type

- New Region SQL Statement Column Plug-in Attribute Type

- Allow Instance Admin Database Users to View all Rows in the APEX Views

- Go to Error Link in a Validation Error Message

- Addition of Theme 24

3.1 New Checkbox Plug-in Attribute Type

The new Checkbox attribute type displays a checkbox for each value defined in the List of Values. It is similar to the Selectlist attribute, but it allows multiple values. By allowing multiple values, the total number of custom attributes can be reduced in order to keep them below the 15 attribute limit.

If a plug-in has many Yes/No type attributes, like Show Toolbar, Show Zoom Panel, Enable Drag and Drop, and so on, the developer can use the new Checkbox type to combine them all in to one attribute rather than having to define a custom plug-in attribute for each option.

For example, to implement this new attribute, the developer could define a List of Values containing an entry called SHOW_ZOOM_PANEL, and in the plug-in code he could use the following:

if instr(':'||p_item.attribute_01||':', ':SHOW_ZOOM_PANEL:') > 0 then

To check if a checkbox has been checked, it's the same code that is used for any of our multi select item types (Shuttle, ...).

3.2 New Region SQL Statement Column Plug-in Attribute Type

With the new Region SQL Statement Column custom plug-in attribute (only available for region type plug-ins), plug-in developers can create more flexible region type plug-ins which are based on an SQL statement (plug-in configuration has checked Region Source is SQL Statement in Standard Attributes). This new custom plug-in attribute type will show the column names of the SQL statement specified in the region source.

An example is a region type plug-in which displays a chart. To populate the chart a developer has to specify an SQL statement in the region source. In 4.0 the plug-in developer would have to exactly specify how many columns the SQL statement has to have and which column position is mapped to which feature. For example an SQL statement format could look like:

select label,
value,
[link],
[color],
[tooltip]
from table

As you can see in the above example, only label and value are required. All the other columns are optional. When using this chart type plug-in, you first have to know the format of the SQL statement and you have to write odd SQL statements if, for example, you want to have a statement where only the label, value and tooltip is set. Such a statement would look like:

select label,
value,
null as link,
null as color,
tooltip
from mytable

The above SQL looks odd and gets more complicated if the SQL statement provides even more options.

In 4.1, the SQL statement specified in the region source is greatly simplified and the plug-in developer can now make implementation of the plug-in much more declarative for the average developer who is using the plug-in. The plug-in developer would define five new custom plug-in attributes of type Region SQL Statement Column. These would, for example, be called Label Column, Value Column, Link Column, Color Column and Tooltip Column. Only Label Column and Value Column are required.

If a developer is using the chart plug-in, in 4.1 the developer can now just enter the following into the Region Source:

select *
from my_table

or

select dname,
sum(sal) as total_sal,
'Total Employees: '||count(employee_id) as total_employees
from my_table

The developer is then prompted to actually map the different columns of the SQL statement to the Label Column, Value Column, Link Column, Color Column and Tooltip Column custom attributes of the plug-in. In our example, the developer would enter dname for the Label Column, total_sal for Value Column and total_employees for Tooltip Column. This is much more declarative, because the developer doesn't have to know how the SQL statement is formatted. This also makes it a lot easier if columns are optional.

3.3 Allow Instance Admin Database Users to View all Rows in the APEX Views

If a database user has been granted the APEX_ADMINISTRATOR_ROLE database role, they are now able to see the metadata of all rows in the APEX views, not just those for its associated workspace.

All views prefixed with APEX_ are impacted by this feature. For example, if a user creates a report on view APEX_APPLICATIONS and that database user is assigned the APEX_ADMINISTRATOR_ROLE role, that user is able to see all the records in addition to those associated with their workspace.

3.4 Go to Error Link in a Validation Error Message

If you define an associated item, Application Express will render a Go to Error link in the Notification display location next to the corresponding error message. When this link is clicked or activated the user's focus is set to the associated item. The Go to Error text can be changed in your applications by defining an application system message called APEX.GO_TO_ERROR with the text of your choice. Additionally, if you don't want to have the Go to Error link at all, you can disable this functionality by setting the text of that system message to just a single space ' '.

3.5 Addition of Theme 24

This release includes a new theme, Theme 24. Theme 24 incorporates HTML5 and CSS3 features and is based on the colors used in Oracle Public Cloud.

4 Changed Behavior

This section describes changed behavior in Oracle Application Express release 4.1.

Tip:
This section is current as of the writing of this document. To view the most current listing of changed behavior, go to the Known Issues page available off the Downloads page. See:

http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html

This section contains the following topics:

- Hosted Online Help

- Before Header Processes and Browser Security HTTP Headers

- Instance Session Timeout Settings Now Control Applications

- Updated JavaScript Libraries

- Updated FCKeditor

- Change in Column Requirements for Rows Inserted into Tabular Forms

- Button Template Substitution Value Changed for #BUTTON_ID#

- Default Value for Cascading List of Values

- Updated AnyChart Flash Charts

- Automatic Row Processing (DML) Forms that Reference a Non-existent Column

- Application Attributes to Control Browser Security

- Updated Color Picker

- Dynamic Action Set Value with Multiple Affected Elements

- List of Values Only Supports Two Column SQL Statements

- Enabling Network Services in Oracle Database 11g

- Changes in Page and Region Caching

- Columns Used in Automatic Row Processing (DML) Processes

- Item Finder CSS Tab Availability

4.1 Hosted Online Help

Prior to release 4.1, the Application Express online help system was included with the the Application Express distribution. In this release, the online help is the Oracle Application Express Documentation Library hosted on Oracle's Technology Network.

To access the online help with this release and with previous releases, you click the Help link in the upper right corner of most Oracle Application Express pages. See "Accessing Help and the Documentation Library" in the Oracle Application Express Application Builder User's Guide.

Some benefits of the hosted online help include:

- Our documentation team now has greater flexibility in updating, correcting and enhancing documentation and online help, providing the most current and useful content.

- The hosted online help provides more powerful search capability.

- By not including the help system with the Application Express distribution, the overall distribution size of Application Express 4.1 has been dramatically reduced as well as the size of the content loaded into the XDB repository, if you are using embedded PL/SQL gateway.

- This removes the complexity associated with indexing the online help files, especially if your instance is accessed over SSL or the database is behind a firewall that cannot get to the Web server.

For customers that cannot get to the Internet, the entire documentation library can be downloaded and staged locally. The URL for the Help link can be adjusted from within Application Express to go directly to the locally staged documentation. See "Configuring Online Help" in the Oracle Application Express Administration Guide.

Local search capability is available for downloaded documentation. See "Downloading the Online Documentation Library" in the Oracle Application Express Application Builder User's Guide.

4.2 Before Header Processes and Browser Security HTTP Headers

Applications in Compatibility Mode of 4.1 write a MIME type and browser security related HTTP header variables and then execute an application's Before Header process, before closing the HTTP header. See "SET_COMPATIBILITY_MODE Procedure" in the Oracle Application Express API Reference.

If a Before Header process sets a different MIME type, you should alter the process to first execute the following to clear the output buffer:

sys.htp.init;

Note that this also removes all of the Application Express engine's HTTP header variables for browser security.

If a Before Header process directly writes HTML page content, it should call the following before emitting HTML page content:

sys.owa_util.http_header_close;

For applications that run in Compatibility Mode 4.0, Application Express does not automatically write the security HTTP header variables so as to not interfere with Before Header processes. Therefore, the application and page settings in the "Browser Security" region ("Cache" and "Embed in Frames") are ignored in such applications.

To reduce upgrade issues, migrated applications or applications which were exported with an older version of Application Express have set Compatibility Mode to 4.0. New applications are in mode 4.1. From a security perspective, it is recommended to modify any affected Before Header processes and set the application attribute Compatibility Mode to 4.1. The following query may help to find processes that should be examined:

select *
from ( select application_id,
page_id,
process_point,
process_name,
process_source
from apex_application_page_proc
union all
select application_id,
to_number(null),
process_point,
process_name,
process
from apex_application_processes
)
where process_point = 'BEFORE_HEADER'
and (  instr(upper(process_source), 'OWA_UTIL')    > 0
or instr(upper(process_source), 'WPG_DOCLOAD') > 0
or instr(upper(process_source), 'HTP.P')       > 0
)
order by application_id, page_id;

4.3 Instance Session Timeout Settings Now Control Applications

Prior to release 4.1, Session Timeout settings at the instance level were only used for the Oracle Application Express development applications such as Application Builder and SQL Workshop. In this release, the values at the instance level apply to Oracle Application Express applications if the application-level setting is empty. Note that this change could impact the idle time of a session. If the application-level setting is empty, the instance level setting is used. The default value at the instance level is one hour.

4.4 Updated JavaScript Libraries

The JavaScript libraries for jQuery and jQueryUI used by Application Express have been updated as follows:

- jQuery has been updated from version 1.4.2 to version 1.6.2

- jQueryUI has been updated from version 1.8 to version 1.8.14

See jQuery and jQueryUI release notes for bug fixes and enhancement at:

- http://docs.jquery.com/Downloading_jQuery#Current_Release

- http://jqueryui.com/docs/Changelog

There are a couple of situations, relating to this upgrade, that you should consider.

The first situation to consider is if you have used jQuery in your own JavaScript code in applications, then you may be impacted by changed behavior caused by the updated jQuery version. The most significant impact you may experience from updating your jQuery version is due to the use of the jQuery attr method. This method returns slightly different values in some circumstances. Please review the jQuery change log for further details of this and other changes.

If you are concerned this may impact your applications, there are 2 possible options:

1. Fallback to the previous version of jQuery for your code. You can easily include jQuery 1.4.2 by adding the following to your Page Template > Header, within the <head>…</head> tags, importantly ensuring this is done directly after the #HEAD# substitution string and before you include any of your libraries:

...
#HEAD#
<script src="#IMAGE_PREFIX#libraries/jquery/1.4.2/jquery-1.4.2.min.js" type="text/javascript"></script>
...

We will still include jQuery 1.6.2 as part of the #HEAD# substitution, but including 1.4.2 afterwards means that the variables $ and jQuery will now point to jQuery version 1.4.2, which you can continue to use in your applications. Note that jQuery 1.4.2 is still included in our distribution, so you don't need to add this to your web server.

2. Review and retest your jQuery code to see if you are impacted by the changes. This is more work initially, but has the advantage that you only need to load one version of the jQuery library into your application and secondly, you can also benefit from the enhancements of the most recent version. As the most significant of jQuery changes in behavior focus around the attr method, we suggest that you search the files containing your JavaScript code and also in Application Search in the Application Builder, for the following text:

.attr

The second point to consider as part of this upgrade, relates to jQuery UI and if you have included components of jQuery UI that are not included by default by Application Express. We don't include all the components of jQuery UI by default to reduce page size and processing, only the components used by Application Express base functionality. All of these default components are now using jQuery UI 1.8.14, whereas any components you may have previously included may be referencing an older version. This means there may be compatibility issues between the versions of jQuery UI components you have included and the updated jQuery and jQuery UI versions we include by default.

Again, if you are concerned this may impact your applications, there are 2 possible options:

1. Fallback to the previous versions of jQuery and jQuery UI in your code. You can include jQuery 1.4.2 and jQuery UI 1.8 by adding the following to your Page Template > Header, within the <head>…</head> tags, importantly ensuring this is done straight after the #HEAD# substitution string and before you include any of your libraries:

...
#HEAD#
<script src="#IMAGE_PREFIX#libraries/jquery/1.4.2/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="#IMAGE_PREFIX#libraries/jquery-ui/1.8/ui/minified/jquery-ui-1.8.custom.min.js" type="text/javascript"></script>
...

We still include jQuery 1.6.2 and jQuery UI 1.8.14 as part of the #HEAD# substitution, we're just including the older versions for compatibility with your other jQuery UI components you may reference. Note that jQuery 1.4.2 and jQuery UI 1.8 are still included in our distribution, so you don't need to add this to your web server.

2. Review your jQuery UI code, update any jQuery UI components to reference version 1.8.14 and retest. This is more work initially, but has the advantage that you only need to load one version of the jQuery library and one version of the jQuery UI library into your application and secondly, you benefit from the enhancements of the most recent versions. We suggest you search the files containing your JavaScript code and also in Application Search in the Application Builder, for the following text:

libraries/jquery-ui/

4.5 Updated FCKeditor

The FCKeditor used by Application Express has been updated to FCKeditor version 3.6.1. This version allows Application Express to support more languages, address some performance issues, resolves several 4.0 bugs, and is 508 compliant.

4.6 Change in Column Requirements for Rows Inserted into Tabular Forms

For 4.0, new rows entered into a tabular form required all columns that are part of the primary key to be NULL on submit. Many database models use composite primary keys with one or more primary key columns that are a foreign key column at the same time. When adding new rows into those types of tables, the foreign key must have a value, which violates the primary key must be NULL rule.

For 4.1, a master-detail form can be created on tables where the primary key of the detail table contains a column that is also part of a foreign key. This requires that the developer chooses to use the ROWID pseudo-column for Automatic Row Processing (DML) operations.

4.7 Button Template Substitution Value Changed for #BUTTON_ID#

Prior to 4.1, the value substituted for the #BUTTON_ID# substitution string in a button template, for region buttons, was the internal numeric ID of the button. Item buttons failed to substitute this value at all. In this release, the value substituted will be one of the following:

1. If the template is used by an item button, the item name is used (for example 'P1_GO').

2. If the template is used by a region button and a 'Static ID' is defined for the button, this is used (for example 'my_custom_id').

3. If the template is used by a region button and no 'Static ID' is defined, an ID in the format 'B||[Internal Button ID] will be used (for example 'B123456789101112').

The change in behavior that could be of potential significance in your applications is #3 above. This was changed to be a valid HTML 4.01 identifier (beginning with a letter) and to be consistent with how other component IDs are handled in Application Express. Therefore, if you used a button template, that used an ID value substituted by #BUTTON_ID#, and importantly you hard-coded that ID from other places in your code, for example in custom JavaScript to attach behavior to the button, then this change in behavior will cause that code to no longer work.

To help you identify region buttons that use a template containing the #BUTTON_ID# substitution string, you can run the following query in your workspace:

select aapb.application_id,
aapb.page_id,
aapb.button_name,
aapb.label,
aapb.button_id,
aapb.button_template,
aatb.template
from apex_application_page_buttons aapb,
apex_application_temp_button aatb
where aapb.button_template_id = aatb.button_template_id
and aapb.application_id  = 123       -- Change to Application ID, or omit predicate for all applications in your workspace
and aapb.button_template is not null
and aapb.button_position = 'Region Position'
and upper(aatb.template) like '%#BUTTON_ID#%'

This will not detect where you may have referenced the ID in other code, such as JavaScript code. It just identifies the buttons that could be problematic. So you can then review the pages returned by this query to isolate any pages that might have issues.

The easiest way to fix the issue is to use the 'Button ID' value returned from the query as the 'Static ID' for the button. This means the button would be rendered with the same ID as prior to release 4.1 and any dependent code would still work.

4.8 Default Value for Cascading List of Values

For Application Express 4.1, the default value for a cascading list of values is re-evaluated if the cascading list of values is updated. In Application Express 4.0 the default value remained the same if the cascading list of values was updated.

4.9 Updated AnyChart Flash Charts

The AnyChart Flash charts used by Application Express have been updated to the latest version 5.1.3.

See AnyChart website for bug fixes and enhancements at:

http://anychart.com/products/anychart/history/

4.10 Automatic Row Processing (DML) Forms that Reference a Non-existent Column

If you have an Automatic Row Processing (DML) form page that references a table column that does not exist, with Application Express 4.1 you will get an internal application error. Prior to 4.1 you would not get an error. For example, in 4.1, if you have an Automatic Row Processing (DML) form page, as the result of running a form or form and report on table wizard, and you have an item that references a column that does not exist in the table, you will get an internal application error.

If you desire the behavior as it was in Application Express 4.0 or earlier releases, set the compatibility mode of the application to '4.0'. See "SET_COMPATIBILITY_MODE Procedure" in the Oracle Application Express API Reference.

To identify possible items that might be affected by this new behavior, run the Application Express Advisor. To filter only the Oracle Application Express Advisor results that identify this specific issue, check only the box next to "Fetch, DML, MR* Processes are Valid" under the Error section. To filter only the Oracle Application Express Advisor results that identify this specific issue, check only the box next to "Fetch, DML, MR* Processes are Valid" Under the Error section."See "Running Advisor on an Entire Application" in the Oracle Application Express Application Builder User's Guide.

4.11 Application Attributes to Control Browser Security

In Application Express 4.1, there are two new application attributes to control Browser Security: Cache and Embed in Frames. Enabling the cache allows the browser to save the contents of your application's pages in its cache, both in memory and on disk. The Embed in Frames attribute controls if the browser is allowed to display your application's pages within a frame. Applications running in compatibility mode '4.0' function as if the Cache is enabled and as if Embed in Frames is set to allowed. Applications running in compatibility mode '4.1' will respect the specific Browser Security attributes.

See "SET_COMPATIBILITY_MODE Procedure" in the Oracle Application Express API Reference.

4.12 Updated Color Picker

APEX 4.1 contains an updated color picker. If you have any applications with items of type Color Picker, the function will automatically use the new color picker. The numbers in the following text correspond to the numbers in the color picker screen shot below. To set a color, you drag the middle section (1) to focus on the color family you want (red, violet, blue, green, yellow, orange) and then use the large square on the left (2) to select the exact shade. The selected shade will display on the right (3), just to the left of the old color (4). Alternatively, you can set the RGB values manually just below the new and old color displays or you can enter the hex value just below the RGB settings (5). When you have the exact color you want, you click the round icon at the bottom right (6) to bring the selected color back to the main display. Please note that this will affect applications that you have created which use color picker items so you will need to train your users on how to use the new color picker.

4.13 Dynamic Action Set Value with Multiple Affected Elements

In dynamic actions, prior to Application Express 4.1, it was possible to use the Set Value action to set multiple Affected Elements, but only to the same value, not different values. In Application Express 4.1, we introduced the following new capabilities to set multiple values from dynamic actions:

- Action 'Set Value' > Set Type 'SQL Statement' - You can now define a SQL Query to return between 1 and 100 columns, which is used to set the 'Affected Elements' in the order defined (1st column is used to set 1st affected element, and so on). Previously, this only supported querying for 1 column, but could be used to set multiple affected elements to that same 1 column value.

- Action 'Execute PL/SQL Code' - A new 'Page Items to Return' attribute that sets any page item values on the page to their updated values in session state.

With the introduction of some built-in options to retrieve multiple values, Application Express no longer supports the ability to retrieve 1 value that could then be used to set multiple page items. This was done for simplicity and usability. If you had defined a 'Set Value' dynamic action that set multiple Affected Elements to the same value, here is how you can fix this, according to the 'Set Value' dynamic action's 'Set Type':

- Static Assignment - Define additional 'Actions' for each Affected Element, setting them all to the same value.

- JavaScript Expression - Define additional 'Actions' for each Affected Element, setting them all to the same value.

- SQL Statement - Alter your SQL Statement such that it selects the same column value, with different column aliases for each Affected Element.

- PL/SQL Expression - Consider changing this over to use the 'Execute PL/SQL Code' action type, in conjunction with the 'Page Items to Return' attribute. The 'PL/SQL Code' would need to ensure the page item's value is updated in session state, such that 'Page Items to Return' returned the updated value.

- PL/SQL Function Body - Consider changing this over to use the 'Execute PL/SQL Code' action type, in conjunction with the 'Page Items to Return' attribute. The 'PL/SQL Code' would need to ensure the page item's value is updated in session state, such that 'Page Items to Return' returned the updated value.

4.14 List of Values Only Supports Two Column SQL Statements

Since the last few releases of Application Express, the Builder requires the SQL statement of a List of Values to contain two columns when a page item is created or modified.

In Application Express 4.1, the rendering engine has been modified to perform the same check during runtime. If a List of Values is detected that contains only one column, the error messages "Wrong number of columns selected in the LOV SQL query for P1_DNAME. See examples for valid statements." is displayed.

To fix this error, edit the SQL statement of the List of Values. Duplicate the column and give the first column the alias name display_value and the new second column return_value.

For example:

SQL statement before editing:

select dname from dept

SQL statement after editing:

select dname as display_value, dname as return_value from dept

4.15 Enabling Network Services in Oracle Database 11g

By default, the ability to interact with network services is disabled in Oracle Database 11g. Therefore, if you are running Oracle Application Express with Oracle Database 11g, you need to use the new DBMS_NETWORK_ACL_ADMIN package to grant connect privileges to any host for the APEX_040100 database user. Failing to grant these privileges results in issues with:

- Sending outbound mail in Oracle Application Express.
Users can call methods from the APEX_MAIL package, but issues arise when sending outbound email.

- Using Web services in Oracle Application Express.

- PDF/report printing.

Topics in this section include:

- Granting Connect Privileges to a Host

- Granting Connect Privileges to a Local Host

- Troubleshooting an Invalid ACL Error

Tip:
To run the examples described in this section, the compatible initialization parameter of the database must be set to at least 11.1.0.0.0. By default an 11g database will already have the parameter set properly, but a database upgraded to 11g from a prior version may not. See "Creating and Configuring an Oracle Database" in Oracle Database Administrator's Guide for information about changing database initialization parameters.

4.15.1 Granting Connect Privileges to a Host

The following example demonstrates how to grant connect privileges to any host for the APEX_040100 database user.

DECLARE
ACL_PATH  VARCHAR2(4000);
BEGIN
-- Look for the ACL currently assigned to '*' and give APEX_040100
-- the "connect" privilege if APEX_040100 does not have the privilege yet.

SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;

IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040100',
'connect') IS NULL THEN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
'APEX_040100', TRUE, 'connect');
END IF;

EXCEPTION
-- When no ACL has been assigned to '*'.
WHEN NO_DATA_FOUND THEN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml',
'ACL that lets power users to connect to everywhere',
'APEX_040100', TRUE, 'connect');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
END;
/
COMMIT;

4.15.2 Granting Connect Privileges to a Local Host

The following example is a less privileged demonstration of how to access resources on a local host. This example could possibly enable email and PDF printing if those servers were also on the local host.

DECLARE
ACL_PATH  VARCHAR2(4000);
BEGIN
-- Look for the ACL currently assigned to 'localhost' and give APEX_040100
-- the "connect" privilege if APEX_040100 does not have the privilege yet.
SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
WHERE HOST = 'localhost' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;

IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040100',
'connect') IS NULL THEN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
'APEX_040100', TRUE, 'connect');
END IF;

EXCEPTION
-- When no ACL has been assigned to 'localhost'.
WHEN NO_DATA_FOUND THEN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('local-access-users.xml',
'ACL that lets users to connect to localhost',
'APEX_040100', TRUE, 'connect');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('local-access-users.xml','localhost');
END;
/
COMMIT;

4.15.3 Troubleshooting an Invalid ACL Error

If you receive an ORA-44416: Invalid ACL error after running the previous script, use the following query to identify the invalid ACL:

REM Show the dangling references to dropped users in the ACL that is assigned
REM to '*'.

SELECT ACL, PRINCIPAL
FROM DBA_NETWORK_ACLS NACL, XDS_ACE ACE
WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL AND
NACL.ACLID = ACE.ACLID AND
NOT EXISTS (SELECT NULL FROM ALL_USERS WHERE USERNAME = PRINCIPAL);

Next, run the following code to fix the ACL:

DECLARE
ACL_ID   RAW(16);
CNT      NUMBER;
BEGIN
-- Look for the object ID of the ACL currently assigned to '*'
SELECT ACLID INTO ACL_ID FROM DBA_NETWORK_ACLS
WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;

-- If just some users referenced in the ACL are invalid, remove just those
-- users in the ACL. Otherwise, drop the ACL completely.
SELECT COUNT(PRINCIPAL) INTO CNT FROM XDS_ACE
WHERE ACLID = ACL_ID AND
EXISTS (SELECT NULL FROM ALL_USERS WHERE USERNAME = PRINCIPAL);

IF (CNT > 0) THEN

FOR R IN (SELECT PRINCIPAL FROM XDS_ACE
WHERE ACLID = ACL_ID AND
NOT EXISTS (SELECT NULL FROM ALL_USERS
WHERE USERNAME = PRINCIPAL)) LOOP
UPDATE XDB.XDB$ACL
SET OBJECT_VALUE =
DELETEXML(OBJECT_VALUE,
'/ACL/ACE[PRINCIPAL="'||R.PRINCIPAL||'"]')
WHERE OBJECT_ID = ACL_ID;
END LOOP;

ELSE
DELETE FROM XDB.XDB$ACL WHERE OBJECT_ID = ACL_ID;
END IF;

END;
/

REM commit the changes.

COMMIT;

Once the ACL has been fixed, you need to run the first script in this section to apply the ACL to the APEX_040100 user. See "Granting Connect Privileges to a Host".

4.16 Changes in Page and Region Caching

Because of bug 13722696, this release includes the following changed behavior for page and region caching:

1. If a cached region or a cached page contains protected page items of the following types, it will never be cached independent of the specified cache settings:

- Hidden where Value Protected is set to Yes.

- Display Only where Save Session State is set to Yes.

- Text Field where Disabled is set to Yes and Save Session State is set to Yes.

- Page Items where the read only condition evaluates to true.

2. If the URL which is used to render a page contains application or page items which are set in session state (for example, f?p=631:7:609442841545301::::P7_CUSTOMER_ID:7 ) then the existing regions or page caches will not be used and no new caches are stored independent of the specified cache settings.

3. If the application is running in debug mode, caches are now used. Previously, Debug mode always disabled caching.

4.17 Columns Used in Automatic Row Processing (DML) Processes

Because of bug 12990445, the following changes have been implemented for Automatic Row Processing (DML) process types. The code which performs the INSERT has been changed to determine if the columns should be included in the INSERT statement. Note that these are the same checks which occur before an UPDATE. These new checks include:

- Is the source type a DB Column?

- Does the specified Build Option have a status of Include or is it not specified at all?

- Is the page item contained in the POST request? For example, if the page item is conditional it will not be contained in the POST request if the condition evaluates to FALSE during page rendering.

- Is the page item not of type Display Only where Save State is set to No?

The above new behavior is used for all new applications which are created in Oracle Application Express release 4.1.1.

For existing applications where the compatibility mode is set to 4.0, the old behavior of including all page items will still be used to prevent breaking existing applications.

To change an old application to use compatibility mode 4.1, run the following statement in SQL Workshop, SQL Commands:

begin
apex_util.set_compatibility_mode(<application id>, '4.1);
commit;
end;

To learn more, see "SET_COMPATIBILITY_MODE Procedure" in the Oracle Application Express API Reference.

4.18 Item Finder CSS Tab Availability

The CSS tab of the Item Finder is no longer available.

5 Functionality No Longer Supported

The following are not supported in Oracle Application Express, release 4.1.

This section contains the following topics:

- No Support for Save State before Branch

- No Support for Running in an EBCDIC Character Set

- Text Areas No Longer Support Spell Checks

- Format Masks Not Supported by Date Picker

5.1 No Support for Save State before Branch

The option "Save State before Branch" is no longer available for new and existing branches. Only if the option was previously checked will it still be available for compatibility reasons and will work as before.

5.2 No Support for Running in an EBCDIC Character Set

Oracle Application Express does not support an EBCDIC character set. The value of the character set in the configuration of the mod_plsql Database Access Descriptor (DAD) must be set to AL32UTF8, regardless of the underlying database character set.

See Also:
"Configuration Requirements"

5.3 Text Areas No Longer Support Spell Checks

Text Area item types have been migrated to a simple text area. This functionality has been replaced by Web browser spell checking support, which supports more languages.

5.4 Format Masks Not Supported by Date Picker

Oracle Application Express includes a new jQuery based Date Picker. This new date picker does not support the format masks described in Table 1, "Unsupported Date Picker Formats".

Table 1 Unsupported Date Picker Formats

Format

Description

CC

Century

BCC

Century BC prefixed with

SYYY

Year with BC prefixed

IYYYY

ISO year

YEAR

Year spelled out

SYEAR

Years spelled out with BC prefixed

BC

BC/AD indicator

Q

Quarter

RM

Roman month

WW

Week of year 1-52

W

Week of month 1-5

IW

ISO standard week of year

DDTH

Ordinal day

DDSPTH

Spelled out Ordinal

J

Julian Day

TH

Ordinal format

TZD

Abbreviated time zone name

TZH

Time zone Hour displacement

TZM

Time zone Minute displacement

TZR

Time Zone Region

6 Open Bugs and Known Issues

This section describes bugs and known issues for Oracle Application Express.

This section contains the following topics:

- Problems with SVG Charts

- Problems with Queries Containing a Bind Variable and a String with Two Dashes

- Importing Spreadsheet Data Containing Quotation Marks

- Runtime Errors in an Application Imported from a Previous Release

- DBA Authentication Restriction

- Exporter Tool Support for Microsoft Access

- Problem with Brazil Map

- Issues Displaying Data Point in AnyChart5

- Themes Not Supporting Custom Calendars

- Interactive Report Region Hangs When Session Expires

- Some Dynamic Action When Condition Types Not Applicable for Certain Events

- Issues With Deleting Dynamic Actions Having a Region Defined

- JavaScript Function Not Working When Setting Multiple Values of a Multiselect List

- Upgrade Error with Websheet Objects

- Accessibility Issues

Tip:
This section is current as of the writing of this document. To view the most current listing of known issues, go to the Known Issues page available off the Downloads page. See:

http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html

6.1 Problems with SVG Charts

If you experience problems with an SVG chart, try upgrading the chart to a Flash chart.

To upgrade an SVG chart to Flash:

1. Navigate to the appropriate Page Definition.

2. Under Regions, click the region name. The region name displays to the left of SVG Chart.

3. On the Region Definition, click Upgrade SVG Chart to Flash Chart on the Tasks list.

4. Click Upgrade.

See Also:
"Creating Charts" in Oracle Application Express Application Builder User's Guide

6.2 Problems with Queries Containing a Bind Variable and a String with Two Dashes

Creating a report region based on a query that contains a string with two dashes may hinder the Application Express Engine's ability to handle item bind variable references. Consider the following example:

SELECT ename, job, sal, comm, deptno
FROM   emp
WHERE instr ('-'||'-dash-'||'-','uu') = 0
AND deptno = :P18_X
AND 1 = 1

Workaround:

You can correct this behavior by changing the bind variable format. For example, to correct this issue in the previous example you would change :P18_X to v('P18_X').

6.3 Importing Spreadsheet Data Containing Quotation Marks

If you import spreadsheet data by copying and pasting and a column value contains a double quotation mark, the data will not import correctly (for example, 54" Plasma Flat Screen). To avoid this problem, you have two options:

- Option 1:

1. Save the data in a delimited format (such as comma-delimited (.csv) or tab-delimited).

2. Use Import Text Data wizard to upload and import the saved file.

- Option 2:

1. Replace the quotation mark with two double quotation marks as shown in the following example:

54"" Plasma Flat Screen

2. Use the Import Spreadsheet Data wizard to import the file.

6.4 Runtime Errors in an Application Imported from a Previous Release

If you export an application from an earlier Oracle Application Express release and then import and install it using the installation pages in Application Builder, in rare situations you may encounter runtime errors after the application installs.

These errors often manifest themselves as PL/SQL parser or execution errors pertaining to blocks of PL/SQL code embedded within application components. The installation process sometimes splits strings greater than 200 characters into multiple lines. For example, lines may split between PL/SQL keywords, or at other places that cause parsing errors.

Workaround:

If you encounter these types of errors and suspect the installation process has split large strings:

1. Isolate the failing component containing the suspect PL/SQL within the application by editing the failing page in Application Builder.

2. Locate the blocks of code that appear to split incorrectly.

3. Attempt to split the blocks of code in more appropriate places, or insert white space with the lines until no runtime errors are observed.

4. Export the application, import the export file, and then reinstall it.

5. Retain the new export file as a permanent backup copy.

6.5 DBA Authentication Restriction

The following restriction applies to features in Oracle Application Express that require DBA authentication (for example, the Session report on the Database Monitor page). The DBA account used for authentication must not require double-quoting. In other words, it cannot be lower or mixed case.

6.6 Exporter Tool Support for Microsoft Access

When migrating a Microsoft Access application to an Oracle Application Express application, you export your Microsoft Access metadata using the Exporter tool. Note that Exporter Tool for Microsoft Access supports Microsoft Access 97, Microsoft Access 2000, Microsoft Access 2002, Microsoft Access 2003, and Microsoft Access 2007.

6.7 Problem with Brazil Map

There are problems creating a map of Brazil because the region Distrito Federal is not independent of the surrounding state Goias. As a result, any associated data is not displaying correctly on the map.

This issue is tracked with Oracle bug 9725582.

6.8 Issues Displaying Data Point in AnyChart5

To display all data points associated with an AnyChart 5 chart, generated in Oracle Application Express release 4.0 or higher, each data point must have a unique label. AnyChart 5 does not support the display of data points with duplicate labels, and the occurrence of duplicate labels will result in missing data points on your chart. Ensure that the chart series query returns a result set with a unique label for each data point to be displayed on your chart

6.9 Themes Not Supporting Custom Calendars

The following themes do not support custom calendars:

- Theme 8

- Theme 10

- Theme 13

- Theme 14

- Theme 15

- Theme 16

- Theme 18

- Theme 19

- Theme 20

- Theme 24

6.10 Interactive Report Region Hangs When Session Expires

If a session expires after the point when a page containing in interactive report region has been displayed and the user tries to interact with the interactive report, the report hangs and does nothing.

This issue is tracked with Oracle bug 9690335.

6.11 Some Dynamic Action When Condition Types Not Applicable for Certain Events

When defining a dynamic action in When attributes, there is an Event select list containing all the possible events that can trigger the dynamic action. Also in the When attributes is a Condition select list which enables you to define a condition that controls when the dynamic action runs. For the following event types only a condition type of JavaScript Expression works: Before Page Submit, Page Load, Page Unload, and Resize (which hides the Selection Type fields. The other condition types (equal to, is null, and so on) are for events where the Selection Type is defined.

This issue is tracked with Oracle bug 9733317.

6.12 Issues With Deleting Dynamic Actions Having a Region Defined

If you delete a region which is assigned as the affected element to a dynamic action, you are prompted to delete the dynamic action. If that dynamic action also has other actions which are not related to this region, the whole dynamic action is still deleted, rather than just the specific action that references the region.

Workaround:

To avoid the deletion of the entire dynamic action, prior to deleting the region, delete the referencing action from the dynamic action. As a result, the region delete will not pick up that dynamic action as a candidate to delete and the dynamic action will not be deleted.

This issue is tracked with Oracle bug 9615853.

6.13 JavaScript Function Not Working When Setting Multiple Values of a Multiselect List

The JavaScript function $s enables you to set the value or values of both native and plug-in item types in Oracle Application Express. This function does not work for setting more than one value of a multiselect list. A multiselect list is a select list with Allow Multiple Selection set to Yes. Setting single values will work.

This issue is tracked with Oracle bug 9616570.

6.14 Upgrade Error with Websheet Objects

If you see errors prefixed with "Warning: Websheet schema" in the upgrade log, they are specific to a user's Websheet schema. Those schemas may have invalid Websheet objects that caused the Websheet object upgrade to fail. This should not impact the overall upgrade of Oracle Application Express.

6.15 Accessibility Issues

This section describes accessibility bugs and known issues for Oracle Application Express.

1. Affecting the Application Express Development Environment:

- Sub-menu drill down icons in the top level navigation menu are not keyboard accessible in IE. This issue is tracked with Oracle bug 12678997.
Workaround:

Tab to and activate the top level menu item, then on the subsequent loaded page, navigate to the specific sub-component or use one of the other supported browsers (Firefox, Chrome or Safari).

- The 'Tree View' used on the 'Page Definition' page is not usable with the keyboard. This issue is tracked with Oracle bug 9773584.
Workaround:

This page has an alternative view available called 'Component View', which should be used if using keyboard only. 'Component View' can be enabled by either tabbing to the 'Switch to Component View' button at the top of this page and pressing 'ENTER' or by using the Application Express development environment with screen reader mode enabled.

- The Code Editor used in a few places hijacks the TAB key in Chrome and Safari. This means that in these browsers a keyboard-only user cannot tab away from the editor. This issue is tracked with Oracle bug 11883419.
Workaround:

Use one of our other supported browsers (Internet Explorer or Firefox) where this is not an issue.

- The 'Request Workspace' confirmation page contains inaccessible 'Captcha' style verification. Users must enter alphanumeric characters displayed in an image on-screen, however, this image has no ALT text by design. This means this is not accessible to screen reader users. This issue is tracked with Oracle bug 11728600.
Workaround:

The instance administrator can choose to disable the 'Captcha' style verification.

- Reports can contain a 'Check All' checkbox in the column header. This checkbox is sometimes missing descriptive text. This issue is tracked with Oracle bug 12612649.
Workaround:

Check the individual check boxes on each row for that column.

- Interactive report regions used throughout the Oracle Application Express development environment do not include a HEADING (H1, H2, etc.) tag containing the region title. This makes it hard for screen reader users to easily identify such regions. This issue is tracked with Oracle bug 9780852.
Workarounds:

In order to easily navigate to the content in the interactive report region, go directly to the search field at the top of the interactive report with JAWS by:

1. Press INSERT + F5 to load the Select a Form Field dialog box.

2. Press the S key repeatedly until you hear "Search Report Edit".

3. This is the field at the top of the report. It is usually the first form field beginning with the letter S.

4. Press ENTER and JAWS takes you to the search field at the top of the interactive report region.

To further your understanding of what the report contains, switch the report to Report view. When running in Screen Reader Mode, interactive report regions are optimized to run in Report view. To learn more, see "About Screen Reader Mode" section of "Accessibility in Oracle Application Express" Appendix in the Oracle Application Express Application Builder User's Guide.

To enable Report view for an interactive report region:

1. Press INSERT + F7 to load the links List dialog box.

2. Press the V key repeatedly until you hear, "View Report".

3. Press ENTER to refresh the interactive report.

4. To get detailed information relating to what data the report contains, press T and JAWS announces detailed information relating to this report.

2. Affecting the Application Express Websheet Runtime:

- The top level menus used to navigate around the application and the 'Settings' menu available when editing 'Sections' on a page, do not follow the DHTML Style Guidelines for keyboard support. This issue is tracked with Oracle bug 12691947.
Workaround:

They are however accessible via tabbing to the menu and respective menu items. We also provide keyboard shortcuts for menu items available.

3. Affecting Development Environment, Websheet Runtime and Custom Applications:

- A few helper-style icons in interactive report regions have empty ALT text. Specifically this relates to fields with popup controls used to assist in selection of a value, where the icon used to open the popup has empty ALT text. This issue is tracked with Oracle bug 9671431.
Workaround:

Enter the text manually in the input box, instead of using the popup.

- The 'Rich Text Editor' native item type of Application Express is announced by the screen reader referring the item's name, rather than the label. This issue is tracked with Oracle bug 12702214.
Workaround:

Ensure the name given to the item is representative of its functionality and understandable by the end user.

7 Documentation Accessibility

For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.

Access to Oracle Support

Oracle customers have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.

Accessibility of Code Examples in Documentation

Screen readers may not always correctly read the code examples in this document. The conventions for writing code require that closing braces should appear on an otherwise empty line; however, some screen readers may not always read a line of text that consists solely of a bracket or brace.

Accessibility of Links to External Web Sites in Documentation

This documentation may contain links to Web sites of other companies or organizations that Oracle does not own or control. Oracle neither evaluates nor makes any representations regarding the accessibility of these Web sites.

Oracle Application Express Release Notes, Release 4.1

E21672-06

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Oracle Legal Notices

Copyright Notice

Copyright © 1994-2014, Oracle and/or its affiliates. All rights reserved.

Trademark Notice

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

License Restrictions Warranty/Consequential Damages Disclaimer

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Alpha and Beta Draft Documentation Notice

If this document is in preproduction status:

This documentation is in preproduction status and is intended for demonstration and preliminary use only. It may not be specific to the hardware on which you are using the software. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to this documentation and will not be responsible for any loss, costs, or damages incurred due to the use of this documentation.