System.Data.OracleClient Update

Published 15 June 09 11:59 AM | dpblogs 

As a part of formulating our long term strategy for ADO.NET, we have had several discussions with number of our customers, internal and external partners, and MVPs to better align our development efforts to ensure we are delivering the right technologies according to our customers’ highest priority needs. One of the key intent of these discussions and the associated research was to understand the needs and requirements of customers who develop applications with Oracle using “System.Data.OracleClient” (OracleClient).   OracleClient is the ADO.NET provider for Oracle developed by Microsoft and ships as a part of the .NET Framework.

We learned  that a significantly large portion of customers use our partners’  ADO.NET providers for Oracle;  with regularly updated support for Oracle releases and new features. In addition, many of the third party providers are able to consistently provide the same level of quality and support that customers have come to expect from Microsoft. This is strong testament of our partners support for our technologies and the strength of our partner ecosystem.  It is our assessment that even if we made significant investments in ADO.Net OracleClient to bring it at parity with our partners based providers, customers would not have a compelling reason to switch to ADO.Net OracleClient.

The Decision

After carefully considering all the options and talking to our customers, partners, and MVPs it was decided to deprecate OracleClient as a part of our ADO.NET roadmap. 

Recommendation and Guidance: 

System.Data.OracleClient will be available in the upcoming 4.0 release of .NET Framework; however, it will be marked as deprecated. This will have no impact to existing applications and these applications will continue to work as expected. Developing new applications which use OracleClient will be supported; however, warnings will be raised if the applications are compiled against .Net 4.0. Once compiled, no warnings or errors will be generated while running these applications. We strongly recommend customers to use  our partners’ ADO.NET Provider for Oracle  instead of continuing to use Microsoft’s OracleClient for new application development.

Microsoft will continue to provide hotfixes for critical issues in System.Data.OracleClient as per the standard support policy for .Net Framework 4.0. We will also continue to make critical bug fixes in future service packs for .Net Framework 4.0.

Thank you,

Himanshu Vasishth
Program Manager, ADO.NET OracleClient

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# System.Data.OracleClient Update | ASP.NET MVC said on June 15, 2009 6:01 PM:

PingBack from http://aspmvc.co.cc/2009/06/15/systemdataoracleclient-update/

# SteinarH said on June 16, 2009 3:06 AM:

I have found two 3rd party providers:

-http://www.datadirect.com/products/net/net_for_oracle/index.ssp

-http://www.devart.com/dotconnect/oracle/

Are there others you can recommend?

# Strider said on June 16, 2009 4:07 AM:

The Devart provider supports EF and these guys even made their own implementation of LINQ to SQL - it's called LINQ to Oracle.

Sure it has bugs...But they fix them, really :-)

# O bruxo mobile said on June 16, 2009 5:26 AM:

Himanshu Vasishth acaba de anunciar en el blog de ADO.NET que para .NET 4.0 el driver de Oracle para

# Scott Salyer said on June 16, 2009 8:45 AM:

Well this definitely sucks to hear. Almost any application I write for Oracle (a lot over the last few years) uses that client System.Data.OracleClient because it, unlike anything provided from Oracle directly, actually works and does it very well. Now I'm being told to go third-party?

# Banker said on June 16, 2009 11:00 AM:

OMG,

80% of our applications are using this provider and now you told me that i have to pay for a rubish 3rd party provider?

# TallTed said on June 16, 2009 12:35 PM:

@Scott, @Banker - Third party doesn't have to mean rubbish... and it often means faster fixes and feature additions, as was the case with Entity Framework support.

@SteinarH - Depending on your needs, you might look into either --

http://uda.openlinksw.com/dotnet/mt/dotnet-oracle-mt/

-- or --

http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtOracleEntityFrameworkUsage

# Jose R. Guay Paz said on June 16, 2009 12:56 PM:

Microsoft has made a huge announcement regarding the OracleClient library in ADO.NET. Himanshu Vasishth

# VistaDB .Net Database Blog said on June 16, 2009 12:57 PM:

Microsoft deprecating Oracle Client from ADO.NET 4

# Shane Cusson said on June 16, 2009 1:46 PM:

@scott: I think you'll find the latest ODP.net from Oracle works quite well.

Recent feature adds:

http://www.oracle.com/technology/tech/windows/odpnet/newfeatures.html

# Brad C. said on June 16, 2009 1:49 PM:

VERY disappointing!

The System.Data.OracleClient has been so very stable.

Like @Scott, I think the OracleClient was way better than the System.Data.OracleClient.

It's like having to buy 3rd Party Controls for stupid features that should be included. I also do not experience faster upgrades from my 3rd Party Vendors.. Not at all..

This is bad, bad news!

# Hector said on June 16, 2009 2:00 PM:

What will be the impact of this to the Data Access Application Block ?

# Michael C. Neel said on June 16, 2009 2:16 PM:

Disappointed as well.  The ODP.Net drivers rarely work with Visual Studio tooling, and I think still lack any support for LINQ or EF.  I think Oracle has been pretty clear at not supporting anything beyond basics in .Net - the merger with Sun only makes this announcement even worse.

# Will Smith said on June 16, 2009 2:31 PM:

@Shane, all,

I've tried using ODP.Net in the past and it's been a real pain because the libraries are version specific.  Must have 10g ODP.Net for 10g install, 11g for 11g, etc.

I never had to worry about that with OracleClient.

I tried twice to switch to ODP (for the additional features) and gave up because of the versioning issues.

# Scott Prugh said on June 16, 2009 4:22 PM:

I would be interested in understanding who you spoke with to make this decision.  We use the .Net library to access Oracle in all of our applications and it works very well and is stable.  There are some more advanced features it doesn't support but these aren't enough to make me go to a third party.  Not having support in .Net for the most popular database platform is a huge loss.

Going to third parties for stuff like this is a PITA.  The quality is almost always worse for enterprise grade components like this and the cost is usualy prohibitive.  I would rather see a good solid Oracle Provider from MSFT that supports limited features as opposed to every feature in Oracle exposed.

# andrexx said on June 16, 2009 4:51 PM:

We try many third part providers. Yes it have more features then OracleClient, but very unstable.

We try use ODP.NET provider from Oracle, but ODP has problems with support and serious memory leaks then work with clobs.

As result we return to OracleClient and happy with him... We have more then 10 products what use OracleClient and not have a problems. Very bad news :(

# C said on June 16, 2009 5:37 PM:

Just a FYI - ODP.NET 11g works with any version of Oracle Database back to 9.2. There should not be any versioning issues.

Multiple versions of ODP.NET can live on the same box as well...

If your only experience with ODP.NET was a long time ago, you might want to download the latest one and see if you like it better now, and to see if a bug that bit you last time is fixed now.

http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

# P. Cox said on June 16, 2009 6:27 PM:

This seems short sighted to me.

I have found integrating between an existing Oracle database and new .NET code very straightforward using the OracleClient.

We do not have a big budget and purchasing a third party tool is not a good option for us.

Disappointing news.

# smo said on June 16, 2009 6:31 PM:

*shrugs* we build and use commercial product hanging off ODP.Net across multiple versions of oracle from 8i to 11g without any problems; interestingly, we had nothing but problems with the MS offering... From what ppl are saying, seems very subjective based on the features you're using, eh?  But I think one thing most have in common is it is always a head-check getting oracle to play well with prod and developerland and having to change, well, sucks hard.

# Benjamin Day Consulting, Inc.: The Blog said on June 16, 2009 6:45 PM:

Microsoft deprecates its ADO.NET Oracle provider (System.Data.OracleProvider)

# Alex Keh said on June 16, 2009 7:03 PM:

For those concerned about having to pay for third-party providers, ODP.NET is free to use for development and deployment.

As a previous poster indicated, multiple ODP.NET versions can exist on the same machine with each .NET app using a different ODP.NET version.  This enhancement was introduced starting in ODP.NET 10.2.0.4.  This feature should overcome some of the previous posters' complaints about multiple ODP.NET versions co-existing.

If you have specific issues with ODP.NET, feel free to email me alex.keh {at} oracle.com.

# Chris Brandsma said on June 16, 2009 7:38 PM:

Any chance you could throw the code up on CodePlex and let the community have at it?

# Ivan Towlson said on June 16, 2009 8:35 PM:

The ADO.NET Oracle client isn't about giving "customers ... a compelling reason to switch."  It's about .NET developers who *don't* already have an investment in a third-party provider.  If I'm an in-house developer creating a small intranet application that has to run against Oracle, I don't want to have to research Oracle providers and battle the purchasing process and figure out the deployment issues.  I want to use what's in the framework.  Sure, Oracle power users will probably want ODP.NET or DevArt or DataDirect for their extra performance and features, but why force everyone to pay the power user tax?

I accept that Microsoft probably don't want to invest heavily in their Oracle provider.  That's fair enough: it does what the non-power-users need, and power users can go to third parties.  What bugs me is the deprecation: the fact that if I now use OracleClient, I'm going to get compiler errors (yes, we compile with warnings as errrors, and that includes ObsoleteAttribute warnings).  We are not being told, "Don't expect great things from this provider, because it's fairly basic."  We are being told, "Don't even use this provider: use something else instead."

# Alan Spillert said on June 16, 2009 9:13 PM:

Take a look at ATTUNITY - http://www.attunity.com/oracle_cdc_for_ssis

Life will move on.

# Only Human | Devoted to technology v.2.0 said on June 17, 2009 3:13 AM:

Jak możecie dokładniej przeczytać na blogu teamu ADO.Net szukuje się istotna zmiana w tym komponencie

# Akhilesh Bhale said on June 17, 2009 3:47 AM:

i used ODP.Net because i need Userdefined types and arrays in our oracle stored proc.and i am surprised to see the strange behaviour of  ODP.Net. the code works for some time and then throws an error that is generated from the dll and after few min code work again. i have no control on that.

I am bit frustrated and a bit angry that there is no information on the net.

so i guess this experience with ODP.net and this disappointing news will end my playing with oracle.

# Jan Driesen said on June 17, 2009 8:46 AM:

This is terrible news. ODP.NET is great to get optimal performance when required or to handle very specific Oracle stuff. It's integration in Visual Studio however is messy, it's release times differ between x86 and x64 clients as well as between Visual Studio and Framework versions, and its a disaster to debug. For quick & simple development, and to get most out of the .Net Framework, the overall availibility of a default Microsoft driver is a must!

# RoryBecker said on June 17, 2009 9:06 AM:

Surely MS will just migrate the code out into a separate assembly (assuming it's not already in one) and then open source it so it can live on.

The MVC framework is migrating into the framework... And the OracleClient stuff would be migrating out.

No biggie... You'll just have to ship that dll yourself in the future...

Right?

# Thayla Caldari said on June 17, 2009 6:05 PM:

I've been using the Oracle ODP .Net version for all development for some years so the impact for me isn't too bad.  The problem with Oracle is that you have to install the kitchen sink to connect to a database (ODP or not).  I think if they finally decided to simplify this people might be a little happier.

# Hifni said on June 18, 2009 1:52 AM:

When having got technical advice from professionals on to which technology to pursue, most recomended ODP.NET since its a generics of Oracle. But installing ODP.net in the client was so painful and tedious as certain machines did not fair it with very well. Never had issues with System.Data.Oracleclient when deploying apart from bugs which had fixes. Never the less its dissapointing to hear the news. Anyway if Microsoft could work closely with Oracle or eitherway and get us a good dataaccess components which is preembeded with VS +.net framework like crystal reports it would be ideal.

# Fit IT Girl said on June 18, 2009 2:01 AM:

All these years we have been telling our customers to use System.Data.OracleClient and now it is going to be marked deprecated? How do we trust Microsoft with all these yo-yo ing?

# Angel Ochoa said on June 18, 2009 3:01 PM:

This is REALY BAAAAD news.

If you don't want to support OracleClient perhaps you should open source it and place it in CodePlex.

For those that said that ODP.net is ok let me remember you that many times you need to use a client installation in wich you can't install anything specialy a new Oracle Client that is what is needed if you need to use ODP.net and is not installed.

And ... WHY DEPRECATED ??? If you're not going to develop anything else there , ok, but "deprecated" means that now I get warnings that I don't need and, by the way, if you said something is deprecated is usualy because something else is replacing it and this is not the case here.

# Devang said on June 18, 2009 3:37 PM:

It is very sad. My experienece is that OracleClient is much more superior then Oracle provided ODP.net.

Oracle can't  create good client for their own product :-)

# Mike Herrick said on June 18, 2009 3:48 PM:

This is a great disappointment.  

We have attempted to use ODP.net twice and have  always had to come running back to the Microsoft provider due to stability issues with Oracle's solution.

Having a reliable solution for connecting to Oracle within the .Net Framework is a fundamental necessity for many of us.  

This is especially true now that Oracle is poised to own Java.  Where will Oracle be concentrating their efforts?

We love the stability of the Microsoft Provider.  Please reconsider.

If nothing else, putting the code up on CodePlex would be both a great idea and well received service to the community.

# Christian Shay said on June 18, 2009 4:25 PM:

Hi Everyone,

I hope you can give ODP.NET a second look if you can. Many improvements have been made over the years. Here is the download link:

http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

Here's just a few things you might not know about:

1) XCOPY deployment. You no longer need to use the Oracle Installer to install. We give you files and you just need to gac a few DLLs and update the registry. To download this version look for the  "ODAC with Xcopy" download in the list.

2) You can use any version of ODP.NET (latest is 11.1.0.6.21) against any version of the database back to 9.2.

3) Multiple versions of ODP.NET can live on the same machine.. so if you choose to standardize against one version for one app and against another version for another app, that is ok.

4) There have been lots of new features for for ODP.NET as well as the Visual Studio tools... too many to list here...here are the product pages for more details, videos, code samples, whitepapers, etc.

ODP.NET:

http://www.oracle.com/technology/tech/windows/odpnet/index.html

Oracle Developer Tools for Visual Studio

http://www.oracle.com/technology/tech/dotnet/tools/index.html

Oracle Providers for ASP.NET

http://www.oracle.com/technology/tech/dotnet/aspnet/index.html

Christian Shay

# Ho Tra said on June 18, 2009 11:03 PM:

imho, another MS move trying to drive shops that use .NET towards monolithic tech stack solution (MSSQL and the rest...).

# Henry Boehlert said on June 19, 2009 2:42 AM:

Say Good Bye to consistent quality. And easy deployment, one might add.

Now, go and refactor, re-write and re-test your applications and try to figure out whether your solution works with all the different versions, patch sets and critical patch updates.

BTW,  what's the ODP.NET versioning scheme of the day? And are those tools out of Beta yet and ready for VS 2008 or later? What does the price tag on support read? Does Standard suffice or would it better be Enterprise?

We had a big discussion back in the days about the db clients we'd support and it was a tough choice.

We were wrong, it goes to show. Now, what other System.* namespaces can we expect to vanish over time?

# Henry Boehlert said on June 19, 2009 2:49 AM:

While I'm at it...

What does that mean for the ORACLE Data Provider in SQL Server Reporting Services?

Do we need to update all reports?

# ODP.NET said on June 19, 2009 2:51 AM:

It's about time.  Oracle's ODP.NET (which does not cost anything extra) works well and has many necessary features that are missing in Microsoft's provider.  For those complaining about deployment, don't forget that Microsoft's System.Data.OracleClient still requires that you install the Oracle Client on the machine, and it's usually the Oracle Client installation that trips up those unfamiliar with Oracle.

# Leuze said on June 19, 2009 4:53 AM:

Really bad news!

We are ALWAYS using the MS .net oracle provider in all our commercial products for the following reasons:

1) it's included in the .net framework (easy install)

2) it offers all the functions we need

3) it's also available with Mono

As far as i know from my last research, ODP.Net IS NOT available in Mono - this is a big problem for us cause we want to port our .net server code to mono to be able to run also on linux boxes.

@Christian Shay:

What is the current status with ODP.Net and Mono ?

# Angel Ochoa said on June 20, 2009 9:51 AM:

Ok, setting the record straight.

For those that are going to deploy a new application I can tell that installing the ODP is not a pain any more.

After downloading the zip file and unpacking it in a folder of choice execute:

install.bat odp.net20 c:\odp odp20

In this case odp.net20 is what you want to install, c:\odp is the folder where you want it installed and odp20 is the name of the new Oracle Home that will house it. Just keep in mind that if you already has any other OracleHome not to mix it with this new one.

# Simone Ferrazzo said on June 22, 2009 5:58 AM:

Microsoft abbandona OracleClient

# Rik said on June 22, 2009 7:13 AM:

I have had both the MS providers and Odp.net working in the Enterpise Library.

We switched to Odp to work round a problem with Clobs in the MS provider but now we have a memory leak on connections; plus ca change I suppose

# The Dark Side of .NET said on June 22, 2009 8:30 AM:

Come si legge qui . "After carefully considering all the options and talking to our customers, partners

# Stefano Demiliani said on June 22, 2009 8:30 AM:

No words... a terrible decision. .NET MUST have a native support for Oracle and OracleClient IS a great product.

Please not to go on this direction...

# STEFANO DEMILIANI said on June 22, 2009 8:38 AM:

Bye Bye System.Data.OracleClient

# Dmitry Lyalin said on June 22, 2009 12:32 PM:

On the Connected Show podcast we just had an episode covering "Project Stonehenge… interoperability!”, but before the main interview started we talked about this announcement: "In this episode we start by talking to Andrew Brust on Microsoft’s move to kill the Oracle Data Provider and how the world is not coming to an end."

If interested, please feel free to check it out

http://www.connectedshow.com/default.aspx?Episode=8

Dmitry Lyalin, Microsoft Corp.

# Aaron Kempf said on June 22, 2009 3:17 PM:

you guys are silly-- move to SQL Server-- it is a better database, it is extremely powerful and cheaper.

anyone that uses oracle today hasnt done their homework.

SQL Server wins every competition between the two

# Joacim's view on stuff said on June 22, 2009 8:53 PM:

About a week ago Microsoft announced that the System.Data.OracleClient namespace will be deprecated in

# Code Monkey Labs said on June 23, 2009 12:28 AM:

Pick of the Week: Resisting Dependency Injection General How PLINQ Processes an IEnumerable<T> on Multiple Cores : Igor Ostrovsky walks us through the different possible implementations of processing an enumerable collection across multiple cores.

# George said on June 23, 2009 1:50 AM:

All my applications are running with OracleClient, and I’m talking about a lot of applications, that are used 24X7. Even my new researches and new developments are designed to use Oracle through OracleClient, because more than one client asks for Oracle as a requirement. I really don´t know which are the clients that you consult to make that decision, it makes me consider to encourage my Java 2EE production line. I really think that is a back step in .Net framework that decision.

# Javier said on June 23, 2009 6:14 AM:

...and of course you wants us to believe that this has NOTHING to do with Oracle´s purchase of Sun Microsystems, the main competitor to .Net with Java?

I think that Microsoft has just decided to punish Oracle, and its customers too. After all, what else would Microsoft want but to tell people "see, using Oracle database means trouble, why not migrate everything to .Net *and* SQL Server and be happy?".

Where is the antitrust investigation when one needs it?

# Jonathan Bruce said on June 23, 2009 2:02 PM:

Connect for ADO.NET from DataDirect Technologies offers a client-less solution for .NET platforms –free from OracleClient or so called Instant Client . Go grab a copy of our install to check out what a true pedigree, 100% managed  provider can offer while supporting the latest .NET technologies such as the ADO.NET Entity Framework provider for Oracle

# Jonathan Bruce said on June 23, 2009 2:06 PM:

Download URL for Connect for ADO.NET - Oracle

http://www.datadirect.com/downloads/main-registration-form/verify/index.ssp?&atc=DDWBDNLDCADONET

# Henry Boehlert said on June 24, 2009 8:39 AM:

@Angel Ochoa

I totally agree. If the installation consists of things like "install.bat", everything will be fine.

BTW, is that then also "uninstall.bat", "repair.bat" and "patch.bat"? (Wait, wasn't that "opatch.bat?")

# Banker said on June 24, 2009 10:06 AM:

@# Jonathan Bruce: sorry, we downloaded a trial and your product sucks. I'll never give money for a product that dont work.

# Joe said on June 30, 2009 4:39 AM:

@# Jonathan Bruce: way too expensive, i really don't understand why you have customers at all when there are free options there. removing the need for the oracle client can't justify your price - but you have customers so i guess everybody is happy :)

# Angel Ochoa said on July 2, 2009 7:19 AM:

@Henry Boehlert

The bat file is just a guideline, if you look into it you will realize that it's rather simple to setup, you can deploy it yourself with little to no pain.

And BTW , yes, there is an uninstall.bat and the install can be used to repair.

# Brett Ryan said on July 8, 2009 7:46 PM:

Just another reason to go back to Java. EF is nothing but marketing rubbish, using it is painful after the first day. .NET has always had a problem with DB vendor drivers, now it's going to get worse.

# Christian Shay said on July 9, 2009 2:27 PM:

Oracle has created a special website for OracleClient developers who are interested in learning about how and why to migrate to the Oracle Data Provider for .NET.. check it out:

http://www.oracle.com/technology/tech/dotnet/msoc/index.html

I also did a blog entry on this subject:

http://cshay.blogspot.com/2009/07/microsoft-deprecates-oracleclient-time.html

Christian Shay

# Jonathan Bruce said on July 9, 2009 3:14 PM:

@Joe

We have a broad spectrum of customers who choose us for many reasons. Superior performance, security, functionality and in particular for Oracle freedom from hassles of OracleClient & InstantClient all stand out - all in a 100% Managed DLL. I'd recommend you go grab a copy of our provider and check out the difference for yourself!

http://blogs.datadirect.com/category/net-connection

@Banker

Your experience seems very usual as we've lots of satisfied evaluators and customers. Why drop me a line below and I'd be happy to have our award winning support team help you out.

http://www.datadirect.com/support/index.ssp

# Raghu Ram said on July 9, 2009 7:23 PM:

Thanks for the input you all have provided. I wanted to respond to some of the questions that have been raised.

1. Some of you are concerned now that OracleClient has been deprecated that you will need to migrate your existing applications to an alternative provider in a short timeframe.

A: If you have an existing application built using OracleClient which shipped as part of .NET Framework 3.5 or earlier, there is no immediate need to change that application; .NET Framework 3.5 will continue to have mainstream support till 2013 and extended support till 2018 (see http://support.microsoft.com/lifecycle/search/Default.aspx?sort=PN&alpha=.NET+Framework for more information) and thus you have 8 more years before support expires. Furthermore, even though we recommend developers to look at alternative solution in place of using OracleClient in .NET Framework 4.0, we will continue to support development against .NET Framework 4.0 throughout the lifecycle for .NET Framework 4.0.

2. I treat warnings as errors. Now if I compile against OracleClient I will get errors. Is it possible to fix this?

A: It is important for us to mark the component as deprecated for the benefit of developers who may not be aware of the deprecation.

However, we realize that marking the component as deprecated can potentially cause a large number of warnings. In order to minimize the number of warnings generated we have marked only the key classes as deprecated. Additionally, the deprecated attribute has been placed only on the class definition as opposed to on every member of the class. This will ensure that the warning is generated only once per method for each class being used in the method as opposed to every time a deprecated member is referenced.

3. When will the warnings be generated, and who will see them?

A: The warnings will be generated only at the time of compiling the source code. No warnings will be generated when the application is being deployed by the DBAs on the server, or on the end user machines. Also, no warnings will be issued when the application is running and there will be no impact to the end-user experience. Only the developers who are compiling the application will see these warnings.

4. I am starting to develop a new application. Which ADO.Net provider for Oracle should I use? Does Microsoft have a recommendation on which provider to use?

A: No, Microsoft does not recommend any specific ADO.Net provider.  However, here is the list of known vendors that have the alternative offering:

Oracle : http://www.oracle.com/technology/tech/dotnet/msoc/index.html

DataDirect Technologies : http://www.datadirect.com/index.ssp

OpenLink: http://www.openlinksw.com/

Devart: http://devart.com/dotconnect/

Raghu Ram

Principal Group Program Manager - SQL Connectivity

Microsoft Corp.

# Dvemil said on July 14, 2009 5:56 AM:

We can not move from Oracle to MS SQL.

So we have to move from .Net to Java.

It's hard to understand. MS again punish loyal developers.

# James Mansion said on July 14, 2009 6:48 AM:

Perhaps its a chance to sling the code over the fency with an MSPL license and let people get on with it as they see fit?

# chadbr said on July 15, 2009 2:05 AM:

This is bad news. It might save MS some money, but it will cost us and our customers a lot of time and money.

Please reconsider.

# DBA not Developer... said on July 15, 2009 8:06 PM:

Will the .NET Framework 3.5 work with 11g Oracle Client? We have plans to migrate to 11g and are unable to determine if 11g will be compatible.

# llorracj said on July 16, 2009 7:09 AM:

Microsoft stopped supporting this product a long time ago. I reported a bug over three years ago and have yet to receive any sort of a meaningful reply - Oracle client always returns Nothing (null) when a Execute Scalar is invoked using a stored procedure.

# Jens Jacobsen said on July 17, 2009 6:28 AM:

With Oracle in charge of Java the only long term solution for us ISVs is to use Java together with oracle. How do we know that oracle will not GPL the ODP.NET client or play other tricks like cut performance or whatever? Using .NET with oracle is for sure going to be a hard sell no matter what, before this announcement we could always say: "Microsoft supports the oracle client connectivity so what is there to worry about?" now it is "Oracle supports .net and they maybe have intentions of keep doing that in the future"

As for using DataDirect, well it costs $4,812.98 per CPU core you are going to deploy on so for a (one) midsized server its $77K this is so far out.

Without a competing "big name" implementation ODP.NET will cost money in the future and it will be expensive so that oracle can say Java is free, look at how expensive dotNET is to use, and the customers will agree. Oracle customers are in general more loyal to the oracle database than to anything else, and will blame any bugs on the applications  What this means for us ISVs is that we will have to move from dotNET to Java because the bet has changed from betting on technology to betting the company.

# Steve J. Laye said on July 18, 2009 7:52 AM:

SQL server is much more better than this. Symtex are an expert database consultancy and development provider. We live, breath and eat Microsoft SQL Server and .Net programming day and night; really we love it and it's that passion which keeps us at the top.

# Software Wrench said on July 27, 2009 12:59 PM:

I have been using ODP.NET since my first integration of .net to oracle many years ago.  It is free and stable and is created by the provider for .net.  Come on complainers, it works great, you can not expect MS to develop client tools for every database out there.  I think those tools should be provided by the database entity, they are the experts of there own database btw.  I use oracle for .net, db2s client for .net.  Oracle also has a great support for their tools.

# Alvonics said on July 27, 2009 9:24 PM:

I am not sure why people are whining so much about this. Have they looked at the fact sheets? The technical information link has been provided in the previous posts many time.

1. ODP.Net is free.

2. ODP.Net is fully supported by Oracle, and Oracle claims it will be free forever.

3. Oracle claims it has a larger developer community then Microsoft OracleClient. This is important for your problem solving.

4. ODP.Net is more integrated into Oracle databases and out-performces Microsoft OracleClient in many development areas.

5. ODP.Net is way more up-to-date than OracleClient in terms of patches and fixes for all versions of Oracle databases.

6. OracleClient will continue to work in the next 8 years.

I don't know how those people claimed they trusted and used Microsoft OracleClient would explain if their vendors/clients asked them "Why haven't you used ODP.Net to develop our applications and boost the performance?" Would they just say, "Oh, we trust Microsoft and OracleClient is free!" Or "We only know OracleClient".

Anyway, you have the next eight years. If you stop whining now, I am sure there will be enough time to migrate your technical skills to a better tool.

# Jose Luis Chavez del Cid said on July 27, 2009 10:19 PM:

@Alvonics: I don't know why are you bit#$ Slaping at everyone. If thats the way you deal with developers as a boss I would have fired you immediately.

---

I don't care about ado.net providers since I don't use EF, NHibernate, Linq, etc. I just plain old PL/SQL. And just use the provider as the data channel, by using Enterprise Library 4.1 or the DataProviderFactory.

I would not use DataDirect because of the conversion from standar query to bound variables it does with Oracle, at the Guatemala Social Security Institute we had to deprecate the use of it, since it impacted on data type mismatches and forced full table row scans.

ODP.NET It's a good one, but as usually oracles always take to long to build de 64Bit version and only deliver beta releases for a long time, the 32Bit versions can't be used on 64Bit OS's so you have to stay with the last released 64Bit or use 32Bit OS's. That's the only thing that has happened in the past, but It works verywell.

# Loukoum said on July 28, 2009 3:52 AM:

This decision is a good reason not to use .NET 4.0.

I don't want to waste time in ODP when I can simply use OracleClient, which works perfectly indeed. Simplicity is beautiful...

This is a really bad choice. Did Oracle push Microsoft to deprecate OracleClient ?

# Iliya Tretyakov said on July 28, 2009 4:41 AM:

Stupid ODP.NET! DBNull.ToString() == "null" and so on.

Oh my God! Microsoft killed Kenny! You bastards! :)

OK, OK... Let's use ODP.NET

# Ian Ringrose said on July 28, 2009 4:50 AM:

@ Jonathan Bruce

I have looked at DataDirect in the past, but as each of our customers will have to buy it, it is not an option.   If it was affordable for a ISV the price would be on your website.  As it is necessary to ask the price, it is clear we can not afford it!

# Ian Ringrose said on July 28, 2009 4:52 AM:

Hi Christian Shay

As to ODP.NET now being better….

What if the customer has another application on the same machine that has installed an older version of ODP.NET?

XCOPY != just need to gac a few DLLs and update the registry !!!!!!!

XCOPY == compiler my app, copy it and all the dlls from the bin directory (to the customers PC), edit the database connect string, run  (and nothing else)

(Having to install ANY oracle software on a PC so it can talk to a Oracle sever is not good enough.)

# Ian Ringrose said on July 28, 2009 4:54 AM:

My past experience with ODP.NET is that (like most oracle) software it is very hard to install.   In one job when it was used, every install would lead to many hours having to work out problems in the GAP in addition to the normal problem of getting an oracle client working (the 101 config files to edit that no two DBA can agree on what should go in each)

As we have both Oracle and SqlServer customers, we build a single exe that works with both Oracle and SqlSever.  Are we meant to now make our SQL server customers install ODP.NET?

If we had wrote the application in Java, our life would have been a lot less painful.  As Microsoft ships a set of PURE Java classes to talk to SQL server, so no install is needed for SQLServer.  Oracle also LOVES Java so make it easy to setup a Java app to talk to an Oracle server.  (And it is easy to get Java developers that understand Oracle)

So it is looking like any app that *may* need to target Oracle should be written in Java.

(PS, if we did not support SQL Server we may not loose any sales, however if we did not support Oracle we would loose BIG sales as a lot of Oracle DBA will not allow SqlSever on “their” network)

That fact that none of the many ORM that Microsoft ships work with Oracle out of the box, is yet another reason for a company that may need to support multiply database to look to Java.   (Using an open source ORM with .NET stops most of the new frameworks from Microsoft working.)

So Microsoft, if you wish vertical market ISV to keep writing new applications on .NET you had better sort out this mess, how about buying DataDirect and including DataDirect as part of the next .NET framework?

# Simon P Stevens said on July 28, 2009 6:11 AM:

This is a terrible decision in my opinion. Connectivity with a hugely popular database is critical. 3rd party support is simply not good enough. You can't include paid for alternatives in your analysis as you are effectively replacing something that was free with something that costs.

You claim that "many of the third party providers are able to consistently provide the same level of quality and support". In your recommendations and guidance you need to be able to suggest a suitable alternative that provides the same level of quality and support at the same cost (free). If you can't do that then your statement is totally worthless.

Perhaps you should stop supporting internet explorer too because there are equally good third party alternatives.

# Brian P said on July 28, 2009 9:55 AM:

This is bad!  Most of our applications are using the system.data.OracleClient!  If I knew Microsoft was going to do this I would not have used it to begin with. Now we have a bunch of rework and have to pay extra $$$ for a 3rd party provider???

# Darkmere said on July 28, 2009 10:13 AM:

Might as well just rewrite this #@%$@ in J2EE now ;(

# Jörg Lang said on July 28, 2009 10:36 AM:

I checked my calendar to make sure, that it is not April fools day. This can not be serious.

We have large Oracle applications that we want to use for the next years, meaning with .NET frameworks after 4.0.

And now we are told, to invest (huge) amounts of time and money to replace the good and stable OracleClient provider with some other, usually less stable provider? And for what? Only to have the same functionality in the app that we have today? You do not have to be accountant to find and that this does not pay off.

For ISV that write database applications it's like saying we will deprecate the command buttons and the grid in WinForms, because there are third party vendors that provide controls with the same functionality.

This decision should be reconsidered.

# Ian Ringrose said on July 28, 2009 10:52 AM:

see also http://stackoverflow.com/questions/1193066/how-to-write-a-net-application-that-works-with-both-sqlserver-and-oracle

# Christian Shay said on July 30, 2009 7:11 PM:

Hi Ian,

One way to *easily* ensure that the required Oracle client side software (including ODP.NET) is always available on the deployment machine is to embed it with your application. ODP.NET has gotten a *lot* easier to embed now that XCOPY ODP.NET is available. You can download it from this link:

http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

With XCOPY ODP.NET,  all you need to do when you deploy your application  is the following:

1) Copy your application to the target machine

2) Run "install.bat" which copies a couple of Oracle DLL's to the target machine (including ODP.NET and the Oracle client side (OCI) software)

3) Run "configure.bat", which does a "gacutil" and updates the registry of the target machine

4) Provide your application with connect string  information. You can use the EZCONNECT connect string ("hostname@servicename")  or you (or your customer) can share preexisting sqlnet configurations by setting the TNS_ADMIN registry entry or environment variable to point to another Oracle home that has sqlnet connect aliases already configured.

That's it! It is really that simple.

I hope you will take a good look at ODP.NET XCOPY in the link above to see for yourself how easy it is these days to embed ODP.NET with your app.

Additional notes:

If you choose not to embed ODP.NET with your application, in both the case of Microsoft OracleClient and in the case of ODP.NET, there needs to be additional Oracle client side (OCI) software installed on any deployment machine. The only difference between the two cases is that when you are using ODP.NET,  it also needs to exist on the deployment machine. The good news is that a typical Oracle install on your customer machine will include ODP.NET already.

Now, if your target machine already has ODP.NET installed you don't need to do anything else. You just need to distribute your application. If you do need to install ODP.NET using the standard installer, you can also download it from the link provided above. The standard ODP.NET install only takes a few minutes and configures everything for you.

And again, you can use EZConnect connect strings to make networking configuration a piece of  cake, or use the TNS_ADMIN registry entry or environment variable to take advantage of pre-existing connect aliases that your customer is already used to using.

Hope this helps,

Christian Shay

Oracle

http://cshay.blogspot.com/

# Devart said on July 31, 2009 6:43 AM:

Devart offers fast and reliable ADO.NET provider for the wide range of users. One can choose the best Edition of our provider to fit his or her needs. For example:

- You don't need advanced functionality and you don't have money to spend - then free Express Edition is just for you. It offers functionality similar to the one of Oracle Client, it is free and easy to install. All you have to do is to place two assemblies in GAC.

- You want to develop and deploy database applications with ease? - Get our Standard Edition with design time support, profiler for monitoring queries that are being executed in the application, and the ability to work without Client Software installed.

- You want more advanced features, you need all the functionality Oracle can give? - Then Professional Edition with  the newest Microsoft and Devart technologies implementation will put them at your fingertips! In it, strong points are Entity Framework support implemented since the release of the first Beta, LINQ to Oracle, and, above all, Entity Developer -  our own tool for building LINQ and Entity Framework models, functionality and convenience of which exceed those offered by the standard ones a lot. You are also welcome to take advantage of using Oracle advanced functionality, ASP.NET 2.0 providers, SQL Server Business Intelligence Solutions, Enterprise Library and much more with our ADO.NET provider for Oracle.

You are not sure if you can rely on the quality of third-party components? With us you will get regular builds with fixes every two or three weeks and fast comprehensive support from our team that will help you resolve any issue.

Besides, the interface of our provider is compatible with System.Data.OracleClient. We are sure that with the supplied Migration Wizard tool and our support migration of your project will be fast, easy, and convenient.

<a href="http://www.devart.com/dotconnect/oracle/download.html">Try it out!</a>

# Juan Marin said on August 4, 2009 5:58 PM:

Yet another reason why I like the backwards compatibility of the Java platform.

# som_nitjsr said on August 5, 2009 6:19 AM:

really its very-2 disappointing.

I have use ODP.net really verry pain full due to version problem there are lots of dependency.

it takes 2-3 days to fix a issue.

# April said on August 6, 2009 11:07 AM:

DataDirect has been building the fastest, highest quality data connectivity components for relational database access for more than 20 years. Our products are not free, but customers license them because the businesses benefits they experience with DataDirect products far exceed the cost. We encourage anyone to download a free trial to see for themselves how DataDirect’s products compare with any alternative on the market and experience the benefits of our technology first-hand.  

http://www.datadirect.com/products/net/beta/index.ssp

# Brian said on August 11, 2009 5:00 PM:

Decisions like this are made all the time because financial matters rule a free market economy; not science, engineering, or even common sense if you consider the factors that contributed to the current economic conditions.

While some may not like decisions like this, myself included since my company uses Oracle database technology and the Microsoft data provider, it is a common reality that computer scientists, software engineers, software developers, and the like, should take to heart and seriously rationalize how systems are built and maintained in light of these conditions.

Too few of us think about these conditions and simply jump at the easiest to implement and lowest cost. No matter which way you bend, Microsoft or Oracle, .NET or Java, proprietary or open-source, there is no guarantee you will not face one of these situations at one time or another. Take it as a learning experience and don't get caught with your pants down again.

# Angel "Java" Lopez said on August 12, 2009 8:51 AM:

Microsoft opportunity: put OracleClient as open source, publish it at CodePlex, I guess there is an enthusiast community ready to support it.

# jonnie savell said on August 15, 2009 7:17 PM:

I would like to ask you to refrain from telling people that you have done this in the interest of users.

I am telling you that this did NOT help me.

So, just be honest and admit that you are orphaning yet another product.

# Sing Abend said on August 26, 2009 10:36 AM:

What?? We just started QA and now this? It's the only driver that could do what we wanted. the oracle capable ODP version is still in Beta. Security tools such as papaSec simply block ODP and some arhitects demamnd nothing but Microsoft very own." No third party" Any chance Microsoft could buy Oracle in the near future?

# Will Smith said on August 26, 2009 10:37 AM:

I wanted to clarify something...  the 11g Oracle Client (and ODP) will run against various database versions (back to 9.2?).

The problem is that if you compile your application against the 11g version of the ODP library, then you must have 11g client installed wherever you deploy your software.

With MS OracleClient, this was never a problem.  The MS library would work regardless of which Oracle client you had installed.

Does anyone know how to bind to a ODP generically?  That is, without specifying the version?

# Devart said on September 7, 2009 9:42 AM:

Now you can migrate your application from OracleClient to Devart dotConnect for Oracle in two single steps. For more information please refer to this article http://www.devart.com/blogs/dotconnect/?p=67

# TexasCayenne said on September 14, 2009 3:19 PM:

You should really look at DataDirect for independent database access.  We compared them to Oracle's provider and found A LOT of reasons to embed their products.  Their performance and support were the top reasons.  They have been in business with ODBC, JDBC, and ADO.NET technology for 15+ years so they are doing something right.

We were concerned with cost as well, but after just talking to their sales reps, we came up with an agreement that really is cost effective for us.  We're not a big ISV either!!!

I'm really glad we made this decision since I do have flexibility to switch databases if needed with their ADO.NET technology.   What I like more than anything is that I'm NOT locked into Oracle or MS at all.  

# Christian Shay said on September 16, 2009 5:43 PM:

Hi Will Smith,

Yes ODP.NET 11g will work with databases back to Oracle 9.

Please see my comment to Ian up above about how to use the XCOPY version of ODP.NET. I think it may solve your concerns about having the right client software available on the machine you target.

Xcopy download (new production version just released!):

http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

Special Oracle web site for OracleClient users:

http://www.oracle.com/technology/tech/dotnet/msoc/index.html

Christian Shay

Oracle

# Zaks said on October 2, 2009 5:54 AM:

I am not sure this all together good.

We are an Oracle  shop, but we have had major problems with ODP.NET. We are revisiting the  decision and looking to use System.data.Oracle.NET. ODP.NET  worked ok with client/server applications , but with 24x7 services it was totally unreliable.  

In one area we found  Oracle was not designed to allow connection pooling they seemed to bolt something on to support .NET  to support stateless applications, we never really got it to work with 9.2 .

Typically we got issues around data base connections, we got all sorts of problems with  memory leaks , orphaned connections and transactions  that could not be closed  other than by killing the applications.  Even in client server appllications it brought the machine to its knees, to get round some issues we were forced to  invoke the  garbage collector  and manually destory instances which all goes against the philosphy of .NET.  

I have to say things improved a lot with later versions but it all pointed to the fact that ODP.NET is not itself designed as  manged code from the ground up.

Of late we have found that we can't use 10.2 with our strongly typed datasets, ( fixed  with 11g).

I know people  say it works with a 9 or 10g data base, but does it work with 9i client, 10 g client or have we got to have 3 versions of the SQLNET clients with the associated homes to manage. This is not a nice prospect when we are looking at Smart client deployment.

We also  found  ODP.NET at time was  behind the development curve, so a new version of .NET framework we had to wait for Oracle to catch up.

Smart client is another area where Oracle don't make it easy, it would be better to get Oracle clients installed and managed  the same as MSSQL clients.

What worries us most  is the lack of support of Oracle on various Windows operating systems. So my understnading is 11g is limited to a few windows operating systems.

It is a shame because  ODP  is richer (in parts) better support for  various .NET features.

I would love to fix on  one version, but cons of ODP.NET make it a difficult decision. You can live and work around less functionality but not you can't work round the support issues.

# chris said on October 19, 2009 3:45 PM:

ah, gotta love microsoft for not knowing when they have a good thing going. they did it to vb(6), classic asp, .net 1.x, datasets /asmx web services, now oracle client. (if i had a dollar for every time i had to rewrite the same stupid app! -- i'd have used php)  if they're gonna be that way, i guess i'll just keep compiling as framework 2.0 and leave it at that. until the whole .net framework is depreciated, that is.  heck, even windows xp is "depreciated" and only available to businesses as a downgrade license, as a way to force people to buy vista, which nobody wants.  

Leave a Comment

(required) 
(optional)
(required) 

  
Enter Code Here: Required

Search

This Blog

Syndication

Page view tracker