----------------------------------------------------
Oracle Data Provider for .NET 10.1.0.3.01 Production
----------------------------------------------------
Copyright (C) Oracle Corporation 2004
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.3.01 be installed to a new
Oracle Home. Installing it on top of an existing Oracle home may
break existing Oracle applications. The installer will install
ODP.NET 10.1.0.3.01 and Oracle Client 10.1.0.2.0. ODP.NET 10.1.0.3.01
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.3.01:
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.301 and
Policy.9.2.Oracle.DataAccess folder with version # of 10.1.0.301).
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.
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 init.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] |