=============================================================
Oracle Data Provider for .NET (ODP.NET) 11.1.0.6.0 Production
=============================================================

Copyright (C) Oracle Corporation 2007

This document provides information that supplements the Oracle Data Provider 
for .NET (ODP.NET) documentation. 


========================
NEW FEATURES AND CHANGES
========================

1. Password Case-Sensitivity

The 11.1 Oracle database will support case-sensitive passwords by default.  
Thus, ODP.NET applications that connect to 11.1 Oracle databases with the 
default configuration will be required to provide the password connection 
string attribute in the appropriate case.  ODP.NET has been modified to 
preserve the case of the password as it is given in the connection string.  
The double-quotes to preserve the case are still supported, but are not 
required for the password case as that will be preserved by ODP.NET regardless.

This means that some applications may require changes in their applications or
in the configuration files, so that the password is specified in the proper 
case to enable users to be authenticated by the database appropriately.

2. Configuration File Support

For customers that have numerous applications on a machine that depend on a 
single version of ODP.NET, the registry settings for a given version of 
ODP.NET may not necessarily be applicable for all applications that use that 
version of ODP.NET.  To provide a more granular control, ODP.NET's 
Configuration File Support allows applications to specify ODP.NET 
configuration settings in an application config, web.config, or a 
machine.config file. 

The Windows Registry can still be used to specify configuration settings for a 
particular version of ODP.NET.  The ODP.NET configuration settings in 
machine.config will override the registry settings and be applied at a machine 
wide level.  The ODP.NET configuration settings in the application config or 
the web.config override the machine.config settings (if any) and are applied 
specifically to the application.

If a machine does not require granular control beyond configuration settings
at the ODP.NET version level, there's no need to use configuration files to
specify ODP.NET configuration settings.

The following is an example of a  web.config file for .NET Framework 2.0:



  
    
      
      
      
      
      
      
      
    
  


Note that through the use of the DllPath configuration parameter, each 
application can specify the \bin location the dependent unmanaged 
Oracle Client binaries are loaded from.  However, note that the 
must have the same version of ODP.NET installed as the version used by the 
application.  Otherwise, a version mismatch exception will be thrown.

Note also that when new versions of ODP.NET get installed, the registry 
entries for the newly installed version of ODP.NET are set with default values.
And since the policy DLLs will re-direct all ODP.NET references to this new
version of ODP.NET, applications will end up using the default values after 
the install of a new ODP.NET version.  Having an application config or web.confg
file specific for an application will eliminate this maintenance issue as
the configuration settings in the configuration file will always be applied
to an application regardless of whether patches get installed or not.

ODP.NET Configuration File Support is only available for 11.1.0.6.0 and later.


=====================================
NOTES FOR ODAC 11.1 Beta ON OTN USERS
=====================================

ODAC 11.1 Beta on OTN includes ODP.NET 11.1.0.5.10 Beta.  However, it's 
not the beta of ODP.NET 11.1.0.6.0 Production, for which this readme.txt is for.  
Thus, new features (i.e. UDT Support, Bulk Copy Operations, etc.) that are 
available in ODP.NET 11.1.0.5.10 beta are not available in ODP.NET 11.1.0.6.0
Production.  There will be an ODAC 11.1 Production on OTN with a version of
ODP.NET that include features available in the ODP.NET 11.1.0.5.10 Beta.

After the install of ODP.NET 11.1.0.6.0, policy DLLs will be placed into the 
GAC, which will redirect all applications to use ODP.NET 11.1.0.6.0.  If there 
are applications that use the new features in ODP.NET 11.1.0.5.10 Beta on OTN, 
they will not function properly as those new features are not part of ODP.NET 
11.1.0.6.0 Production.


=======================================
NOTES FOR ODP.NET 10.2.0.2.20 AND LATER
=======================================

1. Policy DLL Version Numbers

Staring with 10.2.0.2.20, the policy DLL versioning scheme has changed.
Before 10.2.0.2.20, the policy DLL version was based solely on the 
corresponding Oracle version number.  Thus, the major digit of the policy DLL 
version started with 9 or 10, depending on the Oracle version number with which 
ODP.NET shipped with.  However, starting with 10.2.0.2.20, the policy DLL 
version numbers first digit starts with 1 (if the policy DLL is built with .NET 
Framework 1.x) and starts with 2 (if the policy DLL is built with .NET 
Framework 2.0).  

The .NET Framework allows multiple version of the same policy DLL to be 
registered in the GAC.  For example, multiple versions of 
Policy.10.2.Oracle.DataAccess.dll can be placed in the GAC.  In such a case, 
the .NET Framework will apply the redirections of the policy DLL with the 
HIGHEST version number.  Hence if you have Policy.10.2.Oracle.DataAccess.dll 
policy DLLs of versions of 10.2.0.1.0, 10.2.0.2.0, and 2.102.2.20 in the GAC, 
the redirections set in the 10.2.0.2.0 policy DLL will be used by the .NET 
Framework, not the redirections set in the 2.102.2.20 version of the policy 
DLL, even if the 2.102.2.20 policy DLL is more recent than the 10.2.0.2.0 
policy DLL.

To assure that the redirections of the latest policy DLL are used, remove the 
older policy DLLS from the GAC and keep only the latest policy DLL in the GAC.

2. 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\
where  is the assembly version of Oracle.DataAccess.dll.

3. 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)  DllPath setting specified by application config or web.config, 
machine.config, or HKEY_LOCAL_MACHINE\Software\Oracle\ODP.NET\\DllPath 
registry setting.  Note that setting in application config or web.config 
overrides machine.config and machine.config overrides the setting in the 
registry.
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.

4. 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.


==================================
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.

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, explicitly 
   begin local 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. Thread.Abort() should not be used, as unmanaged resources may remain
   unreleased, which can potentially cause memory leaks and hangs.

8. 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]

9. An exception is not thrown when change notification is registered on an 
   invalid port number [bug 4129077]

10. The DllPath registry or configuration file setting will be used by ODP.NET
    to load the dependent unmanaged binaries on Windows XP SP1, Windows Vista,
    Windows Server 2003, and higher.

11. ODP.NET supports binding parameters of PL/SQL associative arrays which 
    contain the following data types:

    BINARY_DOUBLE
    BINARY_FLOAT
    CHAR
    DATE
    NCHAR
    NUMBER
    NVARCHAR2
    RAW
    ROWID
    UROWID
    VARCHAR2

    Using unsupported types within associative arrays will cause an ORA-600 
    error.

    Refer to Enhancement Request 2865701 on Oracle Metalink for more 
    information about non-scalar data type support for PL/SQL associatitve 
    arrays.

========================================================
JAPANESE ODP.NET DOCUMENTATION CORRECTIONS AND ADDENDUMS
========================================================

1. The default value of the QueryBasedNotification property of the 
   OracleCacheDepenedency object is true.

2. Beginning with Oracle Database 11g and ODP.NET 11g (11.1), Database Change
Notification queries can be query-based (default) or object-based. The 
query-based registrations allow ODP.NET to notify applications when the 
selected rows have changed in the database. The object-based registrations 
allow ODP.NET to notify applications for any changes that occur in the 
table(s) containing the selected rows.  

For more details on the requirements for using query-based change 
notification, please read the chapter "Using Continuous Query Notification" 
in Oracle Database Advanced Application Developer’s Guide.

E-mail this page
Printer View Printer View
Oracle Is The Information Company About Oracle | Oracle RSS Feeds | Careers | Contact Us | Site Maps | Legal Notices | Terms of Use | Privacy