ODP.NET 23c — Final Dev Release Update

Alex Keh
Oracle Developers
Published in
3 min readApr 20, 2024

The Oracle team is preparing the final touches on the ODP.NET 23.4 production release. If you’re interested in hearing more about Oracle Database 23 production release, be sure to attend the watch Oracle Database + AI: Global Strategy Announcement on May 2.

Before the production release, we wanted to share one final ODP.NET 23c (23.3.3) dev release with the community. It is downloadable from NuGet Gallery as ODP.NET Core or managed ODP.NET. This release delivers two new enhancements:

  • Transparent Application Failover (TAF) for high availability
  • Faster authentication for the first new connection

Let me describe these capabilities in more detail.

Transparent Application Failover

Managed ODP.NET and ODP.NET Core 23.3.3 now support TAF to improve client side application high availability. It enables ODP.NET to automatically reconnect to a secondary database instance if the connected primary instance fails or shuts down.

This feature has been available with unmanaged ODP.NET previously. The new release allows existing and new apps to use managed or core ODP.NET provider types to use the same capability.

No new ODP.NET code is required to use TAF. As the name implies, the feature is transparent, meaning ODP.NET and Oracle database manages the instance failure detection and connection reestablishment process once TAF is enabled and configured. TAF can be configured on the database or client side. On the client side, TAF settings can be set in the Oracle connect descriptor or through ODP.NET APIs.

TAF automatically restores some or all the elements associated with active database connections. If more elements require recovery, they can be reset in the .NET code, such as through an ODP.NET TAF callback.

Managed and core ODP.NET support TAF session failover only. They do not support select failover, which replays in-progress queries, nor preconnection to a backup instance.

At an API level, the classes, enumerations, and members are the same or similar to their unmanaged ODP.NET counterparts to simplify migration from unmanaged to either managed or core providers.

For TAF events, you can continue to use the same OracleFailoverEvent Handler and OracleFailoverEventArgs classes and members. The unmanaged ODP.NET FailoverEvent, FailoverReturnCode, and FailoverType enumerations have been named OracleFailoverEvent, OracleFailoverReturnCode, and OracleFailoverType, respectively, for managed and core ODP.NET. There is a new OracleFailoverRestore enumeration to dictate whether ODP.NET should restore session state after failover occurs.

Managed and core ODP.NET introduce a few new TAF APIs in this release. The OracleTAFMode class sets the connection’s TAF parameters, including the failover type, session restore level, number of retries, and retry time interval. The OracleConnection TAFMode property then accepts an OracleTAFMode instance for the connection.

The OracleConfiguration TAFUsePooledConnections property dictates whether to use pre-existing pool connections for failover.

Faster First Connection Authentication

TAF is not the only new feature in this dev release. ODP.NET authentication is now faster with the first new connection. The process has been optimized with fewer database round trips required when connecting with Oracle Database 19c and higher. Upgraded applications experience this performance improvement transparently without any code changes needed.

We’re Almost Done

Through the ODP.NET 23c dev release lifetime, we’ve received a lot of excellent feedback from users. It’s given the dev team and I the ability to add more enhancements and fix bugs that will lead the ODP.NET 23 production release to be high quality and tremendously useful for the .NET developer community.

Stay tuned for the ODP.NET 23.4 production release coming soon!

--

--

Alex Keh
Oracle Developers

Alex Keh is a senior principal product manager at Oracle focusing on data access and database integration with .NET, Windows, and the cloud.