Does ODP.NET require Oracle Client installation

Alex Keh from Oracle in aug 2013 says:

Managed ODP.NET is released. It is currently part of the Oracle DB 12c
client. To use managed ODP.NET, you have to download and install the
DB client. From there, you can extract just the managed ODP.NET
assembly and setup files. These files are less than 10 MB and can be
deployed to any target machines.

Currently, we are packaging a stand alone managed ODP.NET release and
ODAC 12 release that will be much smaller. This will be released on
OTN shortly.

If you can wait a couple of days, ODAC 12c will be out on OTN and you can download that version. That will be our latest and greatest
managed ODP.NET version


We do not plan to put managed ODP.NET on NuGet. We believe that the
managed ODP.NET download with ODAC will provide the same benefits of
NuGet in terms of assembly isolation and download size.

There’s a thread discussing whether Oracle should provide managed
ODP.NET NuGet support. Once you use ODAC 12c, I would like to know
your thoughts on whether NuGet support is still necessary.

Nuget managed ODP.NET:

PM> Install-Package Oracle.ManagedDataAccess

So what is the problem anyway?
Basically up until now, ODP.NET was a .NET layer that talks to the Oracle client .dll files, a small fact that had many implications:

  • Large installation footprint (several hundreds of Mb)
  • Tough deployment to remote machines – needs to install ODP.NET on client
    machine or deploy large files
  • Challenging when working with several versions, 32bit/64bit os and applications

So what is it?

The managed driver is basically a single .dll file with a .Net native implementation of ODP.NET.
That means no Oracle Client is needed, and now native code is behind the scenes. XCopy installation can be done easily.

Major benefits:

  • Small footprint
  • Compiled as any cpu so it can work on 32bit/64bit OS
    and application smoothly. Easy to manage multiple versions on the
    same machine
  • Can be deployed as a simple reference in the application
    bin directory.

So what’s the catch?

  • Not all features are supported (although most of them are… ) you
    can find out more on the documentation
  • Namespace is changed from
    Oracle.DataAccess.Client to Oracle.ManagedDataAccess.Client
  • Performance differences are still not clear. (The old) Native code
    always perform very efficiently, but on the other hand 100% managed
    code has it’s performance benefits.

Please note that the Native-Code ODP.NET is still very much available. The managed version (at least for now) comes in addition to the native one.


Differences between the ODP.NET Managed Driver and Unmanaged Driver

Features of Oracle Data Provider for .NET

Leave a Comment