安装unixodbc——以下操作在root用户下操作


    安装过程和报错处理我是参考及引用网络上的资源,也结合了自己的实际安装环境


一、安装unixodbc工具

1、下载unixodbc压缩包(unixODBC-2.3.4.tar.gz),用ssh工具将其上传linux服务器。(下载地址:http://www.unixodbc.org/


2、输入以下命令,进行安装:

#tar   -zxvf   unixODBC-2.3.4.tar.gz——解压

#cd  unixODBC-2.3.4——进入解压后的安装目录

#./configure --prefix=/usr/local/unixODBC-2.3.4 --includedir=/usr/include --libdir=/usr/lib --bindir=/usr/bin --sysconfdir=/etc——对unixODBC-2.3.4软件进行配置

#make——对unixODBC-2.3.4进行编译

#make install——安装unixODBC-2.3.4

ps:在Linux下安装一个应用程序时,一般先运行脚本configure,然后用make来编译源程序,在运行make install,最后运行make clean删除一些临时文件(没做过最后一步)。


二、安装oracle数据库的odbc驱动

1、下载、上传并安装以下两同版本号的rpm软件包

oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm

oracle-instantclient11.2-odbc-11.2.0.1.0-1.i386.rpm

下载地址: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

#rpm -ivh oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm ——安装操作

#rpm -ivh oracle-instantclient11.2-odbc-11.2.0.1.0-1.i386.rpm——安装操作

ps:下载32位或63位的rpm包,由linux系统来决定,用uname -a,可查看当前系统的型号


2、将/usr/lib/oracle/11.2/client/lib/* 拷贝到/usr/lib/目录下——将oracle下动态连接共享库拷贝到linux系统默认路径下


3、执行ldconfig——将linux系统新增的oracle动态连接共享库进行加载


4、在/usr/lib/oracle/11.2/NETwork/admin/ 下创建文件tnsnames.ora ,如下:

ORCL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.162.35.137)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = ORCL)

)

)

其中ORCL为一个标识名,配置文件odbc.ini中的ServerName项要与之相对应,SERVICE_NAME后跟要访问的数据库名,HOST为数据库所在主机IP地址,PORT为端口号。

ps:若之前已经有tnsnames.ora文件,注意看下配置细节即可。


5、在/etc/profile中增加:  export TNS_ADMIN=/usr/lib/oracle/11.2/network/admin/——配置新增的环境变量信息


6、执行 . /etc/profile (注意前面的英文句号,点号后面有空格) 将环境变量注册


三、文件配置

主要是修改 /etc/ 下的两个配置文件 odbc.ini 及 odbcinst.ini 。

1、在/etc/odbcinst.ini 中对各数据库的驱动进行配置,一般格式如

[oraclezy]

Description     = odbc for Oracle——描述

Driver              = /usr/lib/libsqora.so.11.1——驱动程序

Setup              = /usr/lib/liboraodbcS.so——设置

FileUsage        = 1

[ODBC]

Trace=1——追踪

Debug=1——调试

Pooling=No

ps:上述配置中的 Driver 及 Setup 后跟的字段,可能由于版本不同,配置会略有不同,要以本机上的库名或驱动名为准,可先用 ls 命令查看一下。


2、在 /etc/odbc.ini 中对应用程序要调用的ODBC接口进行配置,格式如下:

[oracle]

#odbcinst.ini中对应中括号中的名字

driver      = oraclezy

server      = 192.168.1.167 or localhost

port        = 1521

#tns的名字

ServerName  = ORCL

UserID           = root

password      = 123456(以安装oracle数据库时注册的用户为主)


四、测试连接

完成以上操作后,执行iqsl oracle(以在odbc.ini的数据源名为主)  root(用户) 123456(密码) -v

即:isql oracle root 123456 -v

出现此界面,即安装配置成功:

+---------------------------------------+

| Connected!                            |

|                                       |

| sql-statement                         |

| help [tablename]                      |

| quit                                  |

|                                       |

+---------------------------------------+

SQL>


五、odbc连接oracle数据库报错类型

1、ORA-12170:TNS:Connect timeout occurred:连接超时,注意/etc/odbc.ini 配置文件中servername与tnsnames.ora是否一致

ps:我在安装时,就只遇到一个报错:

[01000][unixODBC][Driver Manager]Can't open lib '/usr/lib/oracle/10.2.0.4/client

/libsqora.so.10.1' : file not found

[ISQL]ERROR: Could not SQLConnect

处理方法:

原因是libsqora.so.11.1依赖的包没有

参考链接:http://bbs.csdn.net/topics/390566189

1、使用如下命令查看依赖关系

# ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1

linux-vdso.so.1 =>  (0x00007fff99b1d000)

libdl.so.2 => /lib64/libdl.so.2 (0x00007fbcb52f1000)

libm.so.6 => /lib64/libm.so.6 (0x00007fbcb506c000)

libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fbcb4e4f000)

libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fbcb4c36000)

libclntsh.so.11.1 => /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1 (0x00007fbcb22c6000)

libodbcinst.so.1 => not found (0x00007fbcb20b5000)

libc.so.6 => /lib64/libc.so.6 (0x00007fbcb1d23000)

/lib64/ld-linux-x86-64.so.2 (0x000000393aa00000)

libnnz11.so => /usr/lib/oracle/11.2/client64/lib/libnnz11.so (0x00007fbcb1955000)

libaio.so.1 => /lib64/libaio.so.1 (0x00007fbcb1754000)

libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007fbcb154b000)

2、使用如下命令查找libodbcinst.so.1的位置

#find / -name libodbcinst*

/usr/lib64/libodbcinst.so

/usr/lib64/libodbcinst.so.2

/usr/lib64/libodbcinst.so.2.0.0

/usr/lib/libodbcinst.so

/usr/lib/libodbcinst.so.2

/usr/lib/libodbcinst.so.2.0.0

确实没有libodbcinst.so.1

3、解决该问题是实际操作

将/usr/lib64/libodbcinst.so.2、/usr/lib/libodbcinst.so.2分别复制

#cp /usr/lib/libodbcinst.so.2 /usr/lib/libodbcinst.so.1

#cp /usr/lib64/libodbcinst.so.2 /usr/lib64/libodbcinst.so.1

重新运行验证命令即可