Changes in This Release for Oracle Data Provider for .NET

This section describes new features added for each ODP.NET release. A summary of these new features by release are also available on Oracle's Web site.

Changes in Oracle Data Provider for .NET Release 23ai (23.5)

The following are the changes in Oracle Data Provider for .NET for Release 23ai (23.5).

New Features

The following features are new in this release:

  • Managed ODP.NET and ODP.NET Core - REF CURSOR column type

    ODP.NET can now return REF CURSOR type column in a select list to an OracleDataReader, OracleRefCursor, or as JSON-formatted .NET string or OracleString result set.

    This feature improves flexibility and adds another way to consume Oracle result sets.

    See Also:

    OracleDataReader.GetOracleDataReader

    OracleDataReader.GetOracleRefCursor

  • Managed ODP.NET and ODP.NET Core – Globally Suppress GetDecimal Invalid Cast Exception

    The SuppressGetDecimalInvalidCastException property has been added to OracleConfiguration and OracleConnection classes. Previously, they were available to only to OracleDataReader and OracleDataAdapter classes. When enabled and GetDecimal is called, ODP.NET suppresses the InvalidCastException and returns a rounded-off 28 or 29 precision .NET decimal value, that represents the Oracle NUMBER.

    This feature allows the exception suppression to be set at either the application level (OracleConfiguration) or connection level (OracleConnection), which improves ease of use. All of the settings also enable suppressing the exception when UDTs and OracleParameters retrieve large numbers.

  • Managed ODP.NET and ODP.NET Core – ODP.NET Product Information and Application Metadata

    ODP.NET adds new properties that indicate the provider type (core or managed), NuGet version, and allow applications to assign a program name to identify the client app in the database's PROGRAM column in V$SESSION.

    These new properties provide a systematic way for database administrators and application support personnel to identify the ODP.NET provider type, version, and application name.

    See Also:

    OracleConnection.ProviderName

    OracleConnection.ProviderNuGetVersion

    OracleConfiguration.Program

  • Managed ODP.NET and ODP.NET Core – OCI Object Storage Change Notification for Connection Information

    Since connection information retrieval takes longer from a cloud resource than local disk, ODP.NET caches connection information. If that information is updated, cache updates can occur using a pull model (polling) or automated push model (change notification). Change notification for ODP.NET connection attributes stored in Azure was previously introduced. This new release introduces the same capability for Oracle Cloud Infrastructure Object Storage.

    Change notification provides an automated way to get fast updates to connection properties changes without having to sacrifice the performance of storing the information locally.

  • Managed ODP.NET and ODP.NET Core – Bulk Copy Notification After All Rows Processed

    ODP.NET bulk copy can now send a notification after all rows have been processed when the bulk copy operation has completed. This feature is enabled using OracleBulkCopyOptions.NotifyAllRowsProcessed. The number of rows is returned via the OracleRowsCopiedEventArgs.RowsCopied property in the notification.

    By using this property, applications can now determine the total number of rows processed when their bulk copy operations complete.

    See Also:

    OracleBulkCopyOptions Enumeration

    OracleRowsCopiedEventArgs.RowsCopied

  • Managed ODP.NET and ODP.NET Core – Easy Connect Plus Address Lists

    ODP.NET incorporates address list support in Easy Connect Plus configurations.

    With address lists, multiple lists of addresses, each with its own characteristics can be configured for ODP.NET connections.

  • Managed ODP.NET and ODP.NET Core – Microsoft identity platform tokens v2.0 enhancement

    ODP.NET supports Microsoft identity platform tokens v1.0 for Microsoft Entra ID-only applications and v2.0 for applications that support consumer accounts. ODP.NET 23.5 and higher check the roles (roles) and user principal name (UPN) claims in v2.0 tokens to verify at least one is present. If both claims are missing, then the provider will report an error.

  • Managed ODP.NET and ODP.NET Core – OpenTelemetry Activity Tag for rows affected by SQL

    ODP.NET OpenTelemetry now returns the row count affected by SQL DML (INSERT, UPDATE, and DELETE only) when using ExecuteNonQuery*, ExecuteReader*, or ExecuteScalar* methods.

    See Also:

    OpenTelemetry

  • Unmanaged ODP.NET – Dynamic loading of System.Text.Json DLL and its dependencies

    Unmanaged ODP.NET adds support for dynamic loading of the System.Text.Json.Dll and its dependencies if they are not loaded by the application or a different version is loaded. This enhancement is for unmanaged ODP.NET's token-based authentication feature used by the applications, such as Power BI.

Changes in Oracle Data Provider for .NET 23ai

The following are the changes in Oracle Data Provider for .NET for 23ai.

New Features

The following features are new in this release:

  • ODP.NET: AI Vector Search

    You can now leverage semantic search capabilities using Artificial Intelligence (AI) Vector Search. These capabilities include a new vector data type, vector indexes, and vector search SQL operators that allow the database to store semantic document content, images, and other unstructured data as vectors and then run fast performing similarity queries. This allows the database to better understand user intent and the search context to find similar matches, rather than only find exact matches.

    AI Vector Search provides your business with the capability to leverage Generative AI constructs, specifically Retrieval Augmented Generation (RAG), for responding to natural language questions. RAG effectively merges large language models (LLMs) with your private business data, preserving data privacy while enhancing response accuracy. This functionality allows you to unlock new opportunities for growth with AI.

  • Managed ODP.NET and ODP.NET Core - Asynchronous Programming

    ODP.NET supports the .NET Task Asynchronous Programming (TAP) model with the core and managed drivers. With support for TAP and the async and await keywords, ODP.NET data access operations are more responsive and easier to develop for asynchronicity. This feature includes support for Entity Framework Core and Entity Framework asynchronous query and save.

  • Managed ODP.NET and ODP.NET Core - Pipelining

    ODP.NET core and managed drivers support pipelining for its database communication. It allows subsequent database requests to be sent and queued transparently even while ODP.NET awaits a database response. Pipelining improves overall app performance and allows database resources to be used more effectively. ODP.NET does not need to wait for the database to respond from previous requests before submitting subsequent requests.

  • Managed ODP.NET and ODP.NET Core – OpenTelemetry

    OpenTelemetry is a popular open-source observability framework for instrumenting, generating, collecting, and exporting telemetry data. It provides a common specification and protocol so that multiple services can furnish a unified version of traces, metrics, and logs.

    Numerous managed ODP.NET and ODP.NET Core APIs have been instrumented to support OpenTelemetry observability and standards. Developers and operators can customize the ODP.NET metrics collected with OpenTelemetry. ODP.NET OpenTelemetry includes support for automatic, dynamic, and manual instrumentation.

    With OpenTelemetry support, monitoring, tracking, and analyzing how ODP.NET operations interact in cloud computing, microservices and distributed systems becomes easier using this industry standard.

    See Also:

    OpenTelemetry

  • Managed ODP.NET and ODP.NET Core - .NET Metrics

    .NET Metrics are application numerical measurements collected at regular time intervals for the purposes of monitoring and alerting about application health. In an ODP.NET setting, metrics can monitor connection statistics, such as number of ODP.NET hard connections to the database, number of active connections, or number of free connections.

    ODP.NET Core and managed ODP.NET support .NET Metrics. ODP.NET metrics can be published to and analyzed by the rich and expansive toolsets integrated with OpenTelemetry and .NET Metrics, such as Grafana and Prometheus.

    See Also:

    .NET Metrics

  • Managed ODP.NET and ODP.NET Core - Advanced Queuing and Transactional Event Queues

    ODP.NET Core and managed ODP.NET now support Advanced Queuing (AQ) and Transactional Event Queues (TxEventQ) application programming interfaces (APIs) that can be used in modern applications, such as microservices. TxEventQ's highly optimized and partitioned implementation leverages the functions of Oracle database so that producers and consumers can exchange messages at high throughput, by storing messages persistently, and propagate messages between queues on different databases. TxEventQ are a high performance partitioned implementation with multiple event streams per queue, while AQ is a disk-based implementation for simpler workflow use cases.

    ODP.NET developers can leverage the same APIs no matter if they use TxEventQ or AQ. The APIs provide access to a robust and feature-rich message queuing systems integrated with Oracle database. It can be used with web, mobile, IoT, and other data-driven and event-driven applications to stream events or communicate with each other as part of a workflow.

  • Managed ODP.NET and ODP.NET Core - Application Continuity and Transparent Application Continuity

    ODP.NET Core and managed drivers now support Application Continuity (AC) and Transparent Application Continuity (TAC). AC and TAC mask outages from end users and applications by recovering the in-flight database sessions following recoverable outages, including transactions. The recovery is transparent such that the end user merely experiences a slightly delayed execution, but no perceptible outage nor error.

    AC and TAC improve the user experience for both unplanned outages and planned maintenance. They enhance the fault tolerance of systems and .NET applications that use an Oracle database. Developers can use AC and TAC with existing .NET apps without making any code changes.

  • Managed ODP.NET and ODP.NET Core - Transparent Application Failover

    Oracle Transparent Application Failover (TAF) is a high availability feature that enables client apps to automatically reconnect to a secondary database instance if the connected primary instance fails or shuts down. ODP.NET Core and managed ODP.NET now support connection and basic session state TAF.

    ODP.NET TAF enables apps to recover and continue operating when database downtime occurs. It requires no changes to .NET application code to use.

  • JSON Relational Duality

    JSON Relational Duality manifests as fully updatable JSON views over relational data. Data remains stored in relational tables in a highly efficient normalized format but can be accessed by .NET applications in the form of JSON documents. All ODP.NET provider types, core, managed, and unmanaged, support using JSON Relational Duality.

    Duality views provide game-changing flexibility and simplicity by overcoming the historical challenges .NET developers have faced when building applications using relational or document models.

  • Oracle Client Driver Support for SQL BOOLEAN Data Type

    Oracle client drivers support fetching and binding the new BOOLEAN database column. Applications can use the native database BOOLEAN column data type with a native driver BOOLEAN data type. This enhancement makes working with BOOLEAN data types easier for developers.

  • True Cache

    Oracle True Cache is a read-only, in-memory, high performance SQL and key-value cache that is automatically managed and consistent. It improves application response time while reducing the load on the database server. Automatic management and consistency simplify application development; reducing developer effort and cost.

    All ODP.NET provider types can transparently use Oracle True Cache without needing any code changes.

  • Faster Connection Establishment

    ODP.NET connection establishment has been optimized to reduce the number of database round trips required when connecting with Oracle Database 23ai and higher. Applications that upgrade experience this performance improvement transparently.

  • Managed ODP.NET and ODP.NET Core - Centralized Configuration Providers

    Managed ODP.NET and ODP.NET Core can store and retrieve application configuration data from a centralized on-premises, cloud infrastructure, Oracle Cloud Infrastructure (OCI), or Azure store using centralized configuration providers. This store contains connection information, such as connect descriptors and tuning parameters. Secrets, such as passwords and wallets, can be stored in OCI Vault or Azure Key Vault with the same providers.

    Centralized application configuration makes client configuration and secrets management across multiple deployments simpler, especially for modern architectures, such as microservices, cloud application services, and serverless apps.

  • Managed ODP.NET and ODP.NET Core - Azure Active Directory Single Sign-On

    ODP.NET can now request the Microsoft Entra ID (Azure AD) OAuth2 access token directly from the Entra ID endpoint in addition to the prior methods of receiving the token through a file location or the .ODP.NET API. This simplifies the use of the OAuth2 tokens since applications don't need to be modified or a separate helper utility isn't needed to get the token.

    Users can sign-on once with Microsoft Entra ID, acquire the token, and access their on-premises and cloud-based Oracle databases. This feature is available in ODP.NET Core and managed ODP.NET. This multicloud capability eases authentication and authorization between Microsoft Entra ID and Oracle Databases by simplifying user access and management.

  • Managed ODP.NET and ODP.NET Core – Oracle IAM SSO token

    ODP.NET can now request the OCI IAM access token directly from IAM in addition to the prior methods of receiving the token through a file location or the .ODP.NET API. This simplifies the use of the IAM tokens since applications do not need to be modified or a separate helper utility is not needed to get the token.

    Users can sign-on once with OCI IAM, acquire the token, and access their OCI DBaaS Oracle databases. This feature is available in ODP.NET Core and managed ODP.NET.

  • Managed ODP.NET and ODP.NET Core - TLS/SSL Certificate Selection

    Managed ODP.NET and ODP.NET Core allow selecting a specific TLS/SSL certificate stored in the Microsoft Certificate Store wallet location via a graphical user interface or thumbprint. The selected key is cached so that it doesn't have to be re-selected on subsequent connection attempts.

    The graphical interface selection is enabled by setting the OracleConnection AllowCertificateSelectionUI property to true. Thumbprint selection is enabled by populating the SSLCertificateThumbprint property with the thumbprint value.

    This feature was backported to the latest ODP.NET 19c and 21c release updates.

  • Managed ODP.NET and ODP.NET Core – Enhanced Transaction Management Options

    By default, ODP.NET auto-commits after every SQL operation execution outside of a transaction. Managed ODP.NET and ODP.NET Core now allow disabling auto-commit so that SQL statements can be executed after an explicit commit without requiring a transaction.

    The OracleConnection class adds new APIs to manage local transactions.

    These new capabilities provide ODP.NET developers flexible and simpler transaction management options.

  • SQL Domain Name and Schema

    A SQL domain is a dictionary object that belongs to a schema and encapsulates a set of optional properties and constraints for common values, such as credit card numbers or email addresses. After you define a SQL domain, you can define table columns to be associated with that domain, thereby explicitly applying the domain's optional properties and constraints to those columns.

    With SQL domains, you can define how you intend to use data centrally. They make it easier to ensure you handle values consistently across applications and improve data quality.

    All ODP.NET provider types support using SQL domains, as well as retrieving SQL domain schema and name information

    See Also:

    SQL Domains

  • Annotations

    Oracle Database annotations enable storing and retrieving metadata about database objects. These are either name-value pairs or only a name. These are free-form text fields that applications can use to customize business logic or user interfaces. All ODP.NET provider types support Oracle Database annotations.

    Annotations help you to use database objects in the same way, across all applications. This simplifies development and improves data quality.

    See Also:

    Annotations

  • Increased Database Password Length

    Starting with this release, Oracle Database and client drivers including ODP.NET managed, unmanaged, and core drivers support passwords up to 1024 bytes in length.

  • Transport Layer Security 1.3

    ODP.NET supports Transport Layer version 1.3 for the core, managed, and unmanaged providers. TLS is used to encrypt data and authenticate connections. TLS 1.3 offers better security and performance over TLS 1.2.

  • Managed ODP.NET and ODP.NET Core - Sharding Split Partitionset

    ODP.NET supports sharding split partitionset events in core and managed drivers. A split partitionset is an operation on the sharding database performed when moving data within a specified super sharding key to a different shardspace.

    ODP.NET connection pools receive database events about data in a chunk being split and moved across these partition sets. The provider updates its sharding topology appropriately and transparently so that end users are dispensed the correct connection to use.

  • Managed ODP.NET and ODP.NET Core - Programmatic Database Startup and Shutdown Operations

    Users with database administrator privileges can use the OracleDatabase class to startup or shutdown a database instance with managed ODP.NET and ODP.NET Core.

  • Allowed Logon Version Client Support

    This feature enables applications to specify the minimum authentication protocol that is to be used for a given application and/or a given OracleConnection object when authenticating against an Oracle Database.

  • Managed ODP.NET - Public OracleMigrationSqlGenerator class

    For Entity Framework 6 apps, the OracleMigrationSqlGenerator class is now public to allow developers to override the default SQL generation if they want to customize it.

  • HTTPS Proxy for Cloud Connections

    ODP.NET supports HTTPS proxy of the database connection. The feature enables tunneling of that connection over a forward HTTP proxy using the HTTP CONNECT method.

    It can be enabled in the connect address, such as

    (description=(address=(https_proxy=www-proxy.example.com)(https_proxy_port=80)
    (protocol=tcps)(port=1522)(host=dbhost.example.com))
    (connect_data=(service_name=svc.example.com)) )

    HTTPS proxy improves public cloud database service access as it eliminates requiring the client side firewall to open an outbound port.

Deprecated Features

The following features are deprecated in Oracle Data Provider for .NET for Release 23ai:

  • Oracle Data Provider for .NET, Unmanaged Driver

    Oracle Data Provider for .NET (ODP.NET), Unmanaged Driver is deprecated in Oracle Database 23ai, and can be desupported in a future release. Oracle recommends existing unmanaged ODP.NET applications migrate to ODP.NET, Managed Driver.

    ODP.NET provides ADO.NET-based data access to Oracle databases. There are two primary Oracle data access drivers for Microsoft .NET Framework: ODP.NET, Managed Driver and ODP.NET, Unmanaged Driver.

    In Oracle Database 23ai, ODP.NET, Managed Driver supports all major features available in ODP.NET, Unmanaged Driver with the same application programming interfaces and configuration settings. Code migration from unmanaged ODP.NET to managed ODP.NET is straightforward for the vast majority of existing .NET applications.ODP.NET, Managed Driver is a more compact and simpler install that can be consumed via NuGet packaging. Unmanaged ODP.NET is not available as a NuGet package. It is easier to manage multiple managed ODP.NET deployments on the same machine than multiple unmanaged ODP.NET deployments. These advantages make managed ODP.NET preferable for customer use over unmanaged ODP.NET.

    As unmanaged ODP.NET no longer has any advantages over managed ODP.NET, Oracle has chosen to deprecate unmanaged ODP.NET.

  • The mkstore wallet management command line tool

    The mkstore command-line utility is being deprecated in favor of orakpi.

  • MY_WALLET_DIRECTORY

See Also:

Desupported Features

Some features previously described in this document are desupported in Oracle Database 23ai. See Oracle Database Upgrade Guide for a complete list of desupported features.

The following features are no longer supported by Oracle:

  • Oracle Database Extensions for .NET

    Oracle Database Extensions for .NET is desupported. Oracle recommends that you either place .NET code in the middle tier, or use the External Procedures feature, or rewrite the code using PL/SQL or Java.

    Oracle Database Extensions for .NET is a feature of Oracle Database on Microsoft Windows that enables you to use stored procedures and functions written in a language managed by .NET, such as C#.

    Oracle Database hosts the Microsoft Common Language Runtime (CLR) in an external process, outside of the Oracle Database process. Application developers can write stored procedures and functions using any .NET compliant language, such as C# and VB.NET, and use these .NET stored procedures in the database, in the same manner as other PL/SQL or Java stored procedures. .NET stored procedures can be called from PL/SQL packages, procedures, functions, and triggers; from SQL statements; or from anywhere a PL/SQL procedure or function can be called.

    Migration options include:

    • Moving the .NET code (assemblies) into a middle tier

    • Using the External Procedures feature to have the external process load and execute the .NET assembly

    • Rewriting the stored procedures using PL/SQL or Java

  • Oracle Wallet Manager (OWM)

  • OracleConfiguration.DirectoryType Property

Changes in Oracle Data Provider for .NET Release 21c (21.12)

The following are the changes in Oracle Data Provider for .NET for Release 21c (21.12).

New Features

The following features are new in this release:

  • .NET 8 Runtime

    ODP.NET Core is certified for .NET 8.

  • Entity Framework Core 8

    ODP.NET Entity Framework (EF) Core now supports Entity Framework Core 8 with Oracle databases. ODP.NET EF Core 21.12.1 or higher is required.

Changes in Oracle Data Provider for .NET Release 21c (21.8)

The following are the changes in Oracle Data Provider for .NET for Release 21c (21.8).

New Features

The following features are new in this release:

  • .NET 7 Runtime

    ODP.NET Core is certified for .NET 7.

  • Entity Framework Core 7

    ODP.NET Entity Framework (EF) Core now supports Entity Framework Core 7 with Oracle databases. Entity Framework Core is a cross-platform Microsoft object-relational mapper that enables .NET developers to work with relational databases using .NET objects.

Changes in Oracle Data Provider for .NET Release 21c (21.7)

The following are the changes in Oracle Data Provider for .NET for Release 21c (21.7).

New Features

The following feature is new in this release:

  • Managed ODP.NET and ODP.NET Core -- Azure Active Directory

    Managed ODP.NET and ODP.NET Core 21.7 support Azure Active Directory (AAD) authentication when connecting to Oracle Database. ODP.NET will then use an access token to authenticate instead of an username and password.

    This feature benefits applications and services that use AAD for centralized user authentication with Oracle database. Those services can include Azure and Microsoft 365-based cloud services, such as Microsoft Power BI service, that rely on AAD for user management.

    Using token-based authentication is more secure and simpler for the end user. It becomes unnecessary to specify credentials each time the user accesses a resource. Moreover, the resource never needs to handle and manage individual user credentials.

  • Managed ODP.NET and ODP.NET Core -- Transport Layer Security 1.3

    Managed ODP.NET and ODP.NET Core have added support for version 1.3 of Transport Layer Security (TLS) protocol. TLS allows applications to communicate securely with the database in a way that prevents message eavesdropping, tampering, and forgery.

Changes in Oracle Data Provider for .NET Release 21c (21.6.1)

The following are the changes in Oracle Data Provider for .NET for Release 21c (21.6.1).

New Features

The following feature is new in this release:

  • Managed ODP.NET and ODP.NET Core - Oracle Identity and Access Management Cloud Service Enhancements

    ODP.NET adds more support for Oracle Identity and Access Management (IAM) cloud service for unified identity across Oracle cloud services for the managed and core drivers. ODP.NET can use the same Oracle IAM credentials for authentication and authorization.

    This capability allows single sign-on and for identity to be propagated to all services Oracle IAM supports. A unified identity makes user management and account management easier for administrators and end users.

    Managed ODP.NET adds support for IAM database password verifier, token, and database alternate password for token authentication.

    ODP.NET Core already has support for IAM database password verifier and token. This new version adds database alternate password for token authentication in ODP.NET Core.

  • ODP.NET Core - Multi-Platform Secure External Password Store

    The Secure External Password Store (SEPS) is the use of a client-side wallet for securely storing the password credentials. ODP.NET Core can now be configured to use the external password store on any operating system it supports beyond just Windows.

    An Oracle wallet is a container that securely stores authentication and signing credentials. Wallets can simplify large-scale deployments that rely on password credentials for database connections. Applications no longer need embedded user names and passwords, which reduces security risk.

Changes in Oracle Data Provider for .NET Release 21c (21.5)

The following are the changes in Oracle Data Provider for .NET for Release 21c (21.5).

New Features

The following feature is new in this release:

  • Unmanaged ODP.NET – One-way TLS/SSL with Built-in Truspoints (Walletless)

    Unmanaged ODP.NET now supports one-way Transport Layer Security/Secure Sockets Layer without wallets. Not having to provide a wallet can simplify database connectivity, such as with Oracle Autonomous Database.

Changes in Oracle Data Provider for .NET Release 21c (21.4.1)

The following are the changes in Oracle Data Provider for .NET for Release 21c (21.4.1).

New Features

The following features are new in this release:

  • .NET 6 Runtime Certification

    ODP.NET Core is certified for .NET 6.

  • Entity Framework Core 6

    ODP.NET Entity Framework (EF) Core now supports Entity Framework Core 6 with Oracle databases. Entity Framework Core is a cross-platform Microsoft object-relational mapper that enables .NET developers to work with relational databases using .NET objects.

  • ODP.NET Core - Oracle Identity and Access Management Cloud Service

    ODP.NET supports Oracle Identity and Access Management (IAM) cloud service for unified identity across Oracle cloud services, including Oracle Cloud Database Services, with the core driver. ODP.NET can use the same Oracle IAM credentials for authentication and authorization.

    This capability allows single sign-on and for identity to be propagated to all services Oracle IAM supports. A unified identity makes user management and account management easier for administrators and end users.

Changes in Oracle Data Provider for .NET Release 21c (21.4)

The following are the changes in Oracle Data Provider for .NET for Release 21c (21.4).

New Features

The following features are new in this release:

  • Managed ODP.NET and ODP.NET Core – One-way TLS/SSL with Built-in Truspoints (Walletless)

    ODP.NET core and managed now support one-way Transport Layer Security/Secure Sockets Layer without wallets. Not having to provide a wallet can simplify database connectivity, such as with Oracle Autonomous Database.

  • ODP.NET Core -- Ubuntu and Debian Linux

    ODP.NET Core add certification for additional Linux distributions: Ubuntu and Debian.

Changes in Oracle Data Provider for .NET Release 21c (21.3)

The following are the changes in Oracle Data Provider for .NET for Release 21c (21.3).

New Features

The following feature is new in this release:

  • Managed ODP.NET and ODP.NET Core – User-Defined Types

    ODP.NET Core and managed providers now support user-defined types (UDT), including Oracle Collections (VARRAY and nested tables), Oracle Objects, and references (REF) to object types. These new features provide near-parity functionality with existing ODP.NET, Unmanaged Driver UDT functionality. This new enhancement allows the vast majority of unmanaged ODP.NET applications to migrate to managed ODP.NET or ODP.NET Core easily with minimal code changes necessary.

  • OracleConfiguration SqlnetURI Setting

    ODP.NET OracleConfiguration SqlnetURI property is being renamed to SqlNetURI. This setting specifies the WebSocket universal resource identifier. The change reflects improved adherence to .NET's PascalCasing capitalization convention. If you currently use the property, then please modify your code accordingly.

Deprecated Features

The following property and setting are deprecated in Oracle Data Provider for .NET for Release 21c:

  • OracleConfiguration DirectoryType property

  • Configuration file DIRECTORY_TYPE setting

    The OracleConfiguration DirectoryServerType property replaces the DirectoryType property. The .NET configuration file DIRECTORY_SERVER_TYPE setting replaces the DIRECTORY_TYPE setting. All these properties have identical functionality. Oracle recommends developers to use and migrate to the new properties. The DirectoryServerType and DIRECTORY_SERVER_TYPE names better align with the ldap.ora parameter DIRECTORY_SERVER_TYPE, which provides equivalent functionality.

  • Deprecation of Oracle Database Extensions for .NET

See Also:

Deprecation of Oracle Database Extensions for .NET

Oracle Database Extensions for .NET is deprecated in Oracle Database 21c. Oracle recommends that you either place .NET code in the middle tier, or use the External Procedures feature, or rewrite the code using PL/SQL or Java.

Date: September 2021

Oracle Database Extensions for .NET is a feature of Oracle Database on Microsoft Windows that enables you to use stored procedures and functions written in a language managed by .NET, such as C#.

Oracle Database hosts the Microsoft Common Language Runtime (CLR) in an external process, outside of the Oracle Database process. Application developers can write stored procedures and functions using any .NET compliant language, such as C# and VB.NET, and use these .NET stored procedures in the database, in the same manner as other PL/SQL or Java stored procedures. .NET stored procedures can be called from PL/SQL packages, procedures, functions, and triggers; from SQL statements; or from anywhere a PL/SQL procedure or function can be called.

Migration options include:

  • Moving the .NET code (assemblies) into a middle tier
  • Using the External Procedures feature to have the external process load and execute the .NET assembly
  • Rewriting the stored procedures using PL/SQL or Java

Changes in Oracle Data Provider for .NET (21.1)

The following are the changes in Oracle Data Provider for .NET (21.1).

New Features

The following features are new in this release:

  • Entity Framework Core 5

    ODP.NET Entity Framework (EF) Core now supports Entity Framework Core 5 with Oracle databases. Entity Framework Core is a cross-platform Microsoft object-relational mapper that enables .NET developers to work with relational databases using .NET objects.

  • Oracle Database JSON Data Type

    ODP.NET supports the native JavaScript Object Notation (JSON) data type in Oracle Database. The new JSON data type is optimized for query and DML processing, yielding database performance improvements processing JSON.

    When using a .NET string or OracleString, JSON data can be bound as a parameter using the OracleDbType.Json enumeration value. ODP.NET Core, managed, and unmanaged all support these new JSON features.

  • Client Initiated Continuous Query Notification

    Client Initiated Continuous Query Notification (CICQN) is similar to the traditional Continuous Query Notification (CQN) feature available in ODP.NET. In CQN, applications receive client-side notifications when server side change occurs that would affect the client’s query result set, the underlying schema objects, or the database state. This notification is out of process, occurring without an existing ODP.NET connection.

    CICQN uses in-process notifications. ODP.NET creates one separate connection per pool for receiving notifications. The database server uses this specific connection to send change notifications to ODP.NET. CICQN is useful when out of process communications is not available between client and database server, such as in cloud deployments.

  • Managed ODP.NET and ODP.NET Core – Oracle Globally Distributed Database

    ODP.NET Core and managed providers now support sharding. Oracle Globally Distributed Database provides the ability to horizontally partition the data across multiple independent Oracle databases (shards). Based on a key specified in the connect string, ODP.NET can route the database requests to a particular shard. Oracle Globally Distributed Database is a shared-nothing architecture that allows near-linear scaling of the database across low-cost commodity database servers located in one or more local or global data centers. Other key benefits include global data distribution (store particular data close to consumers) and fault containment (failure of one shard does not affect the availability of other shards). Global Data Services manages the location of data among the shards and allows ODP.NET client requests to be routed to the appropriate shard in this distributed database system.

    In addition to the same sharding functionality that unmanaged ODP.NET supports, ODP.NET managed and core also support pausing connection requests during chunk migrations. Users will not experience a timeout without giving the chunk migration sufficient times to move across shards.

  • New Administrative Privileges

    ODP.NET now supports assignment of task-specific and least-privileged administrative privileges to enable database administrative duty separation. The newly added privileges include SYSBACKUP for backup and recovery, SYSDG for Oracle Data Guard, SYSKM for encryption key management, and SYSRAC for Oracle Real Applications Clusters operations. Core, managed, and unmanaged ODP.NET support all these administrative privileges.

  • Managed ODP.NET and ODP.NET Core-- Debug Tracing Redaction

    Managed ODP.NET and ODP.NET Core has introduced a new trace level, that can exclude SQL statements and network packet contents from being included in the trace file.

    See Also:

    Debug Tracing

Changes in Oracle Data Provider for .NET (19.16)

The following are the changes in Oracle Data Provider for .NET (19.16).

New Features

The following features are new in this release:

  • Managed ODP.NET and ODP.NET Core -- Transport Layer Security 1.3

    Managed ODP.NET and ODP.NET Core have added support for version 1.3 of Transport Layer Security (TLS) protocol. TLS allows applications to communicate securely with the database in a way that prevents message eavesdropping, tampering, and forgery.

Changes in Oracle Data Provider for .NET (19.15.1)

The following are the changes in Oracle Data Provider for .NET (19.15.1).

New Features

The following feature is new in this release:

  • Azure Active Directory

    Starting with ODP.NET 21.7 and 19.15.1, ODP.NET supports Azure Active Directory (AAD) authentication when connecting to Oracle Database. ODP.NET will then use an access token to authenticate instead of a username and password.

    This feature benefits applications and services that use AAD for centralized user authentication with Oracle database. Those services can include Azure and Microsoft 365-based cloud services, such as Microsoft Power BI service, that rely on AAD for user management.

    Using token-based authentication is more secure and simpler for the end user. It becomes unnecessary to specify credentials each time the user accesses a resource. Moreover, the resource never needs to handle and manage individual user credentials.

Changes in Oracle Data Provider for .NET (19.10)

The following are the changes in Oracle Data Provider for .NET (19.10).

New Features

The following features are new in this release:

  • .NET 5 Runtime Certification

    ODP.NET Core is certified for .NET 5.

  • Managed ODP.NET and ODP.NET Core -- Bulk Copy

    ODP.NET Bulk Copy enables applications to efficiently load large amounts of data from a table in one database to another table in a different database. Managed ODP.NET and ODP.NET Core now support Bulk Copy and all its APIs.

    ODP.NET Bulk Copy is the most optimized .NET solution when a large data set needs to loaded into a table or between database tables in different databases.

    See Also:

    Bulk Copy

  • Oracle Provider Types Deserialization into DataSet and DataTable

    Due to a change in all .NET versions to enhance application security, the allowed DataSet and DataTable data types that can be deserialized are now restricted. This change applies to .NET 5, .NET Core, and .NET Framework with new updates. If application DataSets and DataTables use ODP.NET data types with one of these newer .NET versions, then they may encounter an ODP.NET type initializer exception. To avoid this exception, developers can add ODP.NET-specific data types to the “allow” list to permit deserialization into DataSet or DataTable.

    To do this, call the OracleConfiguration AddOracleTypesDeserialization method or add the types individually via a .NET configuration file.

  • ODP.NET Core -- KeepAlive on non-Windows platforms

    KeepAlive is supported on non-Windows operating systems, such as Oracle Linux. In previous releases, ODP.NET Core supported these KeepAlive properties for Windows platforms only. The properties include KeepAlive, KeepAliveInterval, and KeepAliveTime.

    KeepAlive is used to prevent idle TCP connections from being closed, such as by a firewall or load balancer. In some cloud deployments, this idle TCP connection timeout cannot be changed. KeepAlive will keep the connection alive by periodically sending a probe packet with no data in it and the ACK flag turned on.

  • Suppress GetDecimal Invalid Cast Exception

    The SuppressGetDecimalInvalidCastException property has been added to the OracleDataReader and OracleDataAdapter classes. When enabled and GetDecimal is called on the OracleDataReader object explicitly by the application or implicitly through the Fill() method on the OracleDataAdapter object, for example, it suppresses the InvalidCastException and returns a rounded-off 28 or 29 precision .NET decimal value, that represents the Oracle NUMBER.

  • ODP.NET Core -- LDAP for Non-Windows Platforms

    ODP.NET Core now supports connecting with net service names mapped to connect descriptors in an LDAP-compliant directory server from all non-Windows operating systems the provider supports, such as Oracle Linux and Red Hat Enterprise Linux. Now ODP.NET Core apps on all platforms can use LDAP authentication to connect to Oracle Database.

Changes in Oracle Data Provider for .NET (19.9)

The following are the changes in Oracle Data Provider for .NET (19.9).

New Features

The following feature is new in this release:

  • In-Band Fast Application Notification

    In some scenarios, such as cloud deployments and when firewalls block notification messages between the database and client, out of band messages and using Oracle Notification Service may not be possible. ODP.NET can use in-band FAN notifications instead in these scenarios. In-band notifications rely on existing ODP.NET connections to communicate messages. ODP.NET will check for notifications every time a connection makes a database round trip, is checked in, or checked out. When a DOWN notification is received, ODP.NET will scan the pool for affected connections and close them.

    This feature was introduced with managed ODP.NET and ODP.NET Core in 19.9. It was introduced in unmanaged ODP.NET in 19.10.

Changes in Oracle Data Provider for .NET ODAC Release 19c (19.3.2)

The following are the changes in Oracle Data Provider for .NET for ODAC Release 19c (19.3.2).

New Features

The following features are new in this release:

  • Entity Framework Core 3.1

    ODP.NET Entity Framework (EF) Core now supports Entity Framework Core 3.1 with Oracle databases. Entity Framework Core is a cross-platform Microsoft object-relational mapper that enables .NET developers to work with relational databases using .NET objects. This ODP.NET EF Core release adds support for relational views and materialized views. These views can be read-only or updatable.

    Oracle EF Core 3.1 developers can now create and migrate data models in the Oracle Database. They can scaffold EF Core classes based on an Oracle Database schema objects. They can migrate and scaffold with Oracle views. Oracle EF Core is integrated with popular EF Core tools, such as the EF Core Package Manager Tools.

Changes in Oracle Data Provider for .NET (19.7)

The following are the changes in Oracle Data Provider for .NET (19.7).

New Features

The following features are new in this release:

  • Managed ODP.NET and ODP.NET Core -- Administer Storage using SYSASM Privilege

    Oracle Automatic Storage Management (Oracle ASM) is a volume manager and a file system for Oracle database files. SYSASM is a system privilege that enables administrators to manage ASM instances. Managed ODP.NET and ODP.NET Core can now connect using the SYSASM administrative privilege to perform storage management of the Oracle Database.

    ODP.NET can now perform database ASM administration when connecting with a SYSASM privileged connection.

  • WebSocket and WebSocket with SSL/TLS

    WebSocket is a protocol that offers full-duplex communication channels over a single TCP connection. WebSocket with SSL/TLS offers a secure WebSocket connection. WebSocket is an extension to HTTP and is able to work with HTTP proxies and intermediaries. ODP.NET Core, managed, and unmanaged providers all support WebSocket and secure WebSocket protocols.

    See Also:

    Using WebSocket

Changes in Oracle Data Provider for .NET (19.6)

The following are the changes in Oracle Data Provider for .NET (19.6).

New Features

The following features are new in this release:

  • .NET Core 3.1 Certification

    ODP.NET Core is certified for .NET Core 3.1.

  • Linux 8 Certification

    ODP.NET Core is certified on Oracle Linux 8 and Red Hat Enterprise Linux 8.

  • Entity Framework 6.4 Certification

    Managed and unmanaged ODP.NET Entity Framework is certified for Entity Framework 6.4.

Changes in Oracle Data Provider for .NET (19.5)

The following are the changes in Oracle Data Provider for .NET (19.5).

New Features

The following features are new in this release:

  • .NET Core 3 Certification

    ODP.NET Core is certified for .NET Core 3.

  • Entity Framework Core 2.1 Certification

    ODP.NET Entity Framework Core is certified for EF Core 2.1.

Changes in Oracle Data Provider for .NET in ODAC Release 19c (19.3)

The following are the changes in Oracle Data Provider for .NET for ODAC Release 19c (19.3).

New Features

The following features are new in this release:

  • Entity Framework Core

    ODP.NET Entity Framework (EF) Core is a database provider that allows Entity Framework Core to be used with Oracle databases. Entity Framework Core is a cross-platform Microsoft object-relational mapper that enables .NET developers to work with relational databases using .NET objects.

    Oracle EF Core developers can now create and migrate data models in the Oracle Database. They can reverse engineer/scaffold EF Core classes based on an Oracle Database schema. Oracle EF Core is integrated with popular EF Core tools, such as the EF Core Package Manager Tools.

  • Managed ODP.NET and ODP.NET Core -- More Configuration Options with New OracleConnection Properties

    OracleConnection class introduces additional properties to configure ODP.NET connections. The new properties are:

    • KeepAlive, KeepAliveInterval, and KeepAliveTime - specifies whether and the conditions under which to keep idle connections alive

    • TnsAdmin - specifies the tnsnames.ora and sqlnet.ora directory

    • WalletLocation - specifies the wallet directory location

  • Unmanaged ODP.NET -- Administer Storage using SYSASM Privilege

    Oracle Automatic Storage Management (Oracle ASM) is a volume manager and a file system for Oracle database files. SYSASM is a system privilege that enables administrators to manage ASM instances. Unmanaged ODP.NET can now connect using the SYSASM administrative privilege to perform storage management of the Oracle Database.

    ODP.NET can now perform database ASM administration when connecting with a SYSASM privileged connection.

  • Dynamically Enabled Tracing and Size Limits

    To improve diagnostics ease of use and productivity, ODP.NET trace output can now be enabled and disabled at runtime using the OracleConfiguration.TraceLevel property. To keep trace files down to a manageable size, the TraceFileMaxSize property can be set.

    Administrators can isolate tracing to only known times or events when problems occur. This feature helps keep trace files down to the minimum size needed to investigate issues. If a trace file does become large, ODP.NET will write to a new trace file once the maximum file limit that is set in TraceFileMaxSize is reached. These features are available with core, managed, and unmanaged providers.

Changes in Oracle Data Provider for .NET Release 19c (19.3)

The following are the changes in Oracle Data Provider for .NET for Release 19c (19.3).

New Features

The following features are new in this release:

  • .NET Framework 4.8 Certification

    ODP.NET Core, Managed, and Unmanaged Drivers are certified with .NET Framework 4.8.

  • ODP.NET, Managed Driver -- Configuration as Code

    Managed ODP.NET now supports OracleConfiguration, OracleDataSourceCollection, and OracleOnsServerCollection classes.

    These classes allow developers to configure managed ODP.NET within source code in lieu of .NET configuration and Oracle configuration files.

  • ODP.NET Core -- Lightweight Directory Access Protocol (LDAP)

    ODP.NET Core can use connect identifiers mapped to connect descriptors in an LDAP-compliant directory server, such as Oracle Internet Directory and Microsoft Active Directory. The provider supports the same LDAP features and settings as managed ODP.NET.

    ODP.NET Core LDAP support is available on Windows operating systems only.

  • ODP.NET Core -- Performance Counters

    ODP.NET Core can publish key runtime connection counters to Windows Performance Monitor or a file. The provider supports the same counters, setup process, and settings as managed and unmanaged ODP.NET.

    ODP.NET Core performance counters are available on Windows operating systems only. They require System.Diagnostics namespace in using performance counters programmatically.

  • Easy Connect Plus

    Oracle Easy Connect Plus provides a simple way to configure TCP/IP connections to the Oracle Database without having to use parameter files, such as tnsnames.ora, nor environment variables. Easy Connect Plus includes support for:

    • TCP/IP with SSL/TLS

    • Any SQL*Net description level parameter can be used

    • Multiple hosts and ports

    • A straightforward name-value pair format

    Easy Connect Plus supports more configurations and a wider breadth of ODP.NET applications than traditional Easy Connect, including clustered or cloud databases.

  • More Secure Oracle Notification Service Connections

    ODP.NET now enables Oracle Notification Service (ONS) communications to occur over TCP/IP with SSL/TLS (TCPS), which is more secure than just TCP/IP. As TCPS requires using a wallet for storing keys and certificates, ODP.NET can use one wallet for both ONS and ODP.NET connections or have separate wallets for each.

    TCPS provides more secure ONS communication, gives administrators flexibility in how to configure their wallets, and enables cloud database connections.