none
Was benötige ich, um aus einer Webanwendung auf eine Oracle-Datenbank zuzugreifen ? RRS feed

  • Frage

  • Hallöchen,

    ich will von einem ASP.NET Webpart auf eine externe Oracle 9.2 Datenbank zugreifen. Ich habe es mit ODBCConnection versucht und als Driver "Microsoft ODBC for Oracle" angegeben (ist auch unter den Treibern in der Version 2.576.3959.00 vorhanden). Ich bekomm allerdings die Meldung "The Oracle client and networking components were not found. These components.... ". Muß ich wirklich den gesamten Client (die version 9.2 gibts bei oracle.com nicht mehr) herunterladen - was mehrere 100 MB sind - um Queries an die DB zu schicken, oder gibts da eine schlankere Lösung ?

    Gruß
    Niels
    Dienstag, 3. November 2009 12:46

Antworten

Alle Antworten

  • Hallo Niels,

    um die Antwort möglichst kurz zu halten: Ja, ohne Oracle Client geht es nicht. Du kannst auch Oracle 11g nehmen, funktioniert genauso gut

    Schöne Grüße
    Oliver
    Dienstag, 3. November 2009 13:31
  • Hallo Niels,
    Muß ich wirklich den gesamten Client (die version 9.2 gibts bei oracle.com nicht mehr) herunterladen - was mehrere 100 MB sind - um Queries an die DB zu schicken, oder gibts da eine schlankere Lösung ?
    siehe hierzu: http://www.oracle.com/technology/tech/windows/odpnet/index.html und http://www.oracle.com/technology/tech/windows/odpnet/faq.html#install , da ist eigentlich alles relativ gut erklärt. Ggfs. solltest Du dir auch mal das hier http://www.oracle.com/technology/tech/dotnet/tools/index.html anschauen, wenn Du mehr mit Oracle machen musst.

    Die ODP.NET Installation sollte eigentlich alles beinhalten, was Du für den reinen Datenzugriff aus .NET heraus brauchst, das sind aber nicht mehrere 100 MB, eher so um 50 MB.



    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert N_F Mittwoch, 4. November 2009 14:03
    Dienstag, 3. November 2009 14:17
    Moderator
  • Hallo Oliver,

    habe mir jetzt mal den 11g Client für Win32 heruntergeladen (nur den Client, ohne Clusterzeugs, Beispiele und was es da nicht alles gibt). Welche Komponenten muß ich jetzt installieren, damit es klappt? Ich kann ja quasi alles abwählen, bis auf den "Oracle ODBC Driver 11.1.0.6.0". Würde das reichen?


    Gruß
    Niels


    edit :
    @Stefan,

    danke für die Links, habe ich zu spät gesehen =)
    Das mit ODP.NET hört sich sehr interessant an, werde ich mal antesten und Bescheid geben obs geklappt hat. Für eine VS Erweiterung lohnt es sich bei mir noch nicht.

    Dienstag, 3. November 2009 14:35
  • Hallo Stefan,

    ich gebe Dir Recht, dass das ODP.NET Paket die beste Wahl ist. Die ODP.NET Installation beinhaltet aber auch den Client. Den ohne Oracle Client (mit dem TNS-Listener) findet keine Anwendung den Weg zum Server.

    Schöne Grüße
    Oliver

    P.S. Das Installationspaket ist zirka 130 MB groß
    Dienstag, 3. November 2009 14:47
  • Hallo Oliver,
    P.S. Das Installationspaket ist zirka 130 MB groß
    der Download, den ich eben gestartet hatte (ODP.NET mit XCopy Deployment Zeugs) war ca. 49 MB. Ggfs. hast Du den mit den Visual Studio Addons, ... genommen, der ist verständlicherweise "etwas" größer :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 3. November 2009 16:33
    Moderator
  • Hallo Stefan,

    Oops ich hätte auf die OTN Seite gucken sollen und nicht in das Archivverzeichnis mit meinen Downloads. Das Paket was ich meinte ist für das Visual Studio.

    Schöne Grüße aus Berlin
    Oliver
    Mittwoch, 4. November 2009 13:45
  • Habe jetzt mal das ODP.NET heruntergeladen und nach Anweisung in der readme installiert. Leider taucht die Referenz Oracle.DataAccess nicht in der .NET Kartei auf (übrigens, wo/wie wird bestimmt was hier auftaucht?), also mußte ich die dll händisch hinzufügen. Blöderweise kann ich nicht sagen obs funktioniert, weil die Firewall auf dem Server für mich noch nicht offen ist. Aber zumindest krieg ich jetzt Fehler vom Format "Connection Timed Out" und keine "No Oracle Client/Provider found" mehr :-)

    Gruß
    Niels
    Mittwoch, 4. November 2009 14:03
  • On 03.11.2009 13:46, N_F wrote:

    > ich will von einem ASP.NET Webpart auf eine externe Oracle 9.2
    > Datenbank zugreifen. Ich habe es mit ODBCConnection versucht und als
    > Driver "Microsoft ODBC for Oracle" angegeben (ist auch unter den
    > Treibern in der Version 2.576.3959.00 vorhanden). Ich bekomm
    > allerdings die Meldung "The Oracle client and networking components
    omponents.... ". Muß ich wirklich den gesamten
    > Client (die version 9.2 gibts bei oracle.com nicht mehr) herunterladen
    > - was mehrere 100 MB sind - um Queries an die DB zu schicken, oder
    > gibts da eine schlankere Lösung ?

    Ich habe für meine Web-Anwendung den Oracle Instant Client verwendet
    (http://www.oracle.com/technology/tech/oci/instantclient/index.html).
    Den gibt es als ZIP-Datei zum Download (z.B. für Win32 unter
    http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html).Daraus
    brauchst du aber nur die folgenden DLLs: orannzsbb11.dll, oci.dll,
    oraocci11.dll und oraociicus11.dll.

    Der Zugriff auf Oracle-Datenbank kann seit .NET 2.0 über den von
    Mircosoft bereitgestellten Provider "System.Data.Oracle" erfolgen. Damit
    der funktioniert braucht man eben diese DLLs.

    Zugriff kann dann in .Net wie folgt aussehen:

    public static bool ExecuteQuery(string sql, string connectionString)
    {
    string providerString = "System.Data.OracleClient";
    ik erzeugen
    DbProviderFactory provider =
    DbProviderFactories.GetFactory(providerString);
    // --- Verbindung aufbauen
    DbConnection conn = provider.CreateConnection();
    conn.ConnectionString = connectionString; conn.Open();
    // Befehl erzeugen
    DbCommand cmd = provider.CreateCommand();
    cmd.CommandText = sql;
    cmd.Connection = conn;
    // Befehl ausführen
    DbDataReader reader = cmd.ExecuteReader();
    reader.Read();
    conn.Close();
    }

    Der Connection-String sieht dabei so aus:
    |
    ||Data Source=[servername]/[service_name];User Id=[user];Password=[pass]|

    Wenn anstatt des Microsoft Providers |System.Data.OracleClient| der
    Oracle-Provder |Oracle.Data.Client| verwendet werden soll/möchte wird
    neben den Treibern aus dem Instant-Client noch der Oracle Data-provide
    for .Net (ODP.NET)
    (http://www.oracle.com/technology/tech/windows/odpnet/index.html)

    racle.DataAccess.dll| und
    |OraOps11w.dll| benötigt.



    --

    Henning Eiben

    busitec GmbH
    Consultant

    e-mail: eiben@busitec.de


    +49 (251) 13335-0 Tel
    +49 (251) 13335-35 Fax

    Rudolf-Diesel-Straße 59
    48157 Münster
    www.busitec.de

    Sitz der Gesellschaft: Münster
    HR B 55 75 - Amtsgericht Münster
    USt-IdNr. DE 204607833 - St.Nr. 336/5704/1277
    Geschäftsführer: Simon Böwer, Henning Eiben, Stefan Kühn, Martin Saalmann

    Mittwoch, 4. November 2009 14:07