Oracle z węzłem oracle: błąd podczas próby uzyskania tekstu błędu ORA-01804


Próbuję użyć

node-oracle
https://github.com/joeferner/node-oracle
do łączenia się z bazą danych Oracle 11g w systemie UNIX. Mogę połączyć się z bazą danych dobrze za pomocą TOAD, ale teraz chcę wysyłać żądania aplikacji i tak zrobiłem:
Kod NodeJS:
var oracle = require('oracle');var connectData = {
hostname: "host.com",
port: 1521,
database: "DB0000",
user: "me",
password: "password"
}oracle.connect(connectData, function(err, connection) {
if (err) { console.log("Error connecting to db:", err); return; } connection.execute("SELECT systimestamp FROM dual", [], function(err, results) {
if (err) { console.log("Error executing query:", err); return; } console.log(results);
connection.close();
});
});

Następnie mam to polecenie na polu unixa:
sh-3.2$ OCI_LIB_DIR=/oracle/client/v11.2.0.2-64bit/client_1/lib/ OCI_INCLUDE_DIR=/client/v11.2.0.2-64bit/client_1/rdbms/public/ OCI_HOME=/oracle/clien
t/v11.2.0.2-64bit/client_1/ NLS_LANG=.UTF8 LD_LIBRARY_PATH=/client/v11.2.0.2-64bit/client_1/lib//bin/node app.js

Otrzymuję następujący błąd:
terminate called after throwing an instance of 'oracle::occi::SQLException'
what(): Error while trying to retrieve text for error ORA-01804

Kilka uwag:
  • Nie ustawiłem jeszcze poprawnie zmiennych env, to był mój pierwszy test, stąd długie polecenie
    node
    .
  • ścieżki są podobne do tych powyżej, ale usunąłem przedrostki, które kojarzą to z moją firmą

Zajrzałem do internetu i wiele osób wskazuje na źle skonfigurowaną zmienną
LD_LIBRARY_PATH
. Jeśli
ls
ten folder otrzyma:
acfslib.pm libclient11.a libgnsjni11.so libmm.a libntcpaio11.so liboraz.a libsql11.a naect_std.o.dbl sscoreed.o
acfsroot.pl libclntsh.so libhasgen11.so libn11.a libntcps11.a liborion11.a libsqlplus.a naedhs.o stubs
acfstoolsdriver.sh libclntsh.so.10.1 libheteroxa11.so libnbeq11.a libntcps11_std.a.dbl libowm2.so libsqlplus.so naeet.o sysliblist
activation.jar libclntsh.so.11.1 libimf.a libncrypt11.a libntns11.a libplc11.a libsqora.so.11.1 naeet_std.o.dbl transx.zip
classgen.jar libclntst11.a libintlc.so.5 libnhost11.a libnus11.a libplc11_pic.a libsrvm11.so nautab.o xmlcomp2.jar
clntsh.map libclsra11.so libipgo.a libnjni11.so libnzjs11.a libplp11.a libsrvmhas11.so nautab_std.o.dbl xmlcomp.jar
facility.lis libcommon11.a libipp_bz2.a libnl11.a libocci11.a libplp11_pic.a libsrvmocr11.so nigcon.o xml.jar
jcr-1.0.jar libcore11.a libippcore.a libnldap11.a libocci.so libpls11.a libsvml.a nigtab.o xmlmesg.jar
jdev-rt.zip libcorejava.so libippdcemerged.a libnls11.a libocci.so.11.1 libpls11_pic.a libuini11.so nnfgt.o xmlparserv2.jar
lclasses12.zip libcxaguard.so.5 libippdcmerged.a libnnet11.a libocijdbc11.so libpsa11.a libunls11.a ntcontab.o xmlparserv2_jaxp_services.jar
lclasses14.zip libdbcfg11.so libippsemerged.a libnnetd11.a libocr11.so librdjni11.so libvsn11.a ojcr.jar xmlparserv2_sans_jaxp_services.jar
ldflags libeons.so libippsmerged.a libnnz11.a libocrb11.so libskgxn2.so libvsn11_std.a.dbl oraclexsql.jar xschema.jar
ldflagsO libexpat.a libipp_z.a libnnz11.so libocrutl11.so libskgxp11.so libwwg.a osds_acfslib.pm xsqlserializers.jar
libagent11.a libexpat.la libirc.a libnoname11.a liboevm.a libskgxpcompat.so libxdb.so osds_acfsroot.pm xsu12.jar
libagfw11.so libexpat.so libldapclnt11.a libnque11.so libons.so libskgxpd.so libxml11.a osds_unix_linux_acfslib.pm
libagtsh.so libexpat.so.1 libldapjclnt11.a libnro11.a libonsx.so libskgxpg.so libzt11.a osntabst.o
libagtsh.so.1.0 libexpat.so.1.5.2 libldapjclnt11.so libnsgr11.a liborabz2.a libskgxpr.so libztkg11.a s0main.o
libasmclntsh11.so libgeneric11.a liblxled.a libnsslb11.a liborasdkbase.so.11.1 libslax11.a mail.jar schagent.jar
libcell11.so libgns11.so liblzopro.a libntcp11.a liborasdk.so.11.1 libsnls11.a naect.o scorept.o

Każda pomoc byłaby bardzo mile widziana.
Przyjrzałem się tym pytaniom, ale mimo że były podobne, nie mogłem rozwiązać z nimi problemu:

Owacja.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dzięki @evenro wróciłem do obejrzenia

błąd podczas próby pobrania tekstu błędu ORA-01804,
https://coderoad.ru/12837811/
i próbował ustawić zmienną środowiskową
ORACLE_HOME
.
Zadziałało, ale potem zacząłem sprawdzać, których zmiennych naprawdę potrzebowałem, więc ostatecznie użyłem tylko:
  • ORACLE_HOME: wskazuje na klienta opartego na Oracle
  • LD_LIBRARY_PATH: wskaż folder lib wewnątrz klienta

Tak to działało w końcu:
ORACLE_HOME=/somefolder/oracle/client/v11.2.0.2-64bit/client_1/ LD_LIBRARY_PATH=/somefolder/oracle/client/v11.2.0.2-64bit/client_1/lib/ node app.js

Jeszcze raz dziękuję za całą pomoc w komentarzach, naprawdę doceniam.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W moim przypadku rozwiązałem to w ten sposób dla

python

Rozwiązałem ten problem, po prostu poprawnie skompresowałem pliki za pomocą dowiązań symbolicznych
Najpierw utworzyłem trzy dowiązania symboliczne:
ln -s ./lib/libaio.so.1.0.1 ./lib/libaio.so.1
ln -s ./lib/libaio.so.1.0.1 ./lib/libaio.so
ln -s ./lib/libaio.so.1.0.1 ./libaio.so.1.0.1
ln -s ./lib/libclntsh.so.12.1 ./lib/libclntsh.so
potem źle go spakowałem i zrobiłem to tak:
zip --symlinks -r9 ~/lamda.zip *
Zadziałało! Mam nadzieję, że to komuś pomoże.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się