Oracle Data Provider for .NET
Installation Guide
and Release Notes
Release 11.2.0.4.0 Production
February 2013
Copyright (c) Oracle Corporation 2013
This document provides information that supplements the Oracle Data Provider for .NET
(ODP.NET) Production documentation.
INSTALLATION AND SETUP NOTES
- Product Dependencies
ODP.NET requires Oracle Client 11.2.0.4.0 or Oracle Instant Client 11.2.0.4.0.
When installing a new ODP.NET 11.2.0.4.0 instance, Oracle Universal Installer
(OUI) will automatically install Oracle Instant Client 11.2.0.4.0.
- Policy DLLs
Note that the installation of ODP.NET will place ODP.NET policy DLLS into the
GAC so that existing applications can start using the newly installed ODP.NET
version immediately. However, if this is not desired, be sure to remove the
policy DLLs from the GAC.
- Registry Settings
ODP.NET's registry settings are located under HKLM\Software\Oracle\ODP.NET\.
Each version of ODP.NET uses its own set of settings under the version key. When
a new version of ODP.NET is installed, a new version key is created with a set
of default settings. The new key will not inherit any default or non-default
settings from the previous version of ODP.NET. Thus, reconfiguration is
necessary after the installation if default setting are not to be used.
- Home Selector
When the home selector is used to activate a specific Oracle Home, ODP.NET in
that Oracle Home will be reconfigured. However, policy DLLs for the newer
version of ODP.NET will not be removed from the GAC. Therefore, for the
application to use the version of ODP.NET that is installed in the selected
Oracle Home, some policy DLLs may need to be removed from the GAC or need to be
disabled via configuration files.
BUG FIXES IN ODAC 11.2.0.3.0
The ODP.NET binaries in this ODAC 11.2.0.3.0 release are different from those
shipped in the RDBMS 11.2.0.3.0 release. This release includes the following bug
fixes in addition to those fixes in ODP.NET that was shipped with the RDBMS
11.2.0.3.0 release:
- LINQ/ESQL QUERY RETURNS RESULT WITH INCORRECT ROW ORDERING [Bug 10375435]
- ORA-00932 IS ENCOUNTERED WHEN EXECUTING STRING.EQUAL() WITH EMPTY STRING [Bug
10357727]
- CONTEXT.REFRESH() CAUSES INVALIDCASTEXCEPTION WHEN USING GUIDS AS PRIMARY KEY
[Bug 13420516]
- ORA-00932 ENCOUNTERED WHEN USE ENDSWITH FUNCTION ON CLOB/NCLOB COLUMN [Bug
13357509]
- USING CUSTOM MAPPING CAUSES COMPILATION ERRORS [Bug 12597906]
NOTE: The same bug
fixes listed above will be included in the ODP.NET binaries that are shipped
with RDBMS 11.2.0.3.0 PATCH 1.
ENTITY FRAMEWORK RELATED TIPS, LIMITATIONS AND KNOWN ISSUES
- Overloaded stored procedures are not supported. Thus, the Entity Data Model
(EDM) Wizard will only show one of the overloaded stored procedures.
- Stored procedure name with a "." in its name is not supported. Thus,
stored proc with "." will not be visible in the EDM Wizard.
- Interval Day to Second and Interval Year to Month column values cannot be
compared to literals in a WHERE clause of a LINQ to Entities or an Entity SQL
query.
- LINQ to Entities and Entity SQL (ESQL) queries that require the usage of SQL
APPLY in the generated queries will cause SQL syntax error(s) if the Oracle
Database being used does not support APPLY. In such cases, the inner exception
message will indicate that APPLY is not supported by the database.
- ODP.NET does not currently support wildcards that accept character ranges for
the LIKE operator in Entity SQL (i.e. [] and [^]). [Bug 11683837]
- If a stored procedure or function is mapped to a "collection of none" in
Function Import, then the .NET stub method, which returns an int, will always
return 0.
- ODP.NET 11.2.0.3 does not support Code First nor the DbContext APIs.
- Executing LINQ or ESQL query against tables with one or more column names
that are close to or equal to the maximum length of identifiers (30 bytes) may
encounter "ORA-00972: identifier is too long" error, due to the usage of alias
identifier(s) in the generated SQL that exceed the limit.
- An "ORA-00932: inconsistent datatypes: expected - got NCLOB" error will be
encountered when trying to bind a string that is equal to or greater than 2,000
characters in length to an XMLType column or parameter. [Bug 12630958]
- An "ORA-00932 : inconsistent datatypes" error can be encountered if a string of
2,000 or more characters, or a byte array with 4,000 bytes or more in length, is
bound in a WHERE clause of a LINQ/ESQL query. The same error can be encountered
if an entity property that maps to a BLOB, CLOB, NCLOB, LONG, LONG RAW, XMLTYPE
column is used in a WHERE clause of a LINQ/ESQL query.
- The provider manifest token is required to be two most-significant digits
of an Oracle database version number. For example, "11.2" would be the provider
manifest token for the Oracle 11gR2 database. The valid provider manifest token
will be properly generated in the model if ODP.NET 11.2.0.3.0 or higher is used.
- An "Arithmetic operation resulted in an overflow" exception can be
encountered when fetching numeric values that have more precision than what the
.NET type can support. In such cases, the LINQ or ESQL query can "cast" the the
value to a particular .NET or EDM type to limit the precision and avoid the
exception. This approach can be useful if the LINQ/ESQL query has
computed/calculated columns which will store up to 38 precision in Oracle, which
cannot be represented as .NET decimal unless the value is casted.
- Oracle Database treats NULLs and empty strings the same. When executing string
related operations on NULLS or empty strings, the result will be NULL. When
comparing strings with NULLs, use the equals operator (i.e. "x == NULL") in the
LINQ query, which will in turn use the "IS NULL" condition in the generated SQL
that will appropriately detect NULL-ness.
- When using Model First ("Generate Database from Model..." in Visual Studio), an
error will be encountered when generating a SQL if string Entity property which
has Fixed Length set to true, Unicode set to false, and Max Length set to Max or
(None). To work around this problem, use 2,000 for the Max Length.
- If an exception message of "The store provider factory type
'Oracle.DataAccess.Client.OracleClientFactory' does not implement the
IServiceProvider interface." is encountered when executing an Entity Framework
application with ODP.NET, the machine.config requires and entry for ODP.NET
under the section. To resolve this issue by adding an
entry in the machine.config, reinstall ODAC. To avoid other issues, install it
into a new Oracle home.
TIPS, LIMITATIONS AND KNOWN ISSUES
- If SenderId is specified in OracleAQMessage object while enqueuing, the
sender id of dequeued message will have "@ODP.NE" appended in the end. [Bug
7315542]
- An "ORA-00942: table or view does not exist" error may be thrown from Dequeue or
DequeueArray method invocations when OracleAQDequeueOptions.DeliveryMode is
specified as OracleAQMessageDeliveryMode.Buffered and
OracleAQDequeueOptions.Correlation is specified and there are no messages
available in the queue. [Bug 7343633]
- If the Oracle Database version is 10.1 or earlier,
OracleAQMessageAvailableEventArgs.QueueName is not double quoted in regular
(i.e. non-group) notifications. [Bug 8253957]
- Application may not receive group notifications if GroupingInterval property on
the OracleNotificationRequest object is set to 0. [Bug 7373765]
- Against 9.2 database, a message remains in WAITING state if the Delay property
of OracleAQMessage was set to a non-zero value while enqueuing the message. [Bug
8828674]
- OracleConnection object's OpenWithNewPassword() method invocation will result in
an ORA-1017 error with pre-11.2.0.3.0 database versions. [Bug 12876992]
- When installing .NET related products for Windows x64 onto an ORACLE_HOME or
ORACLE_BASE on a mapped drive, a System.IO.FileLoadException exception may be
thrown by OraProvCfg.exe during installation. To work around this issue, install
.NET Framework 2.0 SP2 or later on the system where OUI install is being
executed. [Bug 10225338]