Estoy tratando de utilizar nodo-oracle para conectarse a una base de datos Oracle 11g en UNIX. Puedo conectar bien a la base de datos utilizando el SAPO, pero ahora quiero hacer la solicitud de consultas y esto es lo que hice:

NodeJS código:

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();
  });
});

Entonces yo este comando en la máquina unix:

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

Me sale el siguiente error:

terminate called after throwing an instance of 'oracle::occi::SQLException'
  what():  Error while trying to retrieve text for error ORA-01804

Algunas notas:

  • No he configurado env variables correctamente, sin embargo, esta fue mi primera prueba, por lo tanto el largo node comando.
  • las rutas de acceso son similares a los descritos, pero he quitado los prefijos que se ataba a mi empresa

He mirado en la web y un montón de gente elija este mal configurado LD_LIBRARY_PATH variable. Si me ls que carpeta puedo obtener:

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

Cualquier ayuda sería muy apreciada.

He mirado en estas preguntas, pero aunque similares, no pude solucionar mi problema con ellos:

Saludos.

  • Por favor refiérase a que el error: stackoverflow.com/questions/12837811/…
  • Y los parámetros que se deben configurar son ORACLE_HOME y ORACLE_SID generalmente (ORACLE HOGAR es la base de oracle directory)
  • Si quieres probar un enfoque diferente, he publicado un comentario aquí: stackoverflow.com/questions/18696000/connect-oracle-from-nodejs mostrando otro camino para nodejs->oracle comunicación.
  • Voy a probar el ORACLE_HOME y SID y darte a conocer. Gracias @BrianMcGinity para el agregado de la sugerencia.
InformationsquelleAutor bitoiu | 2014-04-14

2 Comentarios

  1. 3

    Gracias a @evenro, volví a mirar a Error al intentar recuperar el texto de error ORA-01804 y trató de establecer el ORACLE_HOME variable de entorno.

    Funcionó, pero luego me puse a revisar las variables que realmente necesitaba, así que al final yo sólo se utiliza:

    • ORACLE_HOME: señalar en el cliente de oracle basedir
    • LD_LIBRARY_PATH: punto en la carpeta lib dentro del cliente

    Esta es la forma en que trabajó en la final:

    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

    Gracias de nuevo por toda la ayuda en los comentarios, muchas gracias.

    • Yo tenía el mismo problema anterior pero resultó que me perdí el «libociei.así». Una vez que la pongo en un directorio que puede ser accedido por el cargador (en mi caso /usr/lib), Que trabajó muy bien, dejé de ver el mensaje de «Error al intentar recuperar el texto de error ORA-01804».
  2. 1

    En mi caso lo resolví como este para python

    Lo resuelto por simplemente comprimir los archivos correctamente con los enlaces simbólicos

    Primero he creado tres enlaces simbólicos :

    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

    entonces yo estaba comprimirlo incorrectamente lo hice así:

    zip --symlinks -r9 ~/lamda.zip *

    Funcionó! bien luego.Espero que ayude a alguien.

Dejar respuesta

Please enter your comment!
Please enter your name here