Linux usa unixODBC para conectarse a la base de datos de Oracle: mis comentarios

Dirección original: https://blog.csdn.net/guotianqing/article/details/78886622

Artículos relacionados

1. Utilice unixODBC para conectarse a la configuración de la base de datos Oracle en Linux- https://blog.csdn.net/lichangzai/article/details/40304077

2, utilizando el método de configuración de conexión de la base de datos UNIXODBC ORACLE ---- https://www.cnblogs.com/young525/p/5873744.html

3. Configure ODBC de Unix en Linux para conectarse a la base de datos de Oracle: https://www.eygle.com/archives/2005/01/linuxeieaeoeaun.html

4. He usado unixODBC para acceder a la base de datos oracle11gR2 bajo linux ---- http://blog.sina.com.cn/s/blog_48c49d5d01017z1b.html

5. No se puede encontrar la solución de error libclntsh.so.11.1 al ejecutar el programa Oracle en la raíz ---- https://blog.csdn.net/iw1210/article/details/8850335

6. Problemas encontrados: error en el informe de error de ODBC de DBI al ejecutar el script de perl: [unixODBC] [Administrador de controladores] No se encuentra el nombre de la fuente de datos y no se encuentra por defecto ---- https://blog.csdn.net/ zzq900503 / article / detalles / 17352639

7 、[IM002] [unixODBC] [Administrador de controladores] No se encuentra el nombre de la fuente de datos y no hay un mensaje de controlador predeterminado especificado al intentar conectarse a través de isql ---- https://stackoverflow.com/questions/34369436/im002unixodbcdriver-managerdata- nombre-fuente-no-encontrado-y-no-predeterminado-driv

8. Resuelva el problema de que el archivo de biblioteca .so no se puede encontrar en Linux: https://blog.csdn.net/csdlwzy/article/details/84566401

9, zabbix odbc se conecta al error de Oracle libsqora.so.XX.1 no puede encontrar la solución ---- https: //blog.csdn.net/su377486/article/details/109064604

10. La conexión unixODBC no es correcta ---- https://bbs.csdn.net/topics/390566189

11 、 ORA-12541: TNS: sin escucha 解决 方法 ---- https://blog.csdn.net/qq_44161999/article/details/105067346?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1. control & depth_1-utm_source = distribuir.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

I. Panorama general

Descripción general de ODBC

ODBC (Conectividad abierta de bases de datos) proporciona un método API (interfaz de programación de aplicaciones) estándar para acceder a DBMS (Sistema de gestión de bases de datos). Estas API utilizan SQL para realizar la mayoría de sus tareas. El propio ODBC también proporciona soporte para el lenguaje SQL, y los usuarios pueden enviar directamente sentencias SQL a ODBC. Los diseñadores de ODBC se esfuerzan por que tenga la mayor independencia y apertura: no tiene nada que ver con el lenguaje de programación específico, no tiene nada que ver con el sistema de base de datos específico y no tiene nada que ver con el sistema operativo específico. Microsoft lanzó el primer producto ODBC del mundo en forma de un conjunto de DLL en 1993, y ahora se ha convertido en una parte integral de la base de datos en la Arquitectura de Servicios Abiertos de Microsoft (WOSA, Arquitectura de Servicios Abiertos de Windows). El producto ODBC de Microsoft es en realidad un administrador de controladores ODBC, que proporciona una aplicación ODBC a una determinada interfaz de controlador ODBC.

La interfaz ODBC se define de la siguiente manera:

  • Biblioteca de llamadas de función ODBC a través de la cual las aplicaciones pueden conectarse a fuentes de datos, ejecutar comandos SQL y recuperar resultados
  • Gramática SQL basada en la especificación SQL-99
  • Un conjunto de códigos de error estándar
  • Una forma estándar de conectarse e iniciar sesión en la fuente de datos
  • Descripción estándar de tipos de datos

La composición del modelo ODBC

La composición del modelo de ODBC se muestra en la siguiente figura. Las aplicaciones ODBC llaman al administrador de controladores a través de la API ODBC. El administrador de controladores puede ser un administrador de controladores de Microsoft o un administrador de controladores unixODBC. El administrador de controladores también llama al controlador ODBC a través de la API ODBC, y el controlador ODBC utiliza la API de la base de datos para conectarse a la base de datos a través de la comunicación de red.

La composición del módulo ODBC

Controlador ODBC de Oracle

El controlador ODBC de Oracle utiliza el software de cliente y servidor Oracle Call Interface (Oracle Call Interface) para enviar solicitudes y recibir respuestas de fuentes de datos. El protocolo de comunicación del servicio de red de Oracle se utiliza para comunicarse entre el cliente OCI y el servidor de Oracle. El controlador ODBC de Oralce se encarga de convertir entre la sintaxis SQL ODBC y la sintaxis que puede acceder a la fuente de datos, y la comunicación se realiza con normalidad. La arquitectura del controlador de Oracle ODBC se muestra en la siguiente figura.

Escriba la descripción de la imagen aquí

Dos, descargue e instale unixODBC

Descarga desde la dirección oficial  http://www.unixodbc.org/download.html
Archivo de descarga: unixODBC-2.3.4.tar.gz
Instalación:

./configure --prefix=/usr/local/unixODBC --sysconfdir=/etc 
#默认安装路径为  /usr/local,通过 --prefix改变
#默认odbcinst安装在 {prefix}/etc,通过--sysconfdir改变到指定路径
make 
make install
  • 1
  • 2
  • 3
  • 4
  • 5

Las opciones y descripciones de ./configure son las siguientes

opción descripción
-prefijo Esto define dónde desea instalar unixODBC. Si no especifica esto, el valor predeterminado será / usr / local. Si no desea unixODBC en un solo directorio, puede usar otras opciones de configuración como –bindir, –sbindir, etc. para un control más preciso.
–Sysconfdir Esto define dónde desea que se almacenen los archivos de configuración de unixODBC. Este valor predeterminado es / etc. Los archivos de configuración afectados son odbcinst.ini (donde se definen los controladores ODBC), el sistema odbc.ini (donde se definen las fuentes de datos del sistema) y ODBCDataSources (donde se almacenan los DSN del archivo del sistema).
–Enable-gui El valor predeterminado es "sí" si se encuentra QT. Si desea construir el Administrador de ODBC GUI, odbctest y DataManager establezcan esto en “yes” (por ejemplo, –enable-gui = yes). Necesitará bibliotecas QT y archivos de encabezado para construir los componentes de la GUI (ver más adelante). Probablemente también debería establecer –with-x. NOTA En unixODBC 2.3.0, el valor predeterminado de –enable-drivers se cambió a “no” y los componentes de la GUI se movieron a un nuevo proyecto.
–Habilitar-hilos El valor predeterminado es "sí" si se encuentra soporte para subprocesos en su máquina. Todos los Linux modernos tendrán soporte para pthreads en glibc, por lo que probablemente sea mejor dejar esto por defecto.
–Enable-readline El valor predeterminado es "sí" si libreadline y sus encabezados se encuentran en su máquina. Esto afecta principalmente al programa isql de UnixODBC. Si se encuentra compatibilidad con readline, puede editar el texto ingresado en el indicador SQL en isql.
–Enable-drivers El valor predeterminado es "sí". Cuando está habilitado, esto creará todos los controladores ODBC incluidos con unixODBC. Esto incluye MySQL, Postgres, MiniSQL y un controlador de archivo de texto.
–Enable-iconv Este valor predeterminado es "sí" si libiconv y sus archivos de encabezado se encuentran en su máquina. Si construye con iconv y accede, entonces unixODBC puede hacer traducciones Unicode.

Tres, descargue e instale el controlador ODBC de Oracle

La dirección de descarga oficial es  http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html para
descargar el archivo:

instantclient-basic-linux.x64-11.2.0.3.0.zip
instantclient-odbc-linux.x64-11.2.0.3.0.zip

instalación:

unzip instantclient-basic-linux.x64-11.2.0.3.0.zip
unzip instantclient-odbc-linux.x64-11.2.0.3.0.zip
#注意,上述两个文件解压到同一目录下。
chmod 775 odbc_update_ini.sh
./odbc_update_ini.sh /usr/local
#没有提示表示安装成功

#odbc_update_ini.sh参数说明:
#参数1:unixODBC DM安装路径。
#参数2:驱动安装的绝对路径(可选)。默认为运行脚本的路径。
#参数3:驱动名(可选),默认为Oracle 11g ODBC driver。
#参数4:数据源名称(可选),默认为OracleODBC-11g。

#运行完成后将添加一个DNS条目到$HOME/.odbc.ini , <DriverManager_HOME>/etc/odbcinst.ini,名称为:OracleODBC-11g
#修改odbc目录的权限:
chown -R 775 /opt/odbc
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • dieciséis

Cuarto, configure las variables de entorno

vi / etc / profile

Unirse

export ORACLE_HOME=/opt/oracle 
export LD_LIBRARY_PATH=/opt/oracle/lib
  • 1
  • 2

Haga que la configuración sea efectiva de inmediato

source /etc/profile

Cinco, configurar el entorno de escucha y de red

Debido a que la base de datos de Oracle no está instalada localmente, necesita obtener tres archivos del directorio donde está instalada la base de datos de Oracle.

[root@localhost admin]# pwd 
/opt/oracle/network/admin 
[root@localhost admin]# ls 
 listener.ora  sqlnet.ora  tnsnames.ora #就这三个文件,放到这个目录下 
  • 1
  • 2
  • 3
  • 4

Seis, edita el archivo de configuración

archivo tnsnames.ora

BOSSDATA = 
  (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.107)(PORT = 1521))  #192.168.1.107  IP地址   ,端口号:1521 
    (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = bossdata)                                   #bossdata  全局数据名 
    ) 
  ) 

EXTPROC_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
      (SID = PLSExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • dieciséis
  • 17
  • 18
  • 19

archivo listener.ora

SID_LIST_LISTENER = 
  (SID_LIST = 
    (SID_DESC = 
      (SID_NAME = PLSExtProc) 
      (ORACLE_HOME = \opt\oracle)#注意,这个是刚才配置的$ORACLE_HOME 
      (PROGRAM = extproc) 
    ) 
  ) 

LISTENER = 
  (DESCRIPTION_LIST = 
    (DESCRIPTION = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.107)(PORT = 1521))      #这个上面有说明 
    ) 
  ) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • dieciséis

Siete, verifique la configuración de la unidad

Archivo /usr/local/etc/odbcinst.ini

[Oracle 11g ODBC driver]
Description     = Oracle ODBC driver for Oracle 11g
Driver          = /u01/app/ora11g/product/11.2.0/db_1/odbc/utl/libsqora.so.11.1
Setup           =
FileUsage       =
CPTimeout       =
CPReuse         = 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

8. Prueba

método de prueba:

isql <nombre de la fuente de datos> <nombre de usuario> <contraseña> -v

[root@bakdbserver ~]# isql OracleODBC-11g bi bi -v
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

La prueba muestra que la conexión a la base de datos es exitosa.


Materiales de referencia:
http://www.unixodbc.org/download.html
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
https://www.easysoft.com/developer/interfaces /odbc/linux.html#introduction
La configuración de la conexión a la base de datos Oracle con unixODBC en Linux  http://blog.csdn.net/lichangzai/article/details/40304077
linux instala el cliente Oracle (instantclient) por separado  http: // blog.csdn .net / caomiao2006 / article / details / 11901123

 

// ============================================== =========

Mi nota::

1> odbcinst -j ----------- ¡Compruebe la ruta del archivo utilizada por odbc.ini + odbcinst.ini a través de este comando! ! !

2> ubicar libclntsh.so.11.1

3> ldd /usr/local/lib/libsqora.so.11.1

4> isql -v contraseña de nombre de usuario ORCL

5> gato / etc / profile

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/xqhrs232/article/details/113244873
Recomendado
Clasificación