Accessing different Oracle versions from C# applikation — oracle-tech

    Forum Stats

  • 3,716,136 Users
  • 2,242,961 Discussions
  • 7,845,842 Comments

Discussions

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Accessing different Oracle versions from C# applikation

JJespersen
JJespersen Member Posts: 3
edited March 2018 in ODP.NET

Hi folks,

I'm new to Oracle development. There, I said it. I've been accessing MS SQL databases for a llllooooonng time, but this Oracle stuff is getting to me. But I'm not here to start a bitchfight, just to get some pointers, hints, ideas or examples for how to solve my problem. Then I will love Oracle for as long as we both shall live.

So....

I have to different Linux servers, Server A running Oracle 9.2 and Server B running Oracle 12.2.
I also have a Windows Server (2008R2), on which i need to run an application. The application is very simple. Read data from DB on Server A, and insert into DB on Server B.

Now, as I understand it, database links between 9.2 and 12.2 are not possible, and from my (limited) experience, I cannot use the same driver/provider from C# for accessing both 9.2 and 12.2.

What would be the basic, ideal approach for solving this. What are the prerequisites (drivers, providers, clients (yes, I'm confused about these)) that are needed?

Any input is very welcomed.

Thanks,
J.Jespersen

Answers

  • Alex Keh-Oracle
    Alex Keh-Oracle Posts: 2,753 Employee
    edited March 2018

    I'm going to assume you are building an app, not trying to migrate from 9.2 DB to 12.2 DB. Migration is simpler with a tool, such as SQL Developer to Golden Gate, that is purpose-built with moving data between Oracle DB versions. ODP.NET is a data access API.

    If you need one ODP.NET version that works with both DB 9.2 and 12.2, I would recommend using ODP.NET 11.2. It supports connecting to both these DB versions. ODP.NET 12c only go back to DB 10.2 support. ODP.NET 11.2 is certified for Windows 2008 R2.

    For a beginner, I would recommend using managed ODP.NET, which is a 100% managed code driver. Unfortunately, we didn't start shipping managed ODP,NET until 12.1.

    Unmanaged ODP.NET is a little more complicated to setup, but isn't too difficult for a beginner. We no longer host ODAC 11.2 on OTN, but you can use the DB 11.2 client download. Make sure to download the client, which is much smaller than the DB download. After that, you'll need to setup connectivity with EZ Connect or a connect descriptor.

    Installing ODP.NET will give you the requisite Oracle Client. Next, you need to provide the DB connection info into your app. Easy Connect is the quickest way to do so.

  • JJespersen
    JJespersen Member Posts: 3
    edited March 2018

    First of all, thanks. Second..... (head explodes).

    So, I downloaded win64_11gR2_client software, but am having trouble running the installer. The installation starts, but I get an "INS13001 system does not minimum requirements".   Uhmm.... minimum requirements for a driver??

    Anyways, if I ignore that, and start the installation anyways, regardless of the installation type (all the way down to just installing Oracle.Net in a Custom installation), the installer closes, after (for about a milisecond) flashing a "central inventory is not locked" message. What the....

    Is there not a simple way to simply copy the required dll to my Visual Studio solution and getting on with things? Asking for a friend ;-)

    -Jeppe

  • Alex Keh-Oracle
    Alex Keh-Oracle Posts: 2,753 Employee
    edited March 2018

    Here are the terminal 32-bit and 64-bit ODP.NET downloads for 11.2. Agree to the license at the top, then scroll to the bottom of each page to download.

    These are both xcopy deployable, which means no GUI, but install is guaranteed.

  • JJespersen
    JJespersen Member Posts: 3
    edited March 2018

    Hi again :-)

    I downloaded the 11.2 binaries, unpacked and referenced the .dll directly in my application, but still I get the "ORA-03134: Connections to this server version are no longer supported." message.


    I used reflection in my application and found that it still uses 2.121.1.0 instead of 2.112.4.0, and then tried assembly redirection in my app.config file, but it insists on using 2.121.1.0 for some reason. All redirection info is simply ignored:

    <configuration>

      <runtime>

        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

          <dependentAssembly>

            <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342"/>

            <bindingRedirect oldVersion="2.121.1.0" newVersion="2.112.4.0"/>

          </dependentAssembly>

        </assemblyBinding>

      </runtime>

    </configuration>

  • Alex Keh-Oracle
    Alex Keh-Oracle Posts: 2,753 Employee
    edited March 2018

    I suspect what is happening is the Oracle publisher policy in the GAC are forcing your app to use the latest ODP.NET DLLs, overriding the redirect you set up. You can remove the 12.1 publisher policy from the GAC and that should allow you to redirect to ODP.NET 11.2.

    In the future, I would recommend you install ODP.NET 12.1 in non-machine-wide configuration mode, which you have the option to do in later ODAC 12.1 versions. That will ensure you don't hit this problem again. Keep in mind, if you do install ODP.NET 12.1 in non-machine-wide mode, then you will have to add some additional configuration in your app/web.config file. This additional configuration sets up the ODP.NET Configuration Section Handler and DbProviderFactories.

This discussion has been closed.