Oracle客户端安装和ODBC配置
上文中已经详细的介绍了unixODBC的安装与配置,在Linux环境中安装好unixODBC后,就可以开始安装oracle的ODBC驱动了, 在下文中我将详细的介绍如何在Linux环境中安装Oracle的odbc驱动和配置Oracle的ODBC数据源。 在此文中,我们安装的是Instance Client 21.6版本,如需安装其他版本,也可以参照此文中的步骤。
安装包下载:
官网地址:https://www.oracle.com/cn/database/technologies/instant-client/downloads.html
安装oracle的odbc驱动,需要下载上面两个安装包,一个是instanctclient-basic,一个是instanctclient-odbc。下载时要注意下载相同的版本。
下载链接:
instantclient-basic下载地址https://download.oracle.com/otn_software/linux/instantclient/216000/instantclient-basic-linux.x64-21.6.0.0.0dbru.zip
instanctclient-odbc下载地址:https://download.oracle.com/otn_software/linux/instantclient/216000/instantclient-odbc-linux.x64-21.6.0.0.0dbru.zip
安装Oracle Instance Client
Oracle的客户端安装非常简单,只需要解压,并配置相关的环境变量即可。
将下载好的安装包(2个.zip安装包)都上传到Linux服务器的/home/software 目录下:
1、下载解压文件
#1.下载安装包
[root@k8s-node6 software]# wget https://download.oracle.com/otn_software/linux/instantclient/216000/instantclient-basic-linux.x64-21.6.0.0.0dbru.zip
[root@k8s-node6 software]# wget https://download.oracle.com/otn_software/linux/instantclient/216000/instantclient-odbc-linux.x64-21.6.0.0.0dbru.zip
#2.解压安装包
[root@k8s-node6 software]# unzip instantclient-basic-linux.x64-21.6.0.0.0dbru.zip
[root@k8s-node6 software]# unzip instantclient-odbc-linux.x64-21.6.0.0.0dbru.zip
解压完后,在/home/software/目录下就会有一个新的目录instantclient_21_6, oracle的客户端和ODBC的相关动态库都在里面。
2、安装和配置Oracle的ODBC驱动
进入到oracle的InstanceClient目录,其中有一个odbc_update_ini.sh的脚本, 这个脚本的作用就是用于创建Oracle的ODBC数据源和驱动配置。
[root@k8s-node6 uts2022]# cd /home/software/instantclient_21_6/
# 如果odbc.ini文件和odbcinst.ini文件在/etc目录下,请执行如下命名:
[root@k8s-node6 instantclient_21_6]# ./odbc_update_ini.sh / /home/software/instantclient_21_6 Oracle19C MyOracle19C /etc/odbc.ini
# 如果odbc.ini文件和odbcinst.ini文件在/usr/local/unixODBC/etc目录下,请执行如下命名:
[root@k8s-node6 instantclient_21_6]# ./odbc_update_ini.sh /usr/local/unixODBC/ /home/software/instantclient_21_6 Oracle19C MyOracle19C /usr/local/unixODBC/etc/odbc.ini
执行完毕后,会在unixODBC的驱动配置文件(/etc/odbcinst.ini)和数据源配置文件(/etc/odbc.ini)文件中添加Oracle的驱动信息。
[!TIP] odbc_update_ini.sh 参数说明:
参数1 / 指的是unixODBC的etc的目录
参数2 /home/software/instantclient_21_6 指的是Oracle的InstanceClient的安装目录
参数3 Oracle19C 指的是驱动名称(在odbcinst.ini文件中会新增一个名为Oracle19C的驱动源)
参数4 MyOracle19C 指的是数据源的名称(在odbc.ini文件中会增加一个MyOracle19C的数据源)
参数5 /etc/odbc.ini 指的是odbc.ini文件的完整路径
3、配置Oracle数据库的tns信息
在/home/software/instantclient_21_6/network/admin 目录下创建tnsnames.ora文件,文件内容如下
# tnsnames.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
MyOracle19C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.60)(PORT = 31524))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLPDB1)
)
)
[!TIP]
- MyOracle19C 是配置的TNS的名称
- 文件中IP地址和端口替换成实际的IP地址和端口,如我的Oracle的服务器IP地址是192.168.0.60,端口31524
- SERVICE_NAME 是SERVICE_NAME名称,根据实际更改
4、配置环境变量
oarcle的需要配置两个环境变量,一个是ORACLE_HOME,一个是TNS_ADMIN。
另外还需要将Oracle的InstanceClient的库加入系统的动态库搜索路径中。
上面我们在安装unixODBC的时候,在/etc/profile.d/目录中已经创建了一个unixODBC.sh文件, 所以可以直接编辑/etc/profile.d/unixODBC.sh文件,添加环境变量,在unixODBC.sh文件中添加如下内容:
export ORACLE_HOME=/home/software/instantclient_21_6
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
执行source /etc/profile 命令,使得环境变量生效。
[root@k8s-node6 instantclient_21_6]# source /etc/profile
5、验证配置
使用isql命令通过ODBC数据源连接Oracle数据库
语法: isql -v + 数据源名称 + 用户名 + 密码
[root@k8s-node6 instantclient_21_6]# isql -v MyOracle19C user password
可能遇到的问题
1、libsqlora.so 动态库找不到
[0100][unixODBC][Driver Manager] Can't open lib '/home/software/instantclient_21_6/libsqlora.so.19.1':file not found
[ISQL]Error:Could not SQLConnect
解决方案:
第一步、先检查报错的动态库的路径是否存在, 如果动态库路径存在依然报错,则是因为没有被加入到LD_LIBRARY_PATH环境变量中,此时如环境变量配置所述,配置好LD_LIBRARY_PATH即可。
如果动态库路径配置错误,则编辑/etc/odbcinst.ini 文件,将关于Oracle的驱动的路径的动态库更改为正确路径。
如下图所示:
2、TNS:net service name is incorrectly specified
[S1000][unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS:net service name is incorrectly specified
[ISQL]ERROR: Could not SQLConnect
按照上面的步骤执行下来,这个问题是必然会碰到的,因为执行odbc_update_ini.sh命令生成的配置文件会缺失一些配置参数。
解决方案:
编辑/usr/local/unixODBC/etc/odbc.ini文件中配置的MyOracle19C的数据源,增加ServerName的配置值,如下图所示
ServerName的值就是TNS(即Oracle客户端中admin/tnsnames.ora文件中配置的值)
3、中文出现乱码
如果在使用ODBC连Oracle时,出现中文乱码情况,则需要设置字符编码的环境变量,解决方法如下:
1、查看Oracle数据库的字符编码设置
2、设置环境变量NLS_LANG
编辑/etc/profile.d/unixODBC.sh 文件,添加环境变量,环境变量的值是上面查询出来的结果
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
3、执行source命令,使环境变量生效
source /etc/profile
至此,Linux下使用UnixODBC配置Oracle的ODBC源的安装配置完成,如果在UTS中使用,则还需要额外一些操作步骤,请继续观看下文。