2017-03-10 3 views
1

Es ist eine Geschichte so alt wie die Zeit selbst. Nein, ich rede nicht von der Geschichte, wie die Frau eines Mannes mit seinem besten Freund davonläuft. Ich spreche über DBD::Oracle zu arbeiten. Obwohl beide Geschichten über die gleiche Menge an Schmerzen mit ihnen verbunden sind.DBD :: Oracle: load_file: Das angegebene Modul konnte nicht gefunden werden

uns mit den Fakten beginnen lassen: (v. 5.16.3 - 32 Bit)

  • Ausführen von Windows 7 -64 Bit
  • Lauf Strawberry Perl (die Grund, warum wir 32 Bit haben, weil es ein Modul, das nur 32 Bit ist und wir sind damit fest - fragen Sie nicht)
  • Oracle Client (Version 12.1.0 - 32 Bit) erfolgreich installiert.
  • Das bin-Verzeichnis des Oracle Client hat an der Vorderseite des
  • die Zugabe der folgenden Umgebungsvariablen

  • PATH aufgenommen:

    ORACLE_HOME - zeigt auf Oracle Client Pfad
    TNS_ADMIN zu Oracle Client -pointing Weg
    LD_LIBRARY_PATH - zeigt auf Oracle Client Pfad
    ORACLE_USER_ID - auf einen gültigen Oracle-Benutzer in der Form: user/pass @ System: port \ sid
    ORACLE_SID - auf gültiges Orakel sid

  • Erfolgreiche Verbindung von sqlplus zur gewünschten Datenbank.

  • "Erfolgreiche Erstellung" von DBD :: Oracle in Strawberry Perl mit cpanm. Obwohl ich --force verwenden musste, weil die Tests fehlgeschlagen sind.
  • Ein Eintrag trat in tnsnames.ora, daß Ich gehe davon korrekt ist:

    nameIMadeUp .World = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = Server) (PORT = port #)) ) (CONNECT_DATA = (SID = sid) ) )

Nach all dem versuchen wir diesen Code auszuführen (aus Gründen der Kürze snipped):

use DBI; 
use DBD::ODBC; 
use Log4Perl; 

#logger set up here. 

my $user = "username"; 
my $passwd = "password"; 
my $DSN = "dbi:Oracle:host=servername;sid=sid;port=port#"; 

my $oracleDbh = DBI->connect($DSN,$user,$passwd) or $logger->logdie("$DBI::errstr\n at line:".__LINE__); 

Und wir bekommen diese glorreiche Fehler:

install_driver(Oracle) failed: Can't load 'C:/strawberry/perl/site/lib/auto/DBD/Oracle/Oracle.dll' for module DBD::Oracle: load_file:The specified module could not be found at C:/strawberry/perl/lib/DynaLoader.pm line 190. 
at (eval 84)[C:/strawberry/perl/vendor/lib/DBI.pm:770] line 3. 
Compilation failed in require at (eval 84)[C:/strawberry/perl/vendor/lib/DBI.pm:770] line 3. 
Perhaps a required shared library or dll isn't installed where expected 
...stacktrace... 

Also, ich habe lesen Sie, dass 'C: /strawberry/perl/site/lib/auto/DBD/Oracle/Oracle.dll' nach oci.dll sucht, die den Fehler verursacht. Oci.dll befindet sich jedoch in [oracle_client_path]/bin /. Theoretisch sollte es in der Lage sein, es zu finden.

Oder ist es auf der Suche nach einer anderen DLL? Gibt es Tools in Windows oder vielleicht sogar Visual Studio, die hier helfen können?

Oder gibt es einen magischen Schritt, den ich vermisse?

Ich danke Ihnen im Voraus für jedes weise Wissen, das Sie hervorbringen.

Antwort

0

Anscheinend wurde ein Neustart benötigt. Nach dem Neustart waren Verbindungen über Perl möglich. Dies ist hier für den Fall, dass jemand so dumm ist wie ich. Ich gehe jetzt meine AS/400 zurück ...

Verwandte Themen