---------------------------------------------------
Oracle Data Provider for .NET 10.1.0.4.0 Production
---------------------------------------------------
Copyright (C) Oracle Corporation 2005

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


IMPORTANT INSTALLATION INFORMATION
==================================
It's highly recommended that ODP.NET 10.1.0.4.0 be installed in a new 
Oracle Home. Installing it on top of an existing Oracle home may
break existing Oracle applications. Also, if an older version of ODP.NET 
already exists in an Oracle Home, it will need to be removed before
ODP.NET 10.1.0.4.0 is installed in that Oracle Home.

The installer will install ODP.NET 10.1.0.4.0 and Oracle Client 10.1.0.2.0. 
ODP.NET 10.1.0.4.0 requires Oracle Client 10.1.0.2.0 or higher.

The installer will register the following two policy DLLs in the Global Assembly 
Cache (GAC) that redirect 9.2 and 10.1 ODP.NET applications to use ODP.NET 
10.1.0.4.0:

Policy.9.2.Oracle.DataAccess.dll
Policy.10.1.Oracle.DataAccess.dll

To undo the redirection set in place, both policy DLLs can be de-installed 
through the gacutil.exe (use the /u option).  The other approach is to 
navigate to the GAC directory (i.e. C:\WINNT\assembly) through the Windows 
Explorer and delete the two policy folders (i.e. the 
Policy.10.1.Oracle.DataAccess folder with version # of 10.1.0.40 and
Policy.9.2.Oracle.DataAccess folder with version # of 10.1.0.40).


Visual Studio .NET (VS.NET) Help Integration
============================================
The concepts and reference sections of ODP.NET documentation has been 
integrated with VS.NET integrated development environment (IDE) help system. 
This integration will allow developers to search and view information regarding 
ODP.NET classes and structures from within the VS.NET IDE.


Bugs Fixed in 10.1.0.4.0 version
================================
4066828: Unmanaged exceptions return -3000 error without further information
4028378: Need attributes/methods on OracleParameter/OracleCommand classes
4020081: ODP.NET -3000 errors under high load
3937454: Calling cancel before command execution causes an error
3930596: Output bind variable initialized with blanks using ParameterDirection.OUTPUT
3897454: Aborting selecting thread fails with internal error -3000


What's new in 10.1.0.3.01 version
=================================
1. Statement Caching
   ODP.NET statement caching allows a specified number of server-side cursors 
   to remain open, thereby allowing the database to execute same statements 
   without re-parsing them.  Significant performance gains can be observed by 
   enabling statement caching for applications that re-execute the same 
   collection of statements repeatedly.

2. OracleCommandBuilder.DeriveParameters() Static Method
   This static method on the OracleCommandBuilder class populates the 
   OracleParameterCollection for the stored procedure or function that is 
   specified by the given OracleCommand object.  Since the DeriveParameters 
   method incurs a server round-trip, it is recommended that this method be 
   used only at design-time.

3. .NET 1.1 Enhancements
   ODP.NET supports the Cancel method and CommandTimeout property on the 
   OracleCommand object to allow applications to terminate long running queries.  
   Also, HasRows property on the OracleDataReader object is exposed to allow 
   applications to check if the OracleDataReader object represents an empty 
   result set or not.  Lastly, the EnlistDistributedTransaction method on the 
   OracleConnection object allows applications to explicitly enlist in 
   distributed transactions any time after a connection has been opened.

4. LOB Retrieval Enhancement
   Entire LOB column data can be retrieved even if the select list does not 
   contain a primary key, ROWID, or unique key. This enhancement is available 
   by setting the InitialLOBFetchSize property value to –1.

   The following OracleDataReader accessors are supported to retreive CLOB 
   column data when InitialLOBFetchSize is set to -1:

   GetChars
   GetString
   GetValue
   GetValues
   GetOracleString

   The following OracleDataReader accessors are supported to retreive BLOB 
   column data when InitialLOBFetchSize is set to -1:

   GetBytes
   GetValue
   GetValues
   GetOracleBinary

5. LONG Retrieval Enhancement

   Entire LONG column data can be retrieved even if the select list does not 
   contain a primary key, ROWID, or unique key. This enhancement is available 
   by setting the InitialLONGFetchSize property value to –1.

   The following accessors are supported to retreive CLOB column data 
   when InitialLOBFetchSize is set to -1:

   GetOracleString,
   GetString,
   GetChars,
   GetBytes,
   GetOracleBinary
   GetOracleValue 
   GetOracleValues


Bugs Fixed in 10.1.0.3.01 version
=================================
3912525: INSERT ARRAY OF DBNULL.VALUE CAUSES AN EXCEPTION 
3908190: CONNECTION REQUEST RETURNS ORA-1034 AFTER RESTARTING THE DATABASE
3906299: ARRAYBIND WITH DBNULL.VALUE & ORACLETIMESTAMP CAUSES INTERNAL ERROR
3863034: DERIVEPARAMETERS RETURNS INVALIDOPERATIONEXCEPTION FOR SYS.XMLTYPE
3838832: DERIVEPARAMETERS THROWS ORACLEEXCEPTION AGAINST 8.1.7.4.1 DB
3833810: INTERNAL ERROR WHEN REQUESTING GLOBALIZATION OBJ AFTER CON IS FREED
3829607: OS AUTH DISABLED IF USERID OF "/" BEGINS/ENDS WITH SPACES IN QUOTES
3816643: MEM LEAK WHEN USING SAME CON TO OPEN MANY TIMES WITH POOLING OFF
3773442: EXECUTION FAILS AFTER DERIVEPARAMETERS FOR LONG AND LONG RAW PARAMS
3757186: ORACLECOMMANDBUILDER.DERIVEPARAMETERS PERFORMANCE DEGRADATION
3698431: INTERNAL ERROR WHEN USING ODP.NET WITH REF CURSORS AND SYS.XMLTYPE
3450763: CREATING ORACLEXMLTYPE OBJECT FAILS AFTER A SCHEMA BASED OPERATION
3365691: ARGUMENTNULLEXCEPTION WHEN USING A SELECT STATMENT WITH WITH CLAUSE
2925742: CALLING ORACLEDATAADAPTER.UPDATE FOR A SYNONYM FAILS


What's new in 10.1.0.2.0 version
================================
1. Support for Oracle Grids
   ODP.NET is grid-enabled, allowing developers to take advantage of Oracle 
   database grid support without having to make changes to their application
   code.

2. Support for schema-based XMLType in the database
   ODP.NET supports the native schema-based XMLType.

3. Support for BINARY_FLOAT and BINARY_DOUBLE datatypes in the database
   ODP.NET supports the new database native types BINARY_FLOAT and 
   BINARY_DOUBLE.

4. Support for Multiple Homes
   ODP.NET can be installed in Multiple Oracle Homes. In order to make multiple 
   homes available, some of the ODP.NET files include a version number, and the 
   use of a HOMEID is required.


What's new in 9.2.0.4.01 version
================================
1. XML support in ODP.NET. With XML support, ODP.NET can now:
   - Store XML data natively in the database server as the Oracle database 
     native type, XMLType. Only non-schema based XMLType will be supported in 
     this release.
   - Access relational and object-relational data as XML data from an Oracle
     Database instance into Microsoft .NET environment, process the XML using 
     Microsoft .NET framework.
   - Save changes to the database server using XML data.

2. Support for PL/SQL Associative Array Binding.
   ODP.NET supports PL/SQL Associative Array (formerly known as PL/SQL Index-By 
   Tables) binding. An application can bind an OracleParameter, as a PL/SQL 
   Associative Array, to a PL/SQL stored procedure using several 
   OracleParameter properties.

3. Support for validation of pooled connections
   ODP.NET has introduced a new connection string attribute 
   "validate connection" that should be set to true in order to validate 
   connections coming out of the pool. By default, this property is set 
   to false.

   Note that validation causes a round trip to the database for each connection 
   coming out of the pool, which is very expensive in terms of performance. 
   Therefore, this attribute should be used only if absolutely necessary.

4. Support for LOB retrieval using an InitialLOBFetchSize property that 
   provides better performance.


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.  To fetch a LONG or LONG RAW data that is longer than the 
    InitialLONGFetchSize, a ROWID or a primary key must be part of the select
    list.

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 using global transactions.

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.  To enable statement caching for all ODP.NET application running in a 
    system by default without changing the application, the registry key of 
    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME\ODP.NET\StatementCacheSize
    can be set to a value greater than 0 (where  is the appropriate 
    Oracle Home ID). This value specifies the number of cursors that are
    to be cached on the server-side.  Note that this registry value
    becomes the default value for all ODP.NET applications.  To override
    this value, the application can explicitly specify the Statement Cache
    Size in the connection string.  By default this registry entry does
    not exist and hence the default value is 0.

9.  Thread.Abort() should not be used as unmanaged resources may remain
    unreleased properly, which can potentially cause memory leaks and hangs.

10. Data truncation errors can be encountered when fetching LONG data from a 
    UTF8 database. 
    [bug 2573580].

11. PL/SQL LONG, LONG RAW, RAW, VARCHAR data types cannot be bound with more 
    than 32512 bytes.
    [bug 3772804, 3639234]

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

13. Terminating the execution of a PL/SQL stored procedure or function may not 
    acknowledge the invocation of OracleCommand's Cancel method or expiration 
    of OracleCommand's CommandTimeout property value in a timely manner.
    For better responsiveness, the sqlnet.ora parameter can be modified to have
    BREAK_POLL_SKIP=3.  However, this change can degrade the overall performance
    of normal SQL and PL/SQL execution by up to about 5%.
    [bug 3715843]

14. Invoking the static OracleCommandBuilder.DeriveParameter() method on a 
    public/private synonym of a public synonym of a stored procedure or 
    function is not supported.
    [bug 3617939]

13. Statement Caching is not currently supported in an environment where 
    failover is enabled.
    [bug 3395423]
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