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

如果出现如下所示,则说明所有的配置完全正确。 install

可能遇到的问题

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的驱动的路径的动态库更改为正确路径。

如下图所示:

install

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的配置值,如下图所示

install

ServerName的值就是TNS(即Oracle客户端中admin/tnsnames.ora文件中配置的值)

3、中文出现乱码

如果在使用ODBC连Oracle时,出现中文乱码情况,则需要设置字符编码的环境变量,解决方法如下:

1、查看Oracle数据库的字符编码设置

install

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中使用,则还需要额外一些操作步骤,请继续观看下文。

results matching ""

    No results matching ""