Instalace přístupu k Oracle Database na 64-bit Windows

Jan Holan       20.11.2012       IT       16508 zobrazení

Oracle Client providers

Pro přistup k Oracle Database serveru z .NETu jsme mohli používat ADO.NET třídy v namespace System.Data.OracleClientv assembly System.Data.OracleClient.dll. Tento namespace je však od FW 4.0 označen za deprecated (zastaralý). Microsoft ho už nepodporuje, a dá se očekávat, že bude v některé následující verzi .NET Frameworku odstraněn úplně (nicméně ve verzi 4.5 se tak ještě nestalo).

V msdn se dočtete, že jako náhradu máme používat third-party provider přímo od Oracle. Tento provider se jmenuje Oracle Data Provider for .NET, zkráceně ODP.NET. Provider je obsažen v assembly Oracle.DataAccess.dll a jeho třídy jsou v namespace Oracle.DataAccess.Client.

Kromě Microsoft a Oracle ADO.NET providerů existují i jiné, jako DataDirect nebo DevArt, ty jsou však placené.

Instalace klienta Oracle Data Access Components na x64 Windows

Pro přístupu k Oracle Database (ať už z .NETu nebo z jiných aplikacích) musíme nainstalovat Oracle client software (přesněji komponentu Oracle Database Instant Client). Nejjednodušší je pro klientský počítač použít jediný instalační balíček s názvem Oracle Data Access Components (ODAC), který kromě Oracle Instant Client obsahuje zároveň i ODP.NET provider.

Pozn.: Balíček ODAC lze instalovat i přes existující instalaci Oracle Database Client, která oproti ODAC obsahuje některé klientské nástroje. Pro přístup k Oracle Database jinak ale tuto instalaci nepotřebujeme.

Nyní zde popíši postup instalace Oracle Data Access Components (ODAC) na 64-bit Windows operační systém. Aby totiž fungoval přístup jak z x86 i x64 procesů je potřeba nainstalovat obě verze ODAC, a to do rozdílných adresářů.

  1. Nejprve začneme s 64-bit ODAC instalaci, z těchto stránek stáhneme balíček 64-bit ODAC for Windows x64 (v době psaní článku se jedná o verzi 11.2 Release 5 - 11.2.0.3.20, soubor ODAC1120320_x64.zip).
  2. ZIP soubor rozpakujeme a spustíme instalaci.
  3. Zvolíme instalaci Oracle Data Access Components for Oracle Client.
  4. Můžeme změnit výchozí umístění, já jsem použil hlavní umístění C:\Oracle, OraClient11g_home_x64 Oracle Home a C:\Oracle\product\11.2.0\client_x64 Oracle Home directory.
  5. Zvolíme instalované komponenty, pokud vám stačí minimum, zaškrtněte pouze Oracle Data Provider for .NET, Oracle Provider for OLE DB a Oracle Instant Client.

Components

  1. Potvrdíme a necháme instalaci doběhnout.
  2. Nyní stáhneme 32-bit instalaci zde,  balíček ODAC with Oracle Developer Tools for Visual Studio (v době psaní článku se jedná konkrétně o soubor ODTwithODAC1120320_32bit.zip).
  3. ZIP soubor rozpakujeme a spustíme instalaci, opět zvolíme Oracle Data Access Components for Oracle Client.
  4. Hlavní umístění nastavíme stejné jako při instalaci 64-bit verze, ale je zde nutné zvolit jiný Oracle Home  a hlavně jiný Oracle Home directory, například OraClient11g_home_x86 a C:\Oracle\product\11.2.0\client_x86.
  5. Zvolíme stejné komponenty jako u 64-bit instalaci, navíc je zde možnost nainstalovat Oracle Developer Tools for Visual Studio.
  6. Instalaci necháme dokončit.
  7. Do obou Oracle home adresářů do podsložky Network\Admin (tedy c:\Oracle\product\11.2.0\client_x64\Network\Admin a c:\Oracle\product\11.2.0\client_x86\Network\Admin) nahrajeme nebo vytvoříme soubor TNSNAMES.ORA s informacemi pro připojení k Oracle Database server. Vzhledem k absenci nástrojů musíme soubor vytvořit ručně, není to ale nic složitého (pro pomoc můžete využít  tento příklad).

Ověření funkčnosti

Funkčnost instalací a správné nastavení TNSNAMES.ORA můžete ověřit nejprve připojením pomoci příkazu sqlplus user/password@addressname, například tedy:

sqlplus sys/manager@ora11 as sysdba

A přístup z .NETu přes ODP.NET provider následujícím kódem:

private void Test()
{
    string connectionString = "User Id=sys;Password=manager;Data Source=ORA11;DBA Privilege=SYSDBA";

    Oracle.DataAccess.Client.OracleConnection connection = null;
    try
    {
        connection = new Oracle.DataAccess.Client.OracleConnection(connectionString);
        connection.Open();

        using (var reader = new Oracle.DataAccess.Client.OracleCommand("SELECT * FROM dba_users", connection).ExecuteReader())
        {
            while (reader.Read())
            {
                string username = (string)reader["username"];
                Console.WriteLine(username);
            }
        }
    }
    finally
    {
        if (connection != null)
        {
            connection.Close();
        }
    }
}

Do projektu musíme přidat referenci na assembly Oracle.DataAccess.dll, která se nám instalací zaregistrovala do GAC (z adresáře c:\Oracle\product\11.2.0\client_x86\odp.net\bin\4).

Pokud vše proběhlo v pořádku, bude kód funkční jak pod nastaveném Any CPU tak i pod x86.

Pozn.: Při kompilaci pro Any CPU se může zobrazit následující warning: There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86", "x86",
ten můžeme ignorovat, protože proces opravdu bude x64 na 64-bit systému a použije se správný Oracle client.

 

hodnocení článku

0 bodů / 1 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback