注册
达梦通过odbc创建到oceanbase的dblink
培训园地/ 文章详情 /

达梦通过odbc创建到oceanbase的dblink

李小富 2025/09/30 36 0 0

1.检查系统是否已经自带odbc,如果已自带odbc,则跳过"2.安装unixODBC"的步骤,执行"3.安装oceanbase 连接驱动"的步骤。
[root@test-db1 ~]# odbc_config --version
2.3.7
[root@test-db1 ~]# odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini

执行这两条命令,如果有输出,则系统已带odbc,重复安装会导致不可用。

2.安装unixODBC
tar -xvzf unixODBC-2.3.0.tar.gz

cd unixODBC-2.3.0

./configure --prefix=/usr/local/unixODBC

如果报错(arm环境):configure: error: cannot guess build type; you must specify one
加上参数,加上参数--build=arm-linux再执行
./configure --prefix=/usr/local/unixODBC --build=arm-linux

make

make install

--设置系统环境变量
vi ~/.bash_profile
export PATH=$PATH:/usr/local/unixODBC/bin
export LD_LIBRARY_PATH=/usr/local/unixODBC/lib:$LD_LIBRARY_PATH

source ~/.bash_profile

--查看是否安装成功
[root@test-db1 bin]# odbc_config --version
2.3.0

[root@test-db1 bin]# odbcinst -j
unixODBC 2.3.0
DRIVERS............: /usr/local/unixODBC/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/unixODBC/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/unixODBC/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini

[root@test-db1 bin]$ odbc_config --odbcini
/usr/local/unixODBC/etc/odbc.ini
[root@test-db1 bin]$ odbc_config --odbcinstini
/usr/local/unixODBC/etc/odbcinst.ini
[root@test-db1 bin]$

--如果odbc读取的配置文件不是指定的安装路径,则将下面环境变量添加到~/.bash_profile
vi ~/.bash_profile
export ODBCSYSINI=/usr/local/unixODBC/etc
export ODBCINSTINT=/usr/local/unixODBC/etc/odbcinst.ini
export ODBCINI=/usr/local/unixODBC/etc/odbc.ini

source ~/.bash_profile

3.安装oceanbase 连接驱动
rpm -ivh ob-connector-odbc-2.0.9.5-72025041109.el7.aarch64.rpm
默认安装路径:/u01/ob-connector-odbc

4.编辑odbc.ini
vi odbc.ini

[oboracle]
Driver = OBODBC
Description = Oceanbase Driver DSN
SERVER = 192.168.56.10
PORT = 2883
USER = username@tenantname#clustername
Password = Mima_2025odbc
OPTION = 3
charset = UTF8

#说明:USER = [用户名]@[租户名]#[集群名]

--系统自带odbc安装时,这个也要配置
vi /root/.odbc.ini
[oboracle]
Driver = OBODBC
Description = Oceanbase Driver DSN
SERVER = 192.168.56.10
PORT = 2883
USER = username@tenantname#clustername
Password = Mima_2025odbc
OPTION = 3
charset = UTF8

5.编辑odbcinst.ini

vi odbcinst.ini
[OBODBC]
Description = ODBC for oracle
Driver = /u01/ob-connector-odbc/lib64/mariadb/libobodbc.so

6.连接数据库
--连接ob数据库,可以在里面执行查询语句验证
isql -v oboracle

[root@test-db1 ~]# isql -v oboracle
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>

如果报错:
[IM002][unixODBC][Driver Manager]Data source name not found and no default driver specified
[ISQL]ERROR: Could not SQLConnect

--则是要看一下配置文件路径是否正确
[root@test-db1 bin]# odbcinst -j
unixODBC 2.3.0
DRIVERS............: /usr/local/unixODBC/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/unixODBC/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/unixODBC/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini

[root@test-db1 bin]$ odbc_config --odbcini
/usr/local/unixODBC/etc/odbc.ini
[root@test-db1 bin]$ odbc_config --odbcinstini
/usr/local/unixODBC/etc/odbcinst.ini

--oceanbase连接驱动如果不能正常使用,则可以设置一下环境变量
vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/unixODBC/bin
export PATH
export LD_LIBRARY_PATH=/usr/local/unixODBC/lib:/u01/ob-connector-odbc/lib64/mariadb:$LD_LIBRARY_PATH
source ~/.bash_profile

7.创建超连接
create or replace public LINK oblink connect 'ODBC' with "username@tenantname#clustername" identified by "Mima_2025odbc" using 'oboracle';

select * from username.tablename@OBLINK;

如果执行查询报错:无效的链接名[OBLINK]

--解决方法是:打开达梦dblink报错日志
alter system set 'ELOG_REPORT_LINK_SQL' = 1;

--查看达梦服务运行日志,看是报什么错误,一般都是读不到配置文件,或者是读错配置文件导致的
cd /home/dmdba/dmdbms/log
cat dm_test_db1_202509.log | grep ERROR

2025-09-23 20:33:05.069 [ERROR] database P0002037940 T0000000000002052432 ODBC connect error:[IM002][0][unixODBC][Driver Manager]Data source name not found and no default driver specified
2025-09-23 20:33:05.069 [ERROR] database P0002037940 T0000000000002052432 ODBC connect error:[08003][0][unixODBC][Driver Manager]Connection not open
2025-09-23 20:33:05.069 [ERROR] database P0002037940 T0000000000002052432 ODBC SQLDISCONNECT FAILURE

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服