====================================================
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)
 
E-mail this page
Printer View Printer View