注册
达梦到pg的dblink配置
专栏/技术分享/ 文章详情 /

达梦到pg的dblink配置

yudazzle 2024/10/18 605 0 0
摘要

1.版本信息

图片.png

2.配置过程

达梦到PG的dblink本文使用odbc方式实现。
配置均在源端,即达梦数据库服务器端操作。确保源端(达梦)到目的端(PG)的网络连通,且PG数据库中的用户是可以访问。

2.1.配置达梦端的odbc

(1)采用源代码编译方式,手动部署达梦数据库的ODBC驱动程序(root用户操作即可)。

tar -zxvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure --prefix=/usr/local/unixODBC
make
make install

(2)修改odbc配置源
修改odbc.ini文件内容
vi /usr/local/etc/odbc.ini

[dm8]
Desription = DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID =xxx(用户名)
PWD =xxx(用户密码)
TCP_PORT = 5236

修改odbcinst.ini文件内容

vi /usr/local/etc/odbcinst.ini

[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER = /home/dmdba/dmdbms/bin/libdodbc.so

(3)isql测试连接
注意,此处需要切换到dmdba用户测试odbc连接,因为dm8数据库运行的权限是所属dmdba用户的。

su - dmdba
isql dm8

2.2.配置Pg端的odbc

(1)采用源代码编译方式,手动部署PG的ODBC驱动程序,注意需要使用PG对应版本的odbc驱动(root用户操作即可)。
Pg的odbc可从此处下载:https://www.postgresql.org/ftp/odbc/versions.old/src/

tar -zxvf psqlodbc-15.00.0000.tar.gz
./configure --prefix=/opt/psqlodbc/
make
make install

(2)修改odbc配置源
修改odbc.ini文件内容
vi /usr/local/etc/odbc.ini

[PG14]
Description = PG14
Driver =  PostgresSQL
Database = postgres
Servername =xxx.xxx.xx.xx(pg库的ip)
UserName = pg(pg库的用户名)
Password = xx(对应的用户密码)
Port = 5432

修改odbcinst.ini文件内容。
如不确定psqlodbcw.so存在的目录,可以使用find命令全局查找。
vi /usr/local/etc/odbcinst.ini

[PostgresSQL]
    Description     = ODBC for PostgresSQL
Driver64        =/opt/psqlodbc/lib/psqlodbcw.so

(3)isql测试连接

isql PG14

3.配置环境变量

主要是对于LD_LIBRARY_PATH的配置,需要添加达梦数据库运行目录,dm8的odbc驱动目录,pg的驱动目录等。
例如:
echo $LD_LIBRARY_PATH
/usr/local/etc:/usr/lib64:/home/dmdba/dmdbms/bin:/opt/psqlodbc/lib:/usr/local/lib:/data/dmhs/bin:/usr/local/unixODBC
并将该配置添加到达梦数据库的启动脚本中,以及dmdba用户的.bash_profile
中,并重启达梦数据库让配置生效;
注意:添加到数据库启动脚本中时,确保环境变量中的每个路径dmdba用户拥有读取权限;

4.创建dblink

在达梦端创建dblink,注意使用ODBC方式。
注意,此处using ‘PG14’表示使用数据源名为PG14的odbc,对应odbc.ini中的[PG14]。

CREATE LINK dblink_pg CONNECT ‘ODBC’ WITH “pg端用户名” IDENTIFIED BY “pg端用户密码” USING ‘PG14’;

WPS图片1.png
例如:
使用数据源名为PG10的odbc创建dblink;

使用上一步创建的dblink_pg查询远端pg库中的dm_ffjy_poss_wjij表;
WPS图片2.png

5.常见问题

(1)isql无法连接对应的数据库
可以尝试使用isql -v PG14 用户名 密码的方式进行连接,可以将odbc.ini和odbcinst.ini中相关配置手敲一遍,避免粘贴时受特殊字符或空格影响。
(2)dblink加载库文件失败
通常是受环境变量影响,具体可参考第3节点内容,确保环境变量中的每个目录是存在且能访问的。
如添加环境变量后,仍旧报错;
可以使用ldd命令,查看是否缺少相关依赖,并加入到环境变量中;
例如:ldd psqlodbcw.so
(3)关于odbc的配置文件的位置
通常ODBC配置文件的默认位置是 /etc/odbc.ini,这是系统范围的配置文件。然而,使用源码方式编译软件时,配置文件的放置位置可能会有所不同,这取决于编译时的配置选项和系统的具体设置。
可以全局查找odbc.ini文件,若存在多个,提前确定哪个文件是正在使用的。
(4)使用DBLINK时报错-2256
DBLINK远程服务器获取对象XXX失败,错误详情[no connection to the server]
通过dblink执行的数据操作,会被自动转化为网络请求并在相应结点上实现相应的操作。这个错误的出现,更多可能是当前网络不太稳定。遇到这种情况,可以通过新建会话再次执行操作,在应用中设置重试机制。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服