linux下odbc连接oracle

Posted 久违的太阳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下odbc连接oracle相关的知识,希望对你有一定的参考价值。

这里不叙述odbc的安装方法和oracle客户端的安装方法,都比较简单!!

1.查看odbc的配置文件

odbcinst -j #查看odbc配置文件

[root@tx_sh1 ~]# odbcinst  -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

驱动文件在/etc/odbcinst.ini DSN配置文件在/etc/odbc.ini 配置个人的DSN:/root/.odbc.ini

2.修改驱动配置

修改/etc/odbcinst.ini添加oracle的驱动文件

vi /etc/odbcinst.ini

[oracle]
Description = ODBC for Oracle
Driver      = /data/oracle/app/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1
Setup       = 
Driver64    = 
Setup64     = 
FileUsage   = 

这里我们是安装了oracle的64位客户端.odbc驱动文件在$ORACLE_HOME/lib下

这里我们还需要配置一下库文件的,否则会报错:

[root@tx_sh1 plugins]# isql txyun  ds ds -v
[01000][unixODBC][Driver Manager]Can't open lib '/data/oracle/app/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1' : file not found
[ISQL]ERROR: Could not SQLConnect

报错的原因是libsqlora.so.11.1依赖文件不存在:

[root@tx_sh1 plugins]# ldd /data/oracle/app/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1
    linux-vdso.so.1 =>  (0x00007ffd25379000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fc893246000)
    libm.so.6 => /lib64/libm.so.6 (0x00007fc892f44000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc892d28000)
    libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fc892b0e000)
    libclntsh.so.11.1 => not found   #这里没有
    libodbcinst.so.1 => not found    #这里没有
    libc.so.6 => /lib64/libc.so.6 (0x00007fc892740000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc89344a000)

这里他找的是libodbcinst.so.1,而系统的是libodbcinst.so.2只要拷贝一下就可以了

[root@tx_sh1 lib64]# cp /usr/lib64/libodbcinst.so.2 /usr/lib64/libodbcinst.so.1

这里需要添加LD_LIBRARY_PATH环境变量和ORACLE_HOME环境变量

vi /etc/profile
export ORACLE_HOME=/data/oracle/app/oracle/product/11.2.0/db_1
export LD_LIBRARY_PATH=/data/oracle/app/oracle/product/11.2.0/db_1/lib:$LD_LIBRARY_PATH

3.配置数据源文件

[root@tx_sh1 ~]# cat /etc/odbc.ini 
[txyun]
Description= ORCALE Driver
driver= oracle        #这里是驱动的名称
server= 127.0.0.1     #oracle的ip地址
Port= 11521           #oracle端口号
ServerName= txyun     #oracle服务名
UserID= ds            #oracle用户
Password= ds          #oracle密码

4.测试odbc连接

[root@tx_sh1 ~]# isql txyun
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

以上是关于linux下odbc连接oracle的主要内容,如果未能解决你的问题,请参考以下文章

Access怎样配置odbc数据源连接ORACLE数据库

配置oracle ODBC问题

PHP可以和sql server/oracle等数据库连接吗

Oracle使用ODBC连接配置

Oracle使用hs odbc连接mssql2008

Oracle 18 XE HS MSSQL LINUX连接问题