安装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
重新运行验证命令即可