暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux运维 -- Linux 环境下配置ODBC连接Oracle数据库

原创 金仓数据库 2024-01-10
5022

KingbaseES 在使用 kdb_database_link 扩展插件连接Oracle数据库时,必须先配置ODBC,确保通过ODBC能连接Oracle数据库。以下是配置ODBC的过程。

一、安装配置ODBC

1、安装ODBC

[root@dbhost03 etc]# yum install unixODBC.x86_64

[kingbase@dbhost03 kbdata]$ isql --version
unixODBC 2.3.1

[kingbase@dbhost03 kbdata]$ odbcinst -j
unixODBC 2.3.1
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /home/kingbase/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

注意:如果设置了LD_LIBRARY_PATH环境变量,则实际生效的是/usr/local/etc/odbcinst.ini ,否则可能是 /etc/odbcinst.ini。由于不同版本之间存在差异,为了保证能读取正确的配置,强烈建议统一使用用户主目录下 .odbc.ini 文件。

2、配置ODBC

根据odbcinst -j 显示的路径,配置 odbcinst.ini 和 odbc.ini 文件。

odbcinst.ini 文件内容如下:Driver 根据 下文配置的Oracle ODBC实际路径填写。

[Oracle ODBC Driver]
Description     = ODBC for Oracle
Driver          = /opt/Kingbase/ES/V8/Server/lib/libsqora.so.19.1
[PostgreSQL] Description = ODBC for PostgreSQL Driver = /usr/lib/psqlodbcw.so Setup = /usr/lib/libodbcpsqlS.so Driver64 = /usr/lib64/psqlodbcw.so Setup64 = /usr/lib64/libodbcpsqlS.so FileUsage = 1 # Driver from the mysql-connector-odbc package # Setup from the unixODBC package [MySQL] Description = ODBC for MySQL Driver = /usr/lib/libmyodbc5.so Setup = /usr/lib/libodbcmyS.so Driver64 = /usr/lib64/libmyodbc5.so Setup64 = /usr/lib64/libodbcmyS.so FileUsage = 1 [KingbaseES V8R6 ODBC Driver] Description = ODBC for KingbaseES Driver = /opt/kb86/ES/V8/Interface/odbc/kdbodbcw.so Debug = 1 CommLog = 1

odbc.ini 文件内容如下:

[test_orcl]
Description=Oracle
Driver=Oracle ODBC Driver
ServerName=test_ora
UserID=USER01
Password=user01

二、配置Oracle环境

  1. 下载 oracle_instantclient 和 instantclient-odbc 。KingbaseES 官方提供的 Oracle_fdw 一般自带了 oracle_instantclient,但不包含instantclient-odbc ,用户如果已经安装了oracle_fdw 插件,只需下载 instantclient-odbc 就行。一般instantclient-odbc 有rpm 和zip两种格式,这里下载zip格式。下载链接:Oracle Instant Client for X86-64
  2. 安装 ODBC 驱动:将 zip 文件解压,提取  libsqora.so 文件,放在 与 oracle_instantclient  相同目录,我的环境是/opt/Kingbase/ES/V8/Server/lib。  这是因为libsqora.so 需要用到oracle_instantclient  相关的库文件。
  3. 验证ODBC 驱动库文件是否完整:ldd /opt/Kingbase/ES/V8/Server/lib/libsqora.so.19.1 ,确保没有 NOT FOUND的信息
  4. 配置用户环境变量:ORACLE_HOME 和 TNS_ADMIN,ORACLE_HOME指向oracle_instantclient目录ORACLE_HOME=/opt/Kingbase/ES/V8/Server/lib,TNS_ADMIN 指向 tnsnames.ora 文件的存放位置,根据你的实际配置。
  5. 新建或修改 tnsnames.ora 文件,增加个tns 条目。类似如下:
test_ora =
 (DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS =(PROTOCOL = TCP)(Host = 192.168.237.41)(Port = 1521))
  )
  (CONNECT_DATA =(SID = SOGG))
 )

注意:KingbaseES 默认包含了Oracle_fdw 插件,也就是已经带了 oracle_instantclient,用户只需create extension oracle_fdw即可;自带的oracle_instantclient版本如果不满足需求(比如:目标端数据库版本较低),用户可以下载对应版本的oracle_instantclient,解压后拷贝到/opt/Kingbase/ES/V8/Server/lib 目录下,并将链接指向先下载的 libclntsh.so。

三、验证连接是否正常

[kingbase@dbhost03 ~]$ isql -v orcl
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
最后修改时间:2024-01-22 17:24:33
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论