This preface contains:
Changes in Oracle Data Provider for .NET in ODAC 12c Release 2
Changes in Oracle Data Provider for .NET in ODAC 12c Release 1
Changes in Oracle Data Provider for .NET Release 11.2.0.3.20
Changes in Oracle Data Provider for .NET Release 11.1.0.7.20
Changes in Oracle Data Provider for .NET Release 11.1.0.6.20
The following are the changes in Oracle Data Provider for .NET for Release 12.1.0.2.
The following features are new in this release:
.NET Framework 4.5.2 Certification
ODP.NET managed and unmanaged drivers are certified for .NET Framework 4.5.2.
See also "System Requirements" for more information.
Character Data Types Extended to 32 KB
ODP.NET, Managed Driver supports the VARCHAR2
, NVARCHAR2
, and RAW
data types up to 32 KB in size. No code changes are required to use the larger data types.
By being able to store more data, developers can use these data types more frequently, providing programming flexibility. In addition, SQL Server to Oracle Database application migration is easier with these new data type sizes.
Return Number of Rows Affected from Each Input in Array Binding Operations
When using array binding to execute multiple DML statements, ODP.NET, Managed Driver provides an array that lists the number of rows affected for each input value from the bound array, rather than just the total number of rows affected. This information provides more detailed feedback for the application developer. To retrieve the row count, ODP.NET can call the OracleCommand.ArrayBindRowsAffected
property.
With more detailed feedback on the array bound DML execution, the developer can better evaluate the query's efficiency and whether the data changes were correctly applied.
See Also "ArrayBindRowsAffected" for more information.
The following are the changes in Oracle Data Provider for .NET for ODAC 12c Release 2.
The following features are new in this release:
.NET Framework 4.5.1 Certification
Oracle Data Provider for .NET is now certified for .NET Framework 4.5.1.
See also "System Requirements" for more information.
Improvements to ODP.NET, Managed Driver Versioning
This feature allows unique identification of ODP.NET, Managed Driver assemblies which have the same assembly version number.
See also "Oracle Data Provider for .NET Versioning Scheme" for more information.
The following are the changes in Oracle Data Provider for .NET for ODAC 12c Release 1.
The following feature is new in this release:
LDAP Connections to Active Directory and Oracle Internet Directory
ODP.NET, Managed Driver supports TNS alias resolution through a LDAP server/service, specifically Microsoft Active Directory and Oracle Internet Directory.
This feature allows ODP.NET, Managed Driver to connect to a database using a directory server/service.
See also "Lightweight Directory Access Protocol".
The following are the changes in Oracle Data Provider for .NET for Release 12.1.
The following features are new in this release:
ODP.NET, Managed Driver
ODP.NET now includes a fully managed provider version, which is 100% native .NET code. ODP.NET, Managed Driver includes nearly all the features of ODP.NET, Unmanaged Driver and uses the same application programming interface. This makes migrating existing ODP.NET applications to ODP.NET, Managed Driver easier.
With ODP.NET, Managed Driver, it is easier and faster to deploy ODP.NET. There are fewer assemblies, as few as one to deploy, which also makes patching straightforward, and the install size is smaller at less than 10 MB. Only one ODP.NET, Managed Driver assembly is necessary whether you are using 32-bit or 64-bit .NET Framework. Side-by-side deployment with other ODP.NET versions is simple since there are no unmanaged assemblies to account for. As a fully managed provider, ODP.NET can better integrate with Code Access Security and ClickOnce deployment.
See also "Installing Oracle Data Provider for .NET, Managed Driver" .
Support for Pluggable Database
Pluggable Databases (PDBs) enable an Oracle database to contain a portable collection of schemas, schema objects, and nonschema objects that appears to ODP.NET as a separate database. ODP.NET can seamlessly use PDBs.
PDBs allow fast database provisioning, fast database redeployment by unplugging and plugging in existing databases, and quick patching or upgrading many databases at the cost of doing it once or by unplugging a PDB and plugging it into a different container database. A machine can run more database instances in the form of PDBs than as individual, monolithic databases. It is also easier to separate application administrator duties from the Oracle system administrator duties.
See Also:
Support for Auto Increment Identity Column
Oracle Database 12c Release 1 (12.1) introduces an auto increment identity column. ODP.NET, Unmanaged Driver 12.1 and higher releases support interacting with this column data. Identity columns are generally used to uniquely identify rows in a table when there is no other natural primary key constraint.
An identity column simplifies .NET development for applications with no natural primary key and eases application migration from databases that have an identity column.
Support for Character Data Types Extended to 32 KB
Starting with Oracle Database 12c Release 1 (12.1), ODP.NET, Unmanaged Driver now supports the VARCHAR2
, NVARCHAR2
, and RAW
data types up to 32 KB in size. No code changes are required to use the larger data types.
By being able to store more data, developers can use these data types more frequently, providing programming flexibility. In addition, SQL Server to Oracle Database application migration is easier with these new data type sizes.
Boolean Data Type
Oracle Database 12c Release 1 (12.1) introduces a new PL/SQL Boolean data type, which ODP.NET, Unmanaged Driver can store as an OracleBoolean
data type. Booleans store TRUE
or FALSE
values.
The ODP.NET OracleBoolean
data type eases parameter binding and data type mapping setup with Boolean values.
See Also:
Enhanced Implicit REF Cursor Binding
In Oracle Database 12c Release 1 (12.1), ODP.NET 12c can retrieve the results of a SELECT statement run in PL/SQL without an explicit target nor REF CURSOR data type. ODP.NET retrieves result sets from stored procedures implicitly without declaring a return type. It is no longer necessary to declare REF CURSOR metadata in a .NET configuration file, except when using Entity Framework, REF Cursors that can be updated, or constraint metadata is required to be passed to the client side.
This capability simplifies using implicit Oracle result sets. In addition, it eases migration to the Oracle database from other vendor databases that use a similar feature.
Return Number of Rows Affected from Each Input in Array Binding Operations
When using array binding to execute multiple DML statements, Oracle Data Provider for .NET, Unmanaged Driver, now provides an array that lists the number of rows affected for each input value from the bound array, rather than just the total number of rows affected. This information provides more detailed feedback for the application developer. To retrieve the row count, ODP.NET can call the OracleCommand.ArrayBindRowsAffected
property.
With more detailed feedback on the array bound DML execution, the developer can better evaluate the query's efficiency and whether the data changes were correctly applied.
See Also:
Support for APPLY
Keyword
Language Integrated Query (LINQ) is a .NET querying language. At runtime, LINQ is translated into native database SQL before it can query the database. In some circumstances, LINQ uses the non-standard APPLY keyword in its SQL translation for retrieving lateral views. Oracle Database and ODP.NET support the APPLY keyword in Oracle Database 12c Release 1 (12.1) to more fully support LINQ.
This feature allows the occasional LINQ query that uses SQL APPLY to work seamlessly with ODP.NET and Oracle Database for lateral views.
Transaction Guard Support
Transaction Guard in Oracle Database 12c Release 1 (12.1) preserves transaction commit outcomes for ODP.NET, Unmanaged Driver, 12c applications during planned and unplanned outages, preventing applications from repeatedly submitting the same transaction. Applications use a new logical transaction identifier to determine the last open transaction's outcome in a database session following an outage. With the known outcome, the application can confidently determine whether to resubmit the transaction or not. Without Transaction Guard, applications that retry operations following outages by committing duplicate transactions can cause logical corruptions.
Transaction Guard preserves the commit outcome for every transaction and makes it available to ODP.NET applications. It allows ODP.NET developers to maintain at-most-once transaction execution.
Recoverable Error Detection and Recovery
After an Oracle Database 12c Release 1 (12.1) failure, ODP.NET, Unmanaged Driver, 12c can determine if a failed transaction is recoverable or not. ODP.NET returns the OracleException IsRecoverable
property indicating whether the transaction is recoverable. If true, the application can retry the transaction.
This feature makes determining whether failed transactions are recoverable easier, allowing applications to proceed quickly to the next step in the recovery process.
Support for Faster and Planned Database Outage
In Oracle Database 12c Release 1 (12.1), a database being brought offline automatically alerts ODP.NET applications of the impending downtime. ODP.NET will then stop allocating new connections and close connections returned to the pool from that particular instance.
This feature enables databases to be brought offline more quickly and minimizes potential end user disruptions by disallowing new ODP.NET connections to databases being brought offline.
Support for Oracle Notification Service
Oracle Notification Service (ONS) is a publish and subscribe service for communicating Fast Application Notification (FAN) events. ODP.NET receives fast connection failover and load balancing messages from the database server through ONS. Previously, ODP.NET used Oracle Advanced Queuing (AQ) as its FAN publish and subscribe service.
Because ONS is a memory-based service, it delivers messages faster than AQ. Using ONS, Oracle consolidates the publish and subscribe service that all Oracle data access drivers use.
See Also:
Support for Global Data Services
Global Data Services (GDS) is a capability of Oracle Database 12c that extends the concept of services, which previously only was available in Oracle RAC, to a globally distributed configuration that can include a combination of Oracle RAC, Oracle Data Guard, and Oracle GoldenGate. This allows services to be deployed anywhere within this globally distributed configuration, supporting load balancing, high availability, database affinity, and so on with ODP.NET.
ODP.NET applications can now more efficiently use database resources on a global basis to improve performance and availability. Applications that utilize the Oracle RAC concept of services can now extend the same benefits of automatic workload management to their Oracle Data Guard and Oracle GoldenGate configurations. Similarly, Oracle Data Guard and Oracle GoldenGate customers can now fully utilize the benefits of services and automatic workload management for their replicated configurations.
Transaction and Connection Association
Connections associate with System.Transactions
transactions when they enlist either implicitly through enlist=true
connection string attribute, or explicitly through OracleConnection.EnlistTransaction()
method. A connection in ODP.NET now, by default, detaches from a transaction only when the connection object is closed or when the transaction object is disposed.
In earlier ODP.NET releases, the connection would get detached from a transaction under the conditions mentioned earlier and when the transaction was complete (committed, aborted, or timed out). When the transaction timeout elapses before the transaction completes, the connection unbinds itself from the transaction and all subsequent operations on this connection execute in AutoCommit
mode. Any operations prior to the timeout roll back, but operations performed after the timeout commit. The new transaction unbinding default behavior also alerts users with an exception if transactions time out and subsequent operations execute on this connection before the transaction is disposed. This new behavior provides a consistent transactional experience for the end user, even when a timeout occurs.
See also "LegacyTransactionBindingBehavior
" for more information.
Greater Granular Connection Pool Monitoring
Performance counters can now monitor at the application domain, pool, or database instance level.
It is now easier to distinguish which application domains, pools, and instances are healthy and which ones are having problems.
See Also:
"Connection Pool Performance Counters"The following are changes in Oracle Data Provider for .NET for Release 11.2.0.3.20.
The following feature is new in this release:
.NET Framework 4.5 and Entity Framework 5 Support
Oracle Data Provider for .NET supports .NET Framework 4.5 and Entity Framework 5.
See also "System Requirements" for more information.
The following are changes in Oracle Data Provider for .NET for Release 11.2.0.3.
The following features are new in this release:
ADO.NET Entity Framework and LINQ to Entities Support
ODP.NET now includes support for the ADO.NET Entity Framework and LINQ to Entities. Entity Framework is a framework for providing object-relational mapping service on data models. Entity Framework addresses the impedance mismatch between the relational database format and the client's preferred object format. Language Integrated Query (LINQ) defines a set of operators that can be used to query, project, and filter data in arrays, enumerable classes, XML, relational databases, and other data sources. One form of LINQ, LINQ to Entities, allows querying of Entity Framework data sources. ODP.NET supports Entity Framework such that the Oracle database can participate in object-relational modeling and LINQ to Entities queries.
Entity Framework and LINQ provides productivity benefits for the .NET developer. It abstracts the database's data model from the application's data model. Working with object-relational data becomes easier with Entity Framework's tools. Oracle's integration with Entity Framework and LINQ enables Oracle .NET developers to take advantage of all these productivity benefits.
See Chapter 4, "ADO.NET Entity Framework and LINQ to Entities" for more information on ODP.NET support for the ADO.NET Entity Framework and LINQ to Entities.
Windows Communication Foundation (WCF) Data Services enable developers to create services that use the Open Data Protocol (OData) to expose and consume data over the internet by using the semantics of representational state transfer (REST). OData exposes data as resources that are addressable by URIs. OData uses Entity Data Model conventions to expose resources as sets of entities that are related by associations. ODP.NET supports Entity Framework, and can expose its data through OData and WCF Data Services.
WCF Data Services and OData facilitate creating flexible data services from any data source and naturally integrating them with the Web. All data sources, including Oracle databases, can be used by the same data sharing standard making data exchange more interoperable.
Implicit REF CURSOR Parameter Binding
ODP.NET can bind REF CURSOR parameters for stored procedures without binding them explicitly. To do so, the application must provide the REF CURSOR metadata as part of the .NET configuration file. This feature allows Entity Framework Function Import to call Oracle stored procedures and return REF CURSOR result sets. ODP.NET can also update the database's data with a DataSet or DataTable obtained through a REF CURSOR.
In Entity Framework, result set parameters are generally not declared. By supporting the implicit REF CURSOR parameter, ODP.NET more closely integrates with typical Entity Framework usage scenarios.
See "Implicit REF CURSOR Binding" for detailed information on implicit REF CURSOR parameter binding.
The following are changes in Oracle Data Provider for .NET for Release 11.2.0.2.
The following features are new in this release:
64-bit ODP.NET XCopy for Windows x64
Now available for Windows x64 systems, ODP.NET XCopy provides system administrators with a smaller client install size than the standard ODP.NET client, and is easier to configure. ODP.NET XCopy simplifies embedding ODP.NET in customized deployment packages.
See Also:
XCopy under "Installing Oracle Data Provider for .NET, Unmanaged Driver"TimesTen In-Memory Database Support
Oracle Data Provider for .NET enables fast data access for any .NET application, such as C# .NET, Visual Basic .NET, and ASP.NET, to TimesTen In-memory databases. ODP.NET support for TimesTen includes the classes, enumerations, interfaces, delegates and structures of the Oracle.DataAccess.Client
and Oracle.DataAccess.Types
namespaces. ODP.NET supports TimesTen Release 11.2.1.6.1 or later on Microsoft Windows 32-bit and 64-bit platforms. TimesTen can be used with .NET Framework 2.0, 3.0, 3.5, and 4 with Microsoft Visual Studio 2005 or later.
See Also:
The latest TimesTen In-Memory Database documentation and resources can be accessed from:http://www.oracle.com/technetwork/database/timesten/index.html
The following are changes in Oracle Data Provider for .NET for Release 11.2.0.1.2.
The following are changes in Oracle Data Provider for .NET for Release 11.2.
The following features are new in this release:
End-to-End Tracing: ClientInfo
Property
ODP.NET now supports the ClientInfo
write-only property, in addition to the ActionName
, ClientId
, and ModuleName
properties, on the OracleConnection
object. This property specifies the client information for the connection.
The ClientInfo
property is an end-to-end tracing attribute that can be set on the client or middle tier. This attribute is propagated to the database server whenever the next server round-trip happens. This reduces the added overhead associated with an independent database round trip. Using the ClientInfo
property is helpful in tracking database user activities and debugging applications.
Edition-Based Redefinition
Edition-based redefinition enables you to upgrade the database component of an application even while the .NET application is being used. This minimizes or eliminates downtime for the application.
See Also:
"Edition-Based Redefinition"The following are changes in Oracle Data Provider for .NET for Release 11.1.0.7.20.
The following features are new in this release:
Self-Tuning for Applications
Based on run-time sampling, ODP.NET dynamically adjusts statement cache size to provide better application performance. Self-tuning also takes into account memory usage on the client machine in order to prevent excessive memory usage. Self-tuning improves ODP.NET performance, reduces network usage, and decreases server CPU and client CPU activity.
See Also:
"Self-Tuning"Faster Data Retrieval and Less Memory Usage
Retrieving data using OracleDataReader
or populating a DataSet
from an OracleDataAdapter
is now faster.
ODP.NET reuses the same fetch array buffer for statements executed non-concurrently, saving on memory usage. The fetch array buffer stores data retrieved from the database.
No code changes are necessary to use these features. These features provide better performance and scalability for ODP.NET applications.
Oracle Streams Advanced Queuing Support
ODP.NET supports access to Oracle Streams Advanced Queuing (AQ). AQ provides database-integrated message queuing functionality to store messages persistently, propagate messages between queues on different machines and databases, and transmit messages using Oracle NET services, HTTP, HTTPS and SMTP.
ODP.NET can access all the operational features of AQ, such as enqueue, dequeue, listen and notification. Oracle Developer Tools for Visual Studio can administer and manage AQ resources.
Promotable Local Transaction Support
Distributed transactions require the orchestration of application, transaction coordinator, and multiple databases. Local transactions only require an application and a single resource manager, or database. Local transactions have less of an overhead when compared to distributed transactions.
It may be difficult to determine whether a transaction will be local or distributed at design time. Developers are forced to design applications for distributed transactions, even if local transactions are used most of the time. This situation leads to more resource usage than necessary at run time.
Promotable local transactions allow all transactions to remain local until more than one database is brought into the transaction. At this point, the transaction is promoted to a distributed transaction so that it can be managed by the transaction coordinator. This provides a better utilization of system resources. This feature is supported with Oracle Database 11g release 1 (11.1.0.7) and higher.
ODP.NET Security Enhancements
ODP.NET makes use of the OraclePermission
class to enforce imperative security. This helps ensure that a user or application has a security level adequate for accessing data.
Callbacks for HA Event Notifications
ODP.NET can register for Oracle High Availability (HA) events when "ha events=true
" is specified in the connection string. ODP.NET is then able to receive notifications on which database, service, host, or instance has gone down or come up. .NET developers can register a callback with ODP.NET to notify the application when one of these events occurs and subsequently execute an event handler, as needed.
Database Startup and Shutdown Operations
Users with database administrator privileges can use the OracleDatabase
class to startup or shutdown a database instance.
See Also:
The following are changes in Oracle Data Provider for .NET for Release 11.1.0.6.20.
The following features are new in this release:
32-bit ODP.NET XCopy
Oracle XCopy provides system administrators with an ODP.NET client that is smaller in disk size than the standard ODP.NET client and is easily configurable. Oracle XCopy makes embedding ODP.NET in customized deployment packages much simpler.
See Also:
"XCopy"Support for Oracle User-Defined Types
ODP.NET has the ability to represent Oracle UDTs defined in the database as custom types in .NET applications.
Bulk Copy Operations
ODP.NET supports the Bulk Copy operations to load a large amount of data efficiently.
Additional Connection Pool Optimizations for Oracle Real Application Clusters (Oracle RAC) and Oracle Data Guard
ODP.NET now cleans up the connection pool when the database down event is received from Oracle RAC or Oracle Data Guard. This is in addition to the events that ODP.NET already cleaned up the connection pool for: node down, service member down, and service down events.
Windows-Authenticated User Connection Pooling
Operating system-authenticated connections can now be managed as part of ODP.NET connection pools
See Also:
"Operating System Authentication"Connection Pool Performance Counters
ODP.NET publishes performance counters for connection pooling, which can be viewed using the Windows Performance Monitor.
See Also:
"Connection Pool Performance Counters"End-to-End Tracing Attribute Support
ODP.NET supports the ActionName, ClientId,
ClientInfo,
and ModuleName
write-only properties on the OracleConnection
object. These properties correspond to end-to-end tracing attributes that can be set on the client or middle-tier, and propagated to the database server whenever the next server round-trip happens. This reduces the added overhead associated with an independent database round trip. Using these attributes is helpful in tracking database user activities and debugging applications.
The following are changes in Oracle Data Provider for .NET for Release 11.1.
The following features are new in this release:
Performance Enhancements
The following performance enhancements have been made:
Improved Parameter Context Caching
This release enhances the existing caching infrastructure to cache ODP.NET parameter contexts. This enhancement is independent of database version and it is available for all the supported database versions. This feature provides significant performance improvement for the applications that execute the same statement repeatedly.
This enhancement is transparent to the developer. No code changes are needed to use this feature.
Efficient LOB Retrieval with LOBS or SecureFiles
When using LOBS or SecureFiles, this release improves the performance of small-sized LOB retrieval by reducing the number of round-trips to the database. SecureFiles is available with Oracle 11g release 1 or later database versions.
This enhancement is transparent to the developer. No code changes are needed to use this feature.