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:
-
Under Remote Unit of Work (RUOW), cursors that have been prepared with the
FOR UPDATE
clause are implicitly closed onCOMMIT
orROLLBACK
. -
Under Distribute Unit of Work (DUOW), all cursors are implicitly closed if any updates occur to the server containing the open cursor on
COMMIT
orROLLBACK
.
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.
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.
drdaas.protoproc_options=”QRYDTA/ELMODE,
EXTDTA/ELMODE, LOGNAME/ORACLEDB, LOGTSTMP/201609191201020001”