12 Restrictions on Using Oracle Database Provider for DRDA

Several restrictions and known workarounds may be used when customizing or maintaining in Oracle Database applications that were originally designed for IBM DB2.

Resynch Manager

Oracle Database Provider for DRDA supports Sync Point Manager services for Distributed Units of Work. It also supports Resynchronization Manager services for resynchronization during migrations that use a source Sync Point Manager without a log.

This release of Oracle Database Provider for DRDA does not support active in-doubt transaction resolution services. Transactions that have been migrated and are in-doubt require manual resolution between the client system and Oracle Database. See Oracle® Database Administrator’s Guide for information on manual resolution of in-doubt transactions.

Cursor HOLD Attribute Semantics

Cursors marked with the HOLD attribute have the following restrictions:

  1. Under Remote Unit of Work (RUOW), cursors that have been prepared with the FOR UPDATE clause are implicitly closed on COMMIT or ROLLBACK.

  2. Under Distribute Unit of Work (DUOW), all cursors are implicitly closed if any updates occur to the server containing the open cursor on COMMIT or ROLLBACK.

DB2 Password Blank Padding

When passwords are encrypted and sent through DRDA, DB2 for z/OS inserts blank spaces into passwords that have less than 8 characters. This results in a log-on failure, error ORA-01017. Oracle recommends that user account passwords be at least 8 characters long.

Restrictions on Datatypes

There are several restrictions on use of datatypes.

DATE Datatype

Oracle DATE datatype contains a time component that DRDA DATE datatype does not support. Operating on Oracle DATE data may not yield expected results if the DATE data contains a time component. For consistency, do not store a time component when inserting DATE data using Oracle native DATE syntax. Alternatively, remap the DATE column to TIMESTAMP.

Oracle Object-Relational Datatypes

This release does not support queries on objects that contain columns defined through Object-Relational datatypes.

This release does not support calling SQL procedures defined through Object-Relational datatypes for their input or return arguments.

TIMESTAMP Datatype

Oracle Database Provider for DRDA represents TIMESTAMP with a fixed precision of 6 decimal places.

For compatibility reasons, extra care should be exercised when using TIMESTAMP data, and programmatic adjustments, such as type casting, may have to be made. See Oracle® Database SQL Language Reference for information about casting with the TIMESTAMP datatype.

TIMESTAMP WITH TIMEZONE Datatype

Representation of TIMESTAMP WITH TIMEZONE is significantly different between Oracle Database and DB2.

Oracle Database Provider for DRDA represents TIMESTAMP WITH TIMEZONE according to Oracle's presentation rules. For best compatibility between client and server, use four digit time zone suffix notation instead of written timezone description notation, such as -08:00.

XML Datatype

The DRDA XML datatype (988, 989) is not supported as a program or bind variable datatype in this release.

SYS.XMLType Datatype

The Oracle XML datatype, SYS.XMLType, is not supported in this release.

Extended Length Mode

The latest release of DB2 for z/OS (v11.1) does not support ‘Streaming Layer B mode’ protocol for query results, generated by cursors. These cursors are defined using ROWSETs parameter, that generate a rowset exceeding 32767 bytes of data.

Example of cursor declaration

EXEC SQL DECLARE DT CURSOR WITH ROWSET POSITIONING FOR SEL;

According to the DRDA standard, the target server can determine the returned form of query data for any given query. Streaming Layer B mode is the most efficient form, for this purpose. However, some releases of DB2 do not support this more when ROWSETs are involved and will cause an error to be returned to the DB2 client application:

DSNT4081 SQLCODE = —30020, ERROR: EXECUTION FAILED DUE TO A DISTRIBUTION PROTOCOL ERROR THAT CAUSED DEALLOCATION OF THE CONVERSATION: REASON 124C (0100)

Under these conditions, DB2 will not accept Streaming Layer B mode objects. However, it will accept Extended Length mode objects instead.

You can set the PROTOPROC_OPTIONS configuration parameter to enable this mode until DB2 supports Streaming Layer B mode.

Related Topics

See Also:

PROTOPROC_OPTIONS Section, in the Configurations Parameters Chapter.

DB2 for z/OS Log usage

LOGNAME

The LOGNAME value specifies a fixed Log name exchanged between the server and client. The Log Name should be in the format <NAME>. The Log name can contain between 1 and 18 alpha-numeric characters only. In case there is an invalid value or length entered, it will be rejected, and a random name will be generated.

LOGTSTMP

The LOGTSTMP specifies a fixed Log Timestamp exchanged between the server and client. The Log Timestamp should be in the format <YYYYMMDDHHMMSSTTTT> and have only numeric values. In case an invalid value or length is entered, it will be rejected and a timestamp with the current time will be generated.

Following is an illustration:
drdaas.protoproc_options=”QRYDTA/ELMODE, EXTDTA/ELMODE, LOGNAME/ORACLEDB, LOGTSTMP/201609191201020001”

Other Restrictions

Other restrictions, such as “SQL Clause Restrictions” are outlined in “SQL Statement Support in Oracle Database Provider for DRDA.”