First of all clarification:
You have an Oracle Database Server (you called it "back end oracle database") and an Oracle Client (no matter if this is installed on an application server, from Oracle point of view, it is the client)
The version of ODP.NET (Oracle Data Provider for .NET, i.e. the Oracle.DataAccess.dll and some more files) are defined by the Oracle Client. You can use almost every ODP.NET version to connect to every Oracle database version - more or less.
The error message "The provider is not compatible with the version of Oracle client" could also mean there is no ODP.NET provider installed at all. In this case the error message is indeed a bit misleading. So, first check if ODP.NET is installed at all, it is not included in standard Oracle Instant Client installation.
When I check all available downloads from Oracle you have ODP.NET version
- 9.something
- 10.something
- 1.x
- 2.0
- 4.0
9.? and 10.? refers to version of Oracle, 1.x, 2.0 and 4.0 refers to version of Microsoft .NET Framwork (strange numbering, but that's how it is). Version 9.? and 10.? are very old, I don't think it makes any sense to use them. 1.x was supported until Oracle client version 11.1.
- If your Oracle client is 11.2 or higher you are forced to include ODP.NET version 2.0 or 4.0.
- If your Oracle client is between 10.2 and 11.1 you can use eiter ODP.NET version 1.x or 2.0
- If your Oracle client is older than 10.2, I don't know how it works - it's outdated anyway.
Version 1.x and 2.0 are not compatible to each other, i.e. perhpaps you have to provide two different setup files of your application to your customer and the customer has to select the correct one depending on his local oracle client installation.
I don't know the situation for 2.0 vs. 4.0, I never used 4.0 so far.
It is not required to put a local copy of Oralce.DataAccess.dll into your application directory. It will be taken from GAC (Global Assembly Cache) where it is installed.
In your developing you only have to take care only these mayor version, for example 2.0.
Then your loal GAC knows due to policy files which exact version is loaded, e.g. 2.0.10.2.0.2.20 or 2.0.11.1.0.6.20 or 2.0.11.1.0.7.20 or 2.0.11.2.0.1.2 or whatever.
On top of this all you have to know whether your Oracle client is 32bit or 64bit and include ODP.NET accordingly.
Here you can get more information: Oracle Data Provider for .NET FAQ