tag picard musicbrainz mac linux oracle unixodbc oracleclient

linux - mac - musicbrainz picard debian



[01000][unixODBC][Administrador de controladores] No se puede abrir lib ''/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so'': archivo no encontrado (3)

Estoy tratando de acceder a Oracle desde el servidor de Linux. Estoy usando unixODBC.

Cuando intento acceder a Oracle utilizando isql y me da un error, el administrador del controlador no puede abrir libsqora.so.12.1.

odbc.ini

[NAME] Application Attributes = T Attributes = W BatchAutocommitMode = IfAllSuccessful BindAsFLOAT = F CloseCursor = F DisableDPM = F DisableMTS = T Driver = Oracle 11g ODBC driver DSN = DSN_NAME EXECSchemaOpt = EXECSyntax = T Failover = T FailoverDelay = 10 FailoverRetryCount = 10 FetchBufferSize = 64000 ForceWCHAR = F Lobs = T Longs = T MaxLargeData = 0 MetadataIdDefault = F QueryTimeout = T ResultSets = T ServerName = ServerName SQLGetData extensions = F Translation DLL = Translation Option = 0 DisableRULEHint = T UserID = xxxx Password=<password> StatementCache=F CacheBufferSize=20 UseOCIDescribeAny=F

odbcinst.ini

[Oracle 11g ODBC driver] Description=Oracle ODBC driver for Oracle 11g Driver=/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so FileUsage=1

Luego, cuando uso isql para acceder a Oracle, aparece el siguiente error:

[root@xxxxx lib]# isql -v NAME [01000][unixODBC][Driver Manager]Can''t open lib ''/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so'' : file not found [ISQL]ERROR: Could not SQLConnect

Tuve error tipográfico en odbcinst.ini. He corregido pero sigue siendo el mismo error.

[root@xxxxx tmp]# isql -v NAME [01000][unixODBC][Driver Manager]Can''t open lib ''/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1'' : file not found [ISQL]ERROR: Could not SQLConnect [root@xxxxx tmp]# ls -l /usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1 -rw-r--r-- 1 bin bin 996363 Sep 5 2010 /usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1 [Oracle 11g ODBC driver] Description=Oracle ODBC driver for Oracle 11g Driver=/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1 FileUsage=1

ENV

[root@xxxxx tmp]# env HOSTNAME=xxxxx SSH2_TTY=/dev/pts/0 SHELL=/bin/bash TERM=xterm HISTSIZE=1000 ODBC_DIR=/usr/local/easysoft/unixODBC OLDPWD=/usr/local/easysoft SSH_SESSION_ID=1424 SSH_TTY=/dev/pts/0 LD_LIBRARY_PATH=/usr/local/easysoft/lib:/usr/local/easysoft/unixODBC/lib A__z="*SHLVL TNS_ADMIN=/usr/local/easysoft/oracle/InstantClient112/network/ INPUTRC=/etc/inputrc PWD=/tmp LANG=en_US.UTF-8 ODBCSYSINI=/etc/ HOME=/root SHLVL=3 ODBCINI=/etc LESSOPEN=|/usr/bin/lesspipe.sh %s ORACLE_HOME=/usr/local/easysoft/oracle/InstantClient112/ G_BROKEN_FILENAMES=1 _=/bin/env PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/local/easysoft/unixODBC/bin:/opt/oraClient/11.2.0.4/bin

Se corrigió el problema original con las actualizaciones de LD_LIBRARY_PATH, pero ahora se rompe nuevamente porque estoy tratando de usar el cliente Oracle de 32 bits.

Instalé el cliente oracle de 32 bits en el directorio /opt/oraClient/11.2.0.4_32/.

Modificado el odbcinst.ini:

[Oracle 11g ODBC driver] Description=Oracle ODBC driver for Oracle 11g #Driver=/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1 Driver=/opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1 FileUsage=1

Error:

[root@xxxxx lib]# /usr/local/bin/isql -v NAME [01000][unixODBC] [Driver Manager]Can''t open lib ''/opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1'' : file not found [ISQL]ERROR: Could not SQLConnect

Si necesito usar el cliente Oracle de 32 bits, ¿qué hago mal? Sé que es algo relacionado con las variables ambientales.

[root@xxxxx lib]# file /opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1 /opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped

Habilito el rastreo pero no puedo adjuntar el documento aquí. Puedo correo electronico

Más información de depuración:

[root@xxxxx bin]# ldd /opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1 ldd: warning: you do not have execution permission for `/opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1'' linux-gate.so.1 => (0xffffe000) libdl.so.2 => /lib/libdl.so.2 (0xf7f2b000) libm.so.6 => /lib/libm.so.6 (0xf7f02000) libpthread.so.0 => /lib/libpthread.so.0 (0xf7ee8000) libnsl.so.1 => /lib/libnsl.so.1 (0xf7ecf000) libclntsh.so.11.1 => not found libodbcinst.so.1 => not found libc.so.6 => /lib/libc.so.6 (0xf7d71000) /lib/ld-linux.so.2 (0x00134000)

No consigo uno de los "no encontrados" que pueden estar causando algunos problemas:

[root@xxxxx bin]# ls /opt/oraClient/11.2.0.4_32/lib/libclntsh.so.11.1 /opt/oraClient/11.2.0.4_32/lib/libclntsh.so.11.1

A continuación se muestra la salida env más reciente:

[root@xxxxx]# env HOSTNAME=xxxxx SSH2_TTY=/dev/pts/0 TERM=xterm SHELL=/bin/bash HISTSIZE=1000 ODBC_DIR=/usr/local/easysoft/unixODBC SSH_TTY=/dev/pts/0 LD_LIBRARY_PATH=/opt/oraClient/11.2.0.4_32/:/opt/oraClient/11.2.0.4_32/lib/:/usr/local/easysoft/oracle/InstantClient112:/usr/local/easysoft/oracle/InstantClient112/lib/ TNS_ADMIN=/opt/oraClient/11.2.0.4_32/network/ PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/local/easysoft/unixODBC/bin:/opt/oraClient/11.2.0.4_32/bin INPUTRC=/etc/inputrc LANG=en_US.UTF-8 ODBCSYSINI=/etc/ SHLVL=4 HOME=/root ODBCINI=/etc ORACLE_HOME=/opt/oraClient/11.2.0.4_32/ G_BROKEN_FILENAMES=1 _=/bin/env


El cliente instantáneo no tiene un directorio lib . Si ha descargado el instantclient-odbc-linux y lo ha descomprimido en la misma ubicación que el paquete básico, el archivo libsqora.so.11.1 estará correctamente en /usr/local/easysoft/oracle/InstantClient112 .

Así que tu .ini debería apuntar a:

Driver=/usr/local/easysoft/oracle/InstantClient112/libsqora.so.11.1

Tenga en cuenta la extensión sin embargo; es posible que desee vincular esto a libsqora.so . Si ha movido los archivos .so a un subdirectorio después de descomprimir (?), Entonces necesitará:

Driver=/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1

Parece que has reoriganizado los archivos del cliente instantáneo después de descomprimirlos, creando un directorio lib . No estoy seguro si eso te causará problemas directamente. Pero tampoco ha configurado LD_LIBRARY_PATH , como sugieren las instrucciones de instalación :

Pasos de instalación:

  1. Descargue los paquetes de Instant Client apropiados para su plataforma. Todas las instalaciones REQUIEREN el paquete básico.

  2. Descomprima los paquetes en un solo directorio como "cliente instantáneo".

  3. Establezca la ruta de carga de la biblioteca en su entorno al directorio en el Paso 2 ("cliente instantáneo"). En muchas plataformas UNIX, LD_LIBRARY_PATH es la variable de entorno adecuada. En Windows, se debe utilizar PATH.

  4. Comience su aplicación y disfrute.

Claramente, el paso (4) todavía no está funcionando para usted, pero creo que eso se debe a que no ha hecho el paso (3); y creo que, al dividir los archivos, lo que podría causar un problema, es posible que deba incluir .../InstantClient112 y .../InstantClient112/lib en la variable LD_LIBRARY_PATH . Y asegúrese de que el valor modificado se exporta. Aunque no estoy seguro de por qué querrías reorganizar los archivos.


Este error es engañoso:

The file that the error claimed was not present did exist.

Pude rastrear el archivo faltante real ejecutando:

# ldd /path/to/your/socalled/missing/file.so

Esto devolvió una serie de archivos y uno dijo:

libodbcinst.so.2 => not found

Ese fue el culpable para mí. Luego creé el enlace que necesitaba y listo, el error desapareció.

ref: http://mailman.unixodbc.org/pipermail/unixodbc-support/2011-November/003018.html


sudo apt-get install libaio1 libaio-dev