Oracle-Datenbankzugriffsprobleme mit Coldfusion unter Linux
MichaelB
- software
0 Michael Schröpl0 MichaelB
0 Klaus Mock0 MichaelB
Hallo,
folgende Konfiguration:
Szenario:
Coldfusion greift via ODBC auf eine entfernte OracleDB zu (zumindest sollte er das).
Klappt aber nicht. Stattdessen kommt die Fehlermeldung:
ODBC Error Code = IM003 (Specified driver could not be loaded)
Obwohl alles korrekt konfiguriert ist.
(mit andere Datenbanken wie PostgreSQL funktioniert es tadellos).
Die gleiche Konstellation unter Redhat Linux 7.2 arbeitet einwandfrei.
Weder auf der Macromedia-Seite noch bei www.cfml.de fand sich ein brauchbarer Hinweis. Die Resultate von Google konnte man ebenfalls vergessen.
Aber vielleicht hat hier ja jemand schon die gleiche Erfahrung gemacht und sogar eine Lösung parat. Ich vermute mal, er kommt mit irgendeiner neueren Bibliothek von Redhat 7.3 nicht klar oder sowas in der Richtung.
Oder der Oracle-Client hat ein Problem. Allerdings funktioniert sqlplus einwandfrei auf diesem Server. Deshalb nehme ich an das Problem liegt wirklich bei Coldfusion.
Werde mal als nächstes versuchen herauszufinden, welche Bibliotheken Coldfusion verwendet. Vielleicht komme ich ja so irgendwie weiter.
Wenn sich was findet, dann werde ich die Lösung hier posten als Antwort auf meine eigene Frage, damit alle was davon haben. :-)
Gruss
MichaelB
PS:
Jetzt weiß ich auch, warum ich proprietäre Software nicht mag.
Ok .... bei "offenen" Systemen gibt es auch Probleme, aber durch die große Community trifft man eher auf eine Lösung. Und zudem ist man nicht von einen Hersteller abhängig, sondern kann diesen beliebig wechseln.
Hi,
Coldfusion greift via ODBC auf eine entfernte OracleDB zu (zumindest sollte er das).
Klappt aber nicht. Stattdessen kommt die Fehlermeldung:
ODBC Error Code = IM003 (Specified driver could not be loaded)
hm ... ohne jetzt wirklich die genannten Produkte im Deatil zu verstehen:
Wie funktioniert denn Deine ODBC-Installation?
Ich stelle mir ODBC als API vor, die einem Anwendungsprogramm über
einheitliche Funktionen den Zugriff auf verschiedene Datenbanken erlaubt
Obwohl alles korrekt konfiguriert ist.
(mit andere Datenbanken wie PostgreSQL funktioniert es tadellos).
Das ist ja dann offenbar ein anderer Treiber innerhalb Deiner ODBC-
Installation - und der funktioniert eben.
Die gleiche Konstellation unter Redhat Linux 7.2 arbeitet einwandfrei.
Wer hat dort ODBC wie installiert? Setzt Du dieselben Treiber unter 7.2
und 7.3 ein? Erlaubt der Hersteller (Oracle), daß Du das tust, oder mußt
Du Dir von Oracle für Linux 7.3 einen angepaßten Treiber holen?
Weder auf der Macromedia-Seite noch bei www.cfml.de fand sich ein
brauchbarer Hinweis. Die Resultate von Google konnte man ebenfalls
vergessen.
Ich vermute Dein Problem nicht vor, sondern hinter der ODBC-Schnitt-
stelle. Denn Deine Client-Schicht hat mit dieser ja ganz normale kom-
munizieren können und eine vernünftige Fehlermeldung erhalten.
Ich würde Google also nach der Kombination aus ODBC und Oracle fragen.
Oder der Oracle-Client hat ein Problem. Allerdings funktioniert
sqlplus einwandfrei auf diesem Server. Deshalb nehme ich an das
Problem liegt wirklich bei Coldfusion.
Ich vermute, das Problem liegt in der Verbindungsschicht zwischen
beiden - eben in Deiner ODBC-Installation.
Daß sqlplus funktioniert, spricht dafür, daß der Oracle-Teil in sich
korrekt ist (sofern Du den Oracle-Treiber für ODBC davon ausnimmst).
Wenn sich was findet, dann werde ich die Lösung hier posten als
Antwort auf meine eigene Frage, damit alle was davon haben. :-)
Die erste Maßnahme, die ich ergreifen würde, wäre in diesem Fall,
die Fehlermeldung wörtlich zu nehmen, also mir anzusehen, wie man in
dieses ODBC einen Oracle-kompatiblen Treiber hinein bekommt.
Viele Grüße
Michael
Hallo,
na sowas. Noch ein Michael. *freu*
Coldfusion greift via ODBC auf eine entfernte OracleDB zu (zumindest sollte er das).
Klappt aber nicht. Stattdessen kommt die Fehlermeldung:
ODBC Error Code = IM003 (Specified driver could not be loaded)
hm ... ohne jetzt wirklich die genannten Produkte im Deatil zu verstehen:
Wie funktioniert denn Deine ODBC-Installation?
Ich stelle mir ODBC als API vor, die einem Anwendungsprogramm über
einheitliche Funktionen den Zugriff auf verschiedene Datenbanken erlaubt
- d. h. es muß ein Treiber her, der diese einheitlichen API-Funktionen
auf die herstellerspezifischen APIs der konkreten Datenbank abbildet.
(Und zwar für jedes Datenbankprodukt ein eigener Treiber.)
Den Oracle-ODBC-Treiber bringt Coldfusion mit und dieser verwendet dann den installierten Oracle-Net8-Client.
Die ODBC-Treiber werden mit der Coldfusion-Installation eingerichtet.
Obwohl alles korrekt konfiguriert ist.
(mit andere Datenbanken wie PostgreSQL funktioniert es tadellos).
Das ist ja dann offenbar ein anderer Treiber innerhalb Deiner ODBC-
Installation - und der funktioniert eben.
Jo .... er wird auf identische Weise "installiert" wie der Oracle-Treiber.
Die gleiche Konstellation unter Redhat Linux 7.2 arbeitet einwandfrei.
Wer hat dort ODBC wie installiert? Setzt Du dieselben Treiber unter 7.2
und 7.3 ein? Erlaubt der Hersteller (Oracle), daß Du das tust, oder mußt
Du Dir von Oracle für Linux 7.3 einen angepaßten Treiber holen?
Wie gesagt. Das macht alles Coldfusion mit dem ODBC. Und der OracleClient ist identisch mit dem auf meiner Redhat 7.2 Maschine.
Ich habe die beiden Maschinen sonst auch auf identische Weise installiert und konfiguriert und das auch mehrmals und auf verschiedener Hardware. Es handelt sich also wirklich nicht um ein einmaliges Versehen. Es hängt mit Redhat Linux 7.3 zusammen.
Weder auf der Macromedia-Seite noch bei www.cfml.de fand sich ein
brauchbarer Hinweis. Die Resultate von Google konnte man ebenfalls
vergessen.
Ich vermute Dein Problem nicht vor, sondern hinter der ODBC-Schnitt-
stelle. Denn Deine Client-Schicht hat mit dieser ja ganz normale kom-
munizieren können und eine vernünftige Fehlermeldung erhalten.
Eine vernünftige Fehlermeldung wäre detailierter. Das er den Treiber nicht laden kann ist eine ziemlich globale Aussage. Besser wäre, wenn er noch sagen könnte warum (ob ihm eine Datei fehlt und wenn ja welche usw. von mir aus auch ein StackTrace oder dergleichen).
Die Log-Dateien geben absolut nix her. Und den Log-Level ändern kann man ebenfalls nicht.
Ich würde Google also nach der Kombination aus ODBC und Oracle fragen.
War sinnlos. Nix brauchbares gefunden.
Gruss
MichaelB
Hallo,
Klappt aber nicht. Stattdessen kommt die Fehlermeldung:
ODBC Error Code = IM003 (Specified driver could not be loaded)
Vielleicht überprüfst Du noch folgendes (gehört bei mir zu den Standardprüfroutinen bei Oracle-Problemem):
Grüße
Klaus
Hallo,
Klappt aber nicht. Stattdessen kommt die Fehlermeldung:
ODBC Error Code = IM003 (Specified driver could not be loaded)
Vielleicht überprüfst Du noch folgendes (gehört bei mir zu den Standardprüfroutinen bei Oracle-Problemem):
- Sind Die Oracle-spezifschen Environmentvariablen für den
Coldfusion-Prozeß gesetzt?
Manchmal werden das Environment nur für interaktive Prozesse gesetzt,
nicht aber für daemons und deren Kindprozesse.
Ja die Umgebungsvariablen sind gesetzt. Und wie gesagt eine identische Installation/Konfiguration hab ich auch auf Redhat 7.2, wo es ja dann funktioniert.
- Überprüfe tnsnames.ora bzw sqlnet.ora auf korrekte Einstellungen.
Einige Clients haken, wenn man in sqlnet.ora z.B eine default_domain
definiert hat, und in der tnsnames.ora den DB-Eintrag keine domain
besitzt.
Wenn da irgendwas nicht stimmen würde, würde wohl kaum sqlplus funktionieren, oder?
Trotzdem Danke.
Gruss
MichaelB