Oracle Data Provider for .NET
Release Notes
Release 12.1.0.2.0 for ODAC 12c Release 4 Production
September 2015
Copyright (c) Oracle Corporation 2015
This document provides information that supplements the Oracle Data Provider for .NET
(ODP.NET) documentation.
TABLE OF CONTENTS
Documentation Corrections and Additions
This section contains information that corrects or adds to existing ODP.NET documentation.
-
ODP.NET Entity Framework Database First and Model First applications using Entity Framework 6
requires .NET Framework 4.5 or higher.
-
All Oracle database clients support interrupting database query execution,
such as through an ODP.NET command timeout.
The database server can be interrupted via either TCP/IP urgent
data or normal TCP/IP data, called out of band (OOB) or in band data,
respectively. Windows-based database servers only support in band
breaks, whereas all other (predominantly UNIX-based) database servers
can support OOB or in band breaks. ODP.NET, Managed Driver uses OOB breaks by
default with database servers that support it. For certain network
topologies, the routers or firewalls involved in the route to the
database may have been configured to drop urgent data or in band the data. If
the routers or firewalls can not be changed to handle urgent data
appropriately, then the ODP.NET, Managed Driver can be configured to utilize
in band breaks by setting the .NET configuration parameter disable_oob to
"on". The default value for disable_oob is "off". disable_oob can be set in the
<settings> of the .NET config file for <oracle.manageddataaccess.client>.
As with all ODP.NET, Managed Driver settings, disable_oob can be set in either the
.NET config or sqlnet.ora files, whereas it can only be set for ODP.NET, Unmanaged
Driver in the sqlnet.ora file.
ODP.NET, Managed Driver Tips, Limitations, and Known Issues
This section contains information that is specific to ODP.NET, Managed Driver.
- OracleConnection object's OpenWithNewPassword() method invocation will result in
an ORA-1017 error with 11.2.0.3.0 and earlier versions of the database. [Bug 12876992]
- Stored functions/procedures in a PDB cannot be added to a .NET Entity Framework model. [Bug 17344899]
ODP.NET, Unmanaged Driver Tips, Limitations, and Known Issues
This section contains information that is specific to ODP.NET, Unmanaged Driver.
- 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]
- Applications may not receive group notifications if GroupingInterval property on
the OracleNotificationRequest object is set to 0. [Bug 7373765]
- OracleConnection object's OpenWithNewPassword() method invocation will result in
an ORA-1017 error with pre-11.2.0.3.0 database versions. [Bug 12876992]
Entity Framework Tips, Limitations, and Known Issues
This section contains Entity Framework related information that pertains to both ODP.NET, Managed Driver and ODP.NET, Unmanaged Driver.
- 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]
- 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.
- 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
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.
- If an exception message of "The store provider factory type
'Oracle.ManagedDataAccess.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 <DbProviderFactories> section. To resolve this issue by adding an
entry in the machine.config, reinstall ODAC.
- Creating a second instance of the context that derives from DbContext within
an application and executing methods within the scope of that context that
result in an interaction with the database may result in unexpected recreation
of the database objects if the DropCreateDatabaseAlways database initializer is
used.
More Information:
https://entityframework.codeplex.com/workitem/2362
Known Workarounds:
- Use a
different database initializer,
- Use an operating system authenticated user for
the connection, or
- Include "Persist Security Info=true" in the connection
string (Warning: Turning on "Persist Security Info" will cause the password to
remain as part of the connection string).
- Deinstallation of ODP.NET versions that are prior to ODAC 12c Release 3
production can cause entries with .NET 2.x assembly references to be entered in
the .NET 4.0 machine.config. This can cause side-by-side execution errors unless
config section entry for "oracle.unmanageddataaccess.client" that references 2.x
version of Oracle.DataAccess.Client is manually removed from the .NET 4.0
machine.config. It is also advised that a DbProviderFactories entry that
references 2.x version of Oracle.DataAccess.Client be removed manually as well.