====================================================
Oracle Data Provider for .NET 10.2.0.2.20 Production
====================================================
Copyright (C) Oracle Corporation 2006
This document provides information that supplements the Oracle Data Provider
for .NET (ODP.NET) documentation.
========================
NEW FEATURES AND CHANGES
========================
The following features have been added or removed since ODP.NET 10.2.0.2.10
beta:
1. System.Transactions Support (ODP.NET for .NET Framework 2.0 only)
ODP.NET for .NET Framework 2.0 supports System.Transactions. However,
ODP.NET does not promote transactions from local transactions to distributed
transactions. This means that when System.Transactions is used, the transaction
becomes a distributed transaction immediately, even if only one resource
manager is used. If applications use System.Transactions, it is required that
the "enlist" connection string attribute be set to either "true" (default) or
"dynamic".
2. Provider-specific Type NULL support (ODP.NET for .NET Framework 2.0 only)
ODP.NET supports provider-specific NULL Types. If the application requests
for provider-specific types to be retrieved from an OracleDataReader or an
OracleParameter or populated into a DataSet, NULL values will be represented
as provider-specific NULL values. Provider-specific NULL values are accepted
as input parameter values and can also be returned as output parameter values.
Note that ODP.NET for .NET Framework 1.x will continue to represent NULL values
as DBNull.Value.
3. OracleDbType.BinaryFloat & OracleDbType.BinaryDouble Support (ODP.NET
for ADO.NET 1.x and 2.0)
ODP.NET supports new OracleDbType enumeration values of BinaryFloat and
BinaryDouble which can be used when binding data for BINARY FLOAT or BINARY
DOUBLE parameters.
4. Windows Registry Changes (ODP.NET for .NET Framework 1.x and 2.0)
Default registry values for ODP.NET now reside under
HKEY_LOCAL_MACHINE\Software\Oracle\ODP.NET\<version>
where <version> is the assembly version of Oracle.DataAccess.dll.
5. DllPath Registry Value (ODP.NET for .NET Framework 1.x and 2.0)
The Oracle.DataAccess.dll searches for dependent unmanaged DLLs
(i.e. Oracle Client) based on the following order:
i) directory of the application/executable
ii) directory specified by
HKEY_LOCAL_MACHINE\Software\Oracle\ODP.NET\<version>\DllPath
iii) directories specified by the PATH environment variable
Upon an install of ODP.NET, the DllPath registry value of type REG_SZ
will be set to the %ORACLE_HOME%\bin directory where the corresponding
dependent DLLs are installed.
Note that the DllPath registry value takes effect only on Windows XP,
Windows Server 2003, and Windows Server 2003 R2. If ODP.NET is installed on
Windows 2000, ODP.NET will simply rely on the application directory and
PATH for loading dependent unmanaged DLLs.
6. ODP.NET and Dependent Unmanaged DLL Mismatch (ODP.NET for .NET Framework
1.x and 2.0)
To enforce the proper usage of Oracle.DataAccess.dll assembly with proper
unmanaged DLLs, an exception will be raised if Oracle.DataAccess.dll
notices it has loaded a mismatching version of a dependent unmanaged DLL.
7. UDT/Objects Support (ODP.NET for .NET Framework 1.x and 2.0)
This feature has been removed for 10.2.0.2.20.
=======================
DOCUMENTATION ADDENDUMS
=======================
1. Database Change Notification
When an OracleCommand registers for a Change Notification, statement caching
will be disabled for that execution.
2. Batch Processing (OracleDataAdapter.UpdateBatchSize)
Update batches executed with large amounts of data may encounter an
"PLS-00123: Program too large" error. To avoid this error, reduce the size
of UpdateBatchSize to a smaller value.
3. XML DATE and TIMESTAMP Based on Standard XML Schema
Starting with Oracle Database 10g Release 2, the generated XML DATE and
TIMESTAMP formats will not be based on database server settings. They will
now be based on the standard XML Schema formats.
For more information on the XML DATE and TIMESTAMP formats in the XML Schema
specification, see
http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#isoformats
For more information on DATE and TIMESTAMP formats in generated XML, read
Oracle XML DB Developer's Guide.
4. System.Transactions Support
Implicit Distributed Transaction Enlistment Using TransactionScope sample
lists the connection string attribute Enlist as "Dynamic". It should be
changed from "Dynamic" to "True" (default).
==================================
TIPS, LIMITATIONS AND KNOWN ISSUES
==================================
1. OracleDbType.Single parameter type supports six precisions.
2. Use /*+ ... */ as the optimizer hint syntax. Hint syntax, --+ ... is not
supported.
3. Data truncation errors can be encountered when fetching LONG data from a
UTF8 database. [bug #2573580].
4. To minimize the number of open server cursors, explicitly dispose
OracleCommand, OracleRefCursor, and OracleDataReader objects.
5. When using SQL with "FOR UPDATE" or a "RETURNING" clause, use explicit
transactions. This is not required if global transactions are used.
6. For distributed transactions, ODP.NET does not support proxy
authentication without a client password because of an OraMTS limitation.
7. OS Authenticated connections are not pooled by ODP.NET, even if pooling
is enabled.
8. Thread.Abort() should not be used, as unmanaged resources may remain
unreleased, which can potentially cause memory leaks and hangs.
9. Data truncation errors can be encountered when fetching LONG data from a
UTF8 database.
[bug 2573580].
10. PL/SQL LONG, LONG RAW, RAW, VARCHAR data types cannot be bound with more
than 32512 bytes.
[bug 3772804, 3639234]
11. Having a command execution terminated through either the invocation of
OracleCommand's Cancel method or expiration of OracleCommand's
CommandTimeout property value may return ORA-00936 or ORA-00604, rather
than the expected ORA-01013.
[bug 3715959]
12. An exception is not thrown when change notification is registered on a
bad port number [bug 4129077]
13. OracleDataAdapter accumulates memory when UpdateBatchSize property is
set to a non zero value and OracleDataAdapter is used to transmit the
changes to the Database. Disposing the OracleDataAdapter object after
the update frees the memory. (ODP.NET for .NET Framework 2.0 only)
|