AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# Howto: Ora Instant-Client??
Thema durchsuchen
Ansicht
Themen-Optionen

Howto: Ora Instant-Client??

Ein Thema von Phoenix · begonnen am 26. Feb 2007 · letzter Beitrag vom 26. Feb 2007
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#1

Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 10:34
Datenbank: Oracle • Version: 10g • Zugriff über: ADO.NET via Corelab / Instant Ora
Wie mir hier vorgeschlagen wurde habe ich nun mal den Oracle Instant Client heruntergeladen und in mein Anwendungsverzeichnis kopiert.

Also knapp 22,5 MB an dll's und zwei Jar-Files, wobei ich mir ziemlich sicher bin die nicht zu brauchen.

Das, was ich sonst als Connection Description in meiner TNSNames.ora drin hatte, habe ich nun in den ConnectionString gepackt, nur beim Verbinden mit der Datenbank erhalte ich nun folgenden Fehler:
"Can not load Oracle client. Check your PATH environment and registry settings."

An den Einstellungen dort habe ich jedoch nichts geändert, nur die dll's kopiert und that's it.

Was muss ich da sonst noch beachten? Google hat mir zu der Fehlermeldung leider keinen einzigen akkuraten Treffer geliefert.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 10:58
Mit dem ODP sollte es klappen. Keine Ahnung wofür du die .Jars mitschleppst.
Falls du dem CoreLabs Provider sagen kannst wo er die client lib sucht, sollte es auch damit gehen.

Und @Fehlermeldung, wenn du ein Nischenprodukt wie den CR Provider nimmst, solltest du dich nicht darüber wundern, dass du die Fehlermeldung so selten/nicht in Google siehst.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 11:08
Umgebungsvariable ORACLE_HOME angelegt?
tnsnames.ora im Unterpface <Installdir>\Network\Admin angelegt und gefüllt?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 11:14
Zitat von Bernhard Geyer:
Umgebungsvariable ORACLE_HOME angelegt?
Sollte wenn dann nur als Anwendungs/Prozessvariable angelegt werden. (Siehe hier)
Zitat:
Kannst du auch zur Laufzeit nur für deinen Prozess absetzen.
tnsnames.ora im Unterpface <Installdir>\Network\Admin angelegt und gefüllt?
Sollte nicht nötig sein, da er den Descriptor direct benutzt, ohne ein Alias (aka TNS Name) zu benutzen.

Oracle cients sind mosntröse, aber sehr zerbrechliche Geschöpfe, deshalb der hier vorgeschlagene Weg, der bestehende Installationen komplett unbehelligt lassen sollte und dich vor allem vor eifrigen Admins schützen sollte.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#5

Re: Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 11:47
Auf Umgebungsvariablen habe ich auf dem Zielsystem keinen Zugriff, da darf ich nichts dran ändern müssen.

Ich hab jetzt mal auf die ODP umstellen wollen, aber die lassen sich nicht laden:

Zitat von DbProviderFactories.GetFactory("Oracle.DataAccess. Client"):
Failed to find or load the registered .Net Framework Data Provider.
Dabei ist der da. Hier mal meine vorhandenen Factories:

Available Provider:
Name: Odbc Data Provider;
Description: .Net Framework Data Provider for Odbc;
InvariantName: System.Data.Odbc;
AssemblyQualifiedName: System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;

Available Provider:
Name: OleDb Data Provider;
Description: .Net Framework Data Provider for OleDb;
InvariantName: System.Data.OleDb;
AssemblyQualifiedName: System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;

Available Provider:
Name: OracleClient Data Provider;
Description: .Net Framework Data Provider for Oracle;
InvariantName: System.Data.OracleClient;
AssemblyQualifiedName: System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;

Available Provider:
Name: SqlClient Data Provider;
Description: .Net Framework Data Provider for SqlServer;
InvariantName: System.Data.SqlClient;
AssemblyQualifiedName: System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;

Available Provider:
Name: SQL Server CE Data Provider;
Description: .NET Framework Data Provider for Microsoft SQL Server 2005 Mobile Edition;
InvariantName: Microsoft.SqlServerCe.Client;
AssemblyQualifiedName: Microsoft.SqlServerCe.Client.SqlCeClientFactory, Microsoft.SqlServerCe.Client, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91;

Available Provider:
Name: OraDirect .NET Data Provider;
Description: CoreLab OraDirect .NET Data Provider;
InvariantName: CoreLab.Oracle;
AssemblyQualifiedName: CoreLab.Oracle.OracleProviderFactory, CoreLab.Oracle, Version=3.50.9.0, Culture=neutral, PublicKeyToken=09af7300eec23701;

Available Provider:
Name: Oracle Data Provider for .NET;
Description: Oracle Data Provider for .NET;
InvariantName: Oracle.DataAccess.Client;
AssemblyQualifiedName: Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342;


Available Provider:
Name: Local OraDirect .NET Data Provider;
Description: CoreLab OraDirect .NET Data Provider;
InvariantName: CoreLab.Oracle.local;
AssemblyQualifiedName: CoreLab.Oracle.OraDirectFactory, CoreLab.Oracle, Version=3.50.9.0, Culture=neutral, PublicKeyToken=09af7300eec23701;

Nicht wundern das CR zweimal drin ist. Einmal kommt der aus der App.config.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 12:07
Zitat von Phoenix:
Auf Umgebungsvariablen habe ich auf dem Zielsystem keinen Zugriff, da darf ich nichts dran ändern müssen.
Wenn du dir den Link von mir angekiekt hast, solltest du gesehen haben, dass die Variable nur für die Laufzeit deines Prozesses und das auch nur für deinen Prozess gilt. Dafür braucht man keine besonderen Rechte und es hat keinen Impact auf andere Software.
Zitat:
Ich hab jetzt mal auf die ODP umstellen wollen, aber die lassen sich nicht laden:
Schmeiße ihn unter "DeinPrefix.Oracle.DataAccess.Client" in deine App.config und packe ihn ins Zielverzeichnis. So bist du auch hier unabhängig von allen Quirks des Zielsystems.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#7

Re: Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 12:14
Zitat von Elvis:
Schmeiße ihn unter "DeinPrefix.Oracle.DataAccess.Client" in deine App.config und packe ihn ins Zielverzeichnis. So bist du auch hier unabhängig von allen Quirks des Zielsystems.
XML-Code:
  <system.data>
    <DbProviderFactories>
      <add
        name="Local Oracle Data Provider for .NET"
        invariant="Local.Oracle.DataAccess.Client"
        description="Oracle Data Provider for .NET"
        type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342"
      />
     </DbProviderFactories>
  </system.data>
Liefert mir als letzten Eintrag aus GetFactoryClasses:
Available Provider:
Name: Local Oracle Data Provider for .NET;
Description: Oracle Data Provider for .NET;
InvariantName: Local.Oracle.DataAccess.Client;
AssemblyQualifiedName: Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342;

Die Oracle.DataAccess.dll und die Oracle.DataAccess.resources.dll liegen im App-Verzeichnis. Jeoch Gleiche Fehlermeldung:

Zitat von DbProviderFactories.GetFactory("Local.Oracle.DataA ccess.Client"):
Failed to find or load the registered .Net Framework Data Provider.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 12:29
Zitat von Phoenix:
Die Oracle.DataAccess.dll und die Oracle.DataAccess.resources.dll liegen im App-Verzeichnis. Jeoch Gleiche Fehlermeldung:
Zitat von DbProviderFactories.GetFactory("Local.Oracle.DataA ccess.Client"):
Failed to find or load the registered .Net Framework Data Provider.
Hmm... Hätte gehen sollen.
Hast du den Assembly name des full type names[1] aus dem Reflector kopiert? Wenn nicht, ist er da anders?
Wenn er anders ist, klappt es damit?
Wenn nicht, kannst du den Typen der Factory "zu Fuss" laden und instantiieren?
Delphi-Quellcode:
var factoryType := System.Type.GetType('Oracle.DataAccess.Client.OracleClientFactory, ' +
                                       'Oracle.DataAccess, ' +
                                       'Version=1.2.3.4, Culture=neutral, '+
                                       'PublicKeyToken=bliblablubb');
var factory := Activator.CreateInstance(factoryType) as DbProviderFactory;
Wenn selbst das nicht geht -> hmpf!



[1]Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#9

Re: Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 12:37
1.) Das war Copy & Waste aus dem Reflector.

2.) Nein, System.Type.GetType liefert mir bei diesen Angaben ein null zurück.

Seltsamerweise findet bei mir der Reflector auch nicht die Klasse OracleClientFactory, die ja theoretisch schon in dem Namespace sein sollte. Zumindest laut Ora doku.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Howto: Ora Instant-Client??

  Alt 26. Feb 2007, 14:06
Zitat von Phoenix:
1.) Das war Copy & Waste aus dem Reflector.
Nein war es nicht, oder du hast im Zielordner nicht die Version 2.102.2.20 liegen!
Denn die 2.102.2.20 hat die Factory. (siehe Anhang um dir 200 MB witzlosen Download zu ersparen)
Zitat:
2.) Nein, System.Type.GetType liefert mir bei diesen Angaben ein null zurück.

Seltsamerweise findet bei mir der Reflector auch nicht die Klasse OracleClientFactory, die ja theoretisch schon in dem Namespace sein sollte. Zumindest laut Ora doku.
Probiere es nochmal mit der richtigen Version im Anhang. Oracle hat lange gebraucht um sowas lächerlich einfaches wie eine ProviderFactory zu implementieren (MySql übrigens auch)
Angehängte Dateien
Dateityp: 7z oracle.dataaccess.dll_777.7z (152,6 KB, 3x aufgerufen)
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz