I was required to install ODP.net 10.2 on my PC. Currently my PC has Oracle client 9.2 installed and we do not wish to install Oracle Client 10.2. I wanted to study release notes of ODP 10.2 before installing it. Is earched net for the same but unfortunately I cound not found anything. I had to prepare a document stating weather of not we require to install Oracle Client 10.2 on my machine if I want to use ODP.net 10.2. And of course I have to provide proof for the same. The proof may be any statement given by the oracle on the same subject.
When I do not find any article regarding the same, I asked my systems people to give me a test machine. I installed ODP.net 10.2 on the same machine. There in the docs, I found release notes. I am posting these release notes below :
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 distributedtransactions. This means that when System.Transactions is used, the transactionbecomes 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 valuesas 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\where 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/executableii) directory specified by HKEY_LOCAL_MACHINE\Software\Oracle\ODP.NET\\DllPathiii) 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 properunmanaged 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.
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 sizeof 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, seehttp://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)
And for the reference purpose, Below are the release notes for ODP.net 9.2.
Oracle Data Provider for .NET 126.96.36.199.00
Copyright (C) Oracle Corporation 2005
This document provides information that supplements the Oracle Data Provider for .NET (ODP.NET) documentation.
IMPORTANT INSTALLATION INFORMATION
ODP.NET 188.8.131.52.00 depends on Oracle Client 184.108.40.206.0 that is installed on top of Oracle Client 220.127.116.11.0 or higher.
VS.NET Help Integration
The reference sections of ODP.NET documentation has been integrated with VS.NET 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.
BUG FIXES (in 18.104.22.168.00)
1. Unmanaged exceptions return -3000 without further information. [Bug #4066828]
2. ODP.NET -3000 errors under heavy load. [Bug #4020081]
3. Bind variable (OUTPUT) initialized with blanks using ParameterDirection.Output. [Bug #3930596]
4. Exception ORA-1034 (ORACLE NOT AVAILABLE) after starting the database. [Bug #3908190]
5. ODP internal error -3000 in ExecuteReader() method. [Bug #3893458]
6. Internal error (-3000) when requesting globalization information after Connection is freed. [Bug #3833810]
What’s new in 22.214.171.124.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 expansive 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.
BUG FIXES (in 126.96.36.199.01)
1. OracleDataAdapter().Fill leaks memory if table has more than 2 Lobs. [Bug #3185445]
2. Access violation fetching XMLTYPE column from table with more than 4K rows. [Bug #3184448]
3. Anonymous PL/SQL with declare of REF OCURSOR populates dataset with data lost. [Bug #3146174]
4. Connection is in closed state after ORA-28002 error (password will expire). [Bug #3121732]
5. Connection.Close gives System.NullReferenceRxception. [Bug #3118886]
6. ArgumentNullException in concurrent use of enlisted and non-enlisted pool. [Bug #3113518]
7. Wrong behavior of OracleTimeStampTZ. [Bug #3100312]
8. Internal error -3000 in ExecuteReader() with failover. [Bug #3076344]
10. Transaction Option attribute is changed by execution sequence of COM component. [Bug #3071381]
11. Intermittent hang in OracleXmlType.Extract() or dispose(). [Bug #2954052]
12. Case stmt caused internal error -3000. [Bug #2927159]
13. Anonymous PL/SQL with DECLARE block retrieves only first REF Cursor. [Bug #2816634]
14. ExecuteScalar on “Select sys_xmlgen(222).GetClobVal() from dual” fails. [Bug #2716184]
BUG FIXES (in 188.8.131.52.0 Beta)
1. Memory leak in OracleConnection using OS authentication. [Bug #2975476]
2. OracleException thrown when updating a dataset with an empty NCLOB. [Bug #2927175]
3. Wrong string data gets inserted if BindByName property is set to true. [Bug #2914130]
4. OracleCommandBuilder: Schema name is missing in auto-generated stmts. [Bug #2902235]
5. Proxy authentication fails to work with connection pooling on. [Bug #2891389]
6. ODP.NET types are not properly classified to be CLS-Compliant. [Bug #2865440]
7. “Unable to enlist” error with concurrent use of enlisted and non-enlisted connection pools. [Bug #2792960]
8. OracleClob::IsTemporary returns false for temporary CLOB from stored proc. [Bug #2767977]
9. Columns that make up the composite key are treated as separate primary keys in data table. [Bug #2763772]
10. OracleCommandBuilder throws InvalidOperationException when primary key is in select list in some cases. [Bug #2728256]
11. Arraybind errors are not populated in OracleException.Errors property. [Bug #2715140]
12. Arraybind: ‘specified cast is not valid’ error on OracleDecimal object being used in an object array. [Bug #2701038]
13. Arraybind: ‘invalid operation on null data’ error with OracleDecimal.Null. [Bug #2700999]
BUG FIXES (in 184.108.40.206.102)
1. “Connection request timed out” error with OracleConnection.Open(). [Bug #2807685]
2. “Internal error (-3000)” error with OracleCommand.ExecuteReader(). [Bug #2744518]
3. Intermittent failure for SELECT query with OracleCommand.ExecuteReader(). [Bug #2695262]
4. Hangs are randomly experienced when unmanaged resources are disposed. [Bug #2706191]
5. Server Cursor leak in some scenarios when pooling is on. [Bug #2705885]
6. Pooled connection request times out randomly. [Bug #2705826]
7. Improper connection string restoration after an invalid connection string is set. [Bug #2706187]
8. “Internal error (-3002)” error returned for error-causing stored procedure execution. [Bug #2705801]
9. Performance optimization for retrieval and binding of Decimal data type. [Bug #2738044]
10. InvalidCastException when updating a dataset from an XML web service. [Bug #2723673]
11. Adapter’s fill() for LONG & VARCHAR2 (PRIMARY KEY) column causes ORA-01480 error. [Bug #2722597]
12. Setting a connection string with an invalid persist security info value. [Bug #2697619]
13. System.NullReferencEexception while setting DbType to invalid values. [Bug #2707682]
14. Memory leak when OracleCommand.ExecuteReader() fails. [Bug #2695441]
15. Memory leak by OracleDataReader during application termination. [Bug #2708200]
16. OracleDbType and DbType are not inferred properly from OracleParameter.value. [Bug #2716181]
TIPS, LIMITATIONS AND KNOWN ISSUES
1. LOB parameters to Stored Procedures can only be OUT against Oracle8 (8.0.x) databases.
2. OracleDbType.Single parameter type supports six precisions.
3. Use /*+ … */ as the optimizer hint syntax. Hint syntax, –+ … is not supported.
4. 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.
5. Size of the data inserted in a Varchar2 column using OracleDbType.Varchar2 parameter type is limited to 2000 characters. [bug #1868843, bug #2420617]
6. LONG or LONG RAW data retrieval from a REF CURSOR will generate an exception if the InitialLONGFetchSize property of the OracleCommand is less than the actual size of the LONG or LONG RAW data. [bug #2675712]
7. To receive failover events appropriately, “enlist” connection string attribute must be set to “false”. [bug #2686200]
8. Data truncation errors can be encountered when fetching LONG data from a UTF8 database. [bug #2573580].
9. To minimize the number of open server cursors, explicitly dispose OracleCommand, OracleRefCursor, and OracleDataReader objects. 10. When using SQL with “FOR UPDATE” or a “RETURNING” clause, use explicit transactions. This is not required, if using global transactions.
11. For distributed transactions, ODP.NET does not support proxy authentication without a client password because of an OraMTS limitation.