1、环境介绍
1.1源端DM
数据库版本 dm8_20230426_x86_kylin10_64_ent_8.1.3.12_pack3.iso
操作系统版本 4.19.90-24.4.v2101.ky10.x86_64
OceanBase ODBC驱动 ob-connector-odbc-2.0.6-20221018193003.el7.alios7.x86_64.rpm
unixODBC unixODBC-2.3.11.tar.gz
测试IP 192.168.123.12
1.2目标端OB
数据库版本 oceanbase-3.1.2-111000052023010412.el7.x86_64.rpm
操作系统版本 Red Hat Enterprise Linux Server release 7.6 (Maipo)
OceanBase安装部署工具 ob-deploy-2.0.1-4.el7.x86_64.rpm
查询客户端接口驱动 (OBClient Libs) libobclient-2.2.2-3.el7.x86_64.rpm
OceanBase 命令行客户端 obclient-2.2.2-1.el7.x86_64.rpm
OceanBase 数据库代理 obproxy-3.2.9.0-20230116143405.el7.x86_64.rpm
依赖库 (OceanBase Libs) oceanbase-ce-libs-4.1.0.0-100000202023040520.el7.x86_64.rpm
测试IP 192.168.123.17
2、DM端安装ODBC驱动
2.1 安装前准备
安装 OceanBase Connector/ODBC 驱动程序需要一些准备工作,安装完成后根据相应的步骤进行配置和连接测试。
版本 安装包
Linux版本 ob-connector-odbc-2.0.8.rpm
ob-unixodbc-2.0.8.rpm
libobclient-2.1.2.rpm 及以上版本
本次安装odbc版本为:
ob-connector-odbc-2.0.6-20221018193003.el7.alios7.x86_64.rpm
2.2 安装驱动
1、检查是否已安装 OceanBase Connector/ODBC,并查看相应版本信息。
rpm -qa | grep odbc
rpm -qa | grep obclient
2、如果需要替换其他版本,分别执行如下命令删除
rpm -e ob-connector-odbc-<version_no>.rpm
rpm -e libobclient-<version_no>.rpm
rpm -e ob-unixodbc-<version_no>.rpm
3、安装相应的 OceanBase Connector/ODBC 的 rpm 包
sudo rpm -ivh ob-connector-odbc-<version_no>.rpm
sudo rpm -ivh ob-unixodbc-<version_no>.rpm
sudo rpm -ivh libobclient-<version_no>.rpm
4、安装后再次检查版本是否正确
rpm -qa | grep odbc
rpm -qa | grep obclient
此外,根据实际环境还需要安装 Libtool 相关工具(本次未安装),语法如下:
yum install libtool-ltdl-devel
2.3 配置环境变量
1、配置 odbc.ini 到 /etc/odbc.ini (也可以自定义目录设置环境变量到相应的目录即可)。
$sudo vim /etc/odbc.ini
[ODBC Data Sources]
data_source_name = OBDSN
[OBDSN]
Driver=/u01/ob-connector-odbc/lib64/mariadb/libobodbc.so
Description = OceanBase Driver DSN
SERVER = 192.168.123.17
PORT = 2883
USER = test@oboracle
Password =test
Database = test
OPTION = 4
charset=UTF8
配置文件中的参数含义和取值约束如下表所示。
参数名称 含义
Driver odbcinst.ini 中的驱动,是用户自定义的。
Description 驱动描述。
SERVER 数据库 IP 地址。
PORT 数据库实际端口
USER 数据库用户账号。
Password 数据库密码。
Database 数据库名称。
OPTION 配置选项,当前版本仅支持 OPTION =4,即开启日志。
charset 数据库字符集,默认为 UTF8。
2、配置 odbcinst.ini 到 /etc/odbcinst.ini
$sudo vim /etc/odbcinst.ini
[Oceanbase]
Description = ODBC for Oceanbase
Driver = /u01/ob-connector-odbc/lib64/mariadb/libobodbc.so
3、设置环境变量
$export ODBCSYSINI=/etc
$export ODBCINI=/etc/odbc.ini
$export LD_LIBRARY_PATH=/u01/unix-odbc/lib:/u01/obclient/lib:/u01/ob-connector-odbc:$LD_LIBRARY_PATH
4、环境变量配置完成后可以使用 odbcinst -j 命令查看配置是否正确,示例如下:
$/u01/unix-odbc/bin/odbcinst -j
unixODBC 2.3.11
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
5、检查环境依赖是否正确。
$cd /u01/ob-connector-odbc/lib64/mariadb
[root@eefdc4281eb7 mariadb]# ldd /u01/ob-connector-odbc/lib64/mariadb/libobodbc.so
linux-vdso.so.1 (0x00007ffebc589000)
libobclnt.so.20 => /u01/obclient/lib/libobclnt.so.20 (0x00007fc118368000)
libodbcinst.so.2 => /u01/unix-odbc/lib/libodbcinst.so.2 (0x00007fc118153000)
libm.so.6 => /usr/lib64/libm.so.6 (0x00007fc117fb5000)
libc.so.6 => /usr/lib64/libc.so.6 (0x00007fc117dfd000)
libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007fc117df8000)
libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007fc117dd7000)
libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007fc117dca000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc11883f000)
# 确保 libobclnt.so.20 的依赖与所安装的 libobclient-xxx.rpm 包对应
2.4 ISQL连接测试
DriverManager 相关的工具在 /u01/unix-odbc 目录下,运行连接命令并显示成功。
[dmdba@cesdb20 media]$ isql -v OBDSN
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| echo [string] |
| quit |
| |
+---------------------------------------+
SQL>
3、OB端创建测试用户及数据
obclient -h192.168.123.17 -P2883 -usys@oboracle -psys
[SYS@192.168.123.17] [SYS]> create user test identified by test;
[SYS@192.168.123.17] [SYS]>grant connect,resource to test;
[SYS@192.168.123.17] [SYS]>grant create session to test;
obclient -h192.168.123.17 -P2883 -utest@oboracle -ptest
[TEST@192.168.123.17] [TEST]> CREATE TABLE test(name VARCHAR2(20),score INT NOT NULL);
[TEST@192.168.123.17] [TEST]> insert into test values(‘name',79)
; [TEST@192.168.123.17] [TEST]>commit;
4、DM端创建dblink并查询数据
cd $DM_HOME/bin
./disql sysdba/SYSDBA:5238
create or replace public link link_ob connect 'ODBC' with "sys@oboracle" identified by "sys" using 'OBDSN' option (DB_TYPE='ORACLE');
SQL> select * from test.test@link_ob;
行号 NAME SCORE
---------- ---- -----
1 name 79
已用时间: 00:00:02.217. 执行号:1600.
SQL>
更多技术分享,详见
达梦社区:https://eco.dameng.com