Perl 5 DBI Oracle 8 database driver module will nicht so recht
Holger
- perl
Guten Morgen,
auf einem früheren Server sind alle meine Perl Skripte, die eine Verbindung zu einer Oracle DB herstellen, ohne Probleme gelaufen.
Nach der Portierung auf einen neuen Server (Apache, hpux, Perl, und eine höhere Oracle-Version als beim alten) läuft das natürlich nicht mehr.
Ich erhalte beim Einbinden des Oracle Moduls mit "use DBD::Oracle;" folgende Fehlermeldung:
Can't load '/opt/perl5.6.1/lib/site_perl/5.6.1/PA-RISC1.1/auto/DBD/Oracle/Oracle.sl' for module DBD::Oracle: No such fil
e or directory at /opt/perl5.6.1/lib/5.6.1/PA-RISC1.1/DynaLoader.pm line 206.
Weiterhin wird auf genau die Zeile in meinem Skript verwiesen, in der "use DBD::Oracle;" eingebunden wird.
Hat jemand damit Erfahrungen und kann mir sagen, welche Dinge sich bei einem brandneu eingerichteten hpux-Server geändert haben könnten?
Ich weiss, dass das vieles sein kann aber vielleicht hat jemand einen Hinweis.
Eine weitere Sache ist, dass ich in diversen Foren gelesen habe, dass das Setzen von LD_RUN_PATH=/opt/oracle/product/8.1.7/lib und SHLIB_PATH=/opt/oracle/product/8.1.7/lib ale Shell-Variablen mit den jeweiligen Pfaden der Oracle-Anwendung das Problem lösen könnte.
Tut es aber nicht. Ausserdem ist es verwunderlich, dass der alte Server diese nicht gesetzt hat (da diese nicht als in den dortigen ENV auftauchen).
Wozu also das Setzen dieser Variablen? Welche Variablen ausser der ORACLE_HOME sind noch erforderlich für die Oracle-Anbindung?
Vielen Dank im voraus, und viele Grüße aus Irland,
Holger
Hi Holger,
Can't load '/opt/perl5.6.1/lib/site_perl/5.6.1/PA-RISC1.1/auto/DBD/Oracle/Oracle.sl' for module DBD::Oracle: No such fil
e or directory at /opt/perl5.6.1/lib/5.6.1/PA-RISC1.1/DynaLoader.pm line 206.
Hat jemand damit Erfahrungen und kann mir sagen, welche Dinge sich bei einem brandneu eingerichteten hpux-Server geändert haben könnten?
"geändert" ist vielleicht gar nicht das richtige Wort für Dein Problem.
"site_perl" ist ein Verzeichnis, in welches der Administrator einer Maschine Perl-Erweiterungsmodule installiert.
Anscheinend ist Dein Programm abhängig von Modulen, die eben erst mal zusätzlich installiert werden müssen - und wahrscheinlich war das auch auf der alten Maschine so, es ist nur niemandem mehr bewußt ... vielleicht sind diese Module sogar bei Deiner Oracle-Version dabei gewesen, aber nicht mit installiert worden? Möglicherweise mußt Du sie Dir extra aus dem CPAN saugen.
Denkbar wäre auch, daß eine modernere Perl-Version (5.8?) einen größeren Umfang mitgelieferter Module aufweist. Aber eine spezielle Oracle-Anbindung ist m. E. eher ein Kandidat für "explizit zusätzlich installieren".
Eine weitere Sache ist, dass ich in diversen Foren gelesen habe, dass das Setzen von LD_RUN_PATH=/opt/oracle/product/8.1.7/lib und SHLIB_PATH=/opt/oracle/product/8.1.7/lib ale Shell-Variablen mit den jeweiligen Pfaden der Oracle-Anwendung das Problem lösen könnte.
Keiner dieser beiden Pfade scheint sich auf Perl zu beziehen (sondern eher auf Bibliotheks-Schnittstellen für Sprachen wie z. B. "C", die von Oracle selbst unterstützt werden - Pro*C-Programme dürften beispielsweise davon betroffen sein).
Wozu also das Setzen dieser Variablen? Welche Variablen ausser der ORACLE_HOME sind noch erforderlich für die Oracle-Anbindung?
Definiere "Anbindung". Das mag zwischen Sprachen, die von Oracle selbst unterstützt werden, und solchen, die von Fremdprodukten angebunden werden müssen ("DBD"), durchaus unterschiedlich sein.
Viele Grüße
Michael
Hallo Holger,
Dass das Perl-Modul vermutlich nicht installiert ist, hat Dir Michael bereits gesagt.
Wozu also das Setzen dieser Variablen? Welche Variablen ausser der ORACLE_HOME sind noch erforderlich für die Oracle-Anbindung?
Läuft denn wenigstens SQL*Plus? (auf der Kommandozeile sqlplus; Standard-Oracle-Kommandozeilen-Client) Kannst Du Dich damit zu Deiner Oracle-Instanz verbinden? Kannst Du dort Tabellen anlegen, befüllen, auslesen, etc.? Wenn das erst einmal läuft, dann kannst Du Dich um das Perl-Modul kümmern.
Viele Grüße,
Christian