- 环境介绍
IP地址:端口 | 192.168.116.143:5236 | 192.168.116.149:1521 |
操作系统 | Kylin-Server-V10-SP3-2403-Release-20240426-X86_64 | CentOS-7-x86_64-DVD-2009 |
数据库 | dm8_20251021_x86_kylin10_sp3_64 | oracle11g |
Oracle Instant Client包版本:12.2
Oracle Instant Client包下载地址:Oracle Instant Client Downloads
- ODBC
执行odbcinst -j查看unixODBC的版本
2.1下载驱动
下载上传并解压得到如下:
2.2配置依赖
cd instantclient_12_2进入目录
ldd libsqora.so.12.1检查依赖
查找缺失驱动,放置/usr/lib64目录下
find / -name‘libmql1.so’
cp ./libmql1.so /usr/lib64
若仍缺少驱动,通过yum进行下载安装后继续连接
注:重点为红框内驱动
2.3配置ODBC源
2.3.1创建tnsnames.ora文件
tnsnames.ora文件可参考oracle数据库所在服务中的tnsnames.ora文件。
tnsnames.ora文件在与驱动在同一目录下,便于下文参数的设置。
2.3.2 配置$ORACLE_HOME、$TNS_ADMIN和$LD_LIBRARY_PATH
配置TNS_ADMIN系统环境变量
vim /etc/profile
文件最后加上以下语句:
export ORACLE_HOME=/oracleclient/instantclient_12_2/
exportLD_LIBRARY_PATH=/oracleclient/instantclient_12_2/
export TNS_ADMIN=/usr/lib/oracle/12.2/client64
执行source /etc/profile使配置生效。
2.3.3配置odbcinst.ini文件
2.3.4配置odbc.ini文件
2.4验证配置
isql ORA11G SCOTT oracle
重启达梦数据库,加载dm通过dblink查询oracle数据库数据所需的文件。
2.5 创建DBLINK
在DM管理工具或disql中执行以下语句
CREATE OR REPLACE LINK LINKORA1CONNECT 'ODBC' WITH "Oracle用户" IDENTIFIED BY "Oracle用户密码" USING 'DSN名字';
select count(*) from USER_TABLES@LINKORA1;
结果示例如下。
- OCI
3.1 下载Oracle客户端驱动(Instant Client)
下载上传并解压得到如下:
3.2配置依赖
cd instantclient_12_2进入目录
ldd libclntsh.so.12.1检查依赖
查找缺失驱动,放置/usr/lib64目录下
find / -name‘libmql1.so’
cp ./libmql1.so /usr/lib64
若仍缺少驱动,通过yum进行下载安装后继续连接
复制所有.so文件到DM安装目录的bin目录下
cp ./instantclient_12_2/*.so* /home/dmdba/dmdbms/bin
给libclntsh.so.12.1文件改名成libclntsh.so
mv /home/dmdba/dmdbms/bin/libclntsh.so.12.1 /home/dmdba/dmdbms/bin/libclntsh.so
重启达梦数据库,加载dm通过dblink查询oracle数据库数据所需的文件。
3.3配置$ORACLE_HOME
vim /etc/profile进入环境变量文件
export ORACLE_HOME=/oracleclient/instantclient_12_2/
source /etc/profile使环境变量生效
3.4创建DBLINK
在DM管理工具或disql中执行以下语句
CREATE OR REPLACE LINK LINKORA CONNECT 'ORACLE' WITH "Oracle用户" IDENTIFIED BY "Oracle用户密码" USING 'Oracle服务器ip地址:1521/Oracle服务名';
select * from ALL_DB_LINKS;
结果如下。
select count(*) from USER_TABLES@LINKORA;
结果示例如下。
- 总结
推荐使用OCI接口来创建DBLINK连接ORACLE,相对来说,使用OCI接口来创建DBLINK连接ORACLE更加简单,步骤更少,而且可以避免由于版本不匹配导致的连接失败问题。
使用ODBC接口创建DBLINK对比使用OCI接口,多了ODBC配置文件的创建、tnsname.ora文件的创建及TNS_NAME参数和LD_LIBRARY_PATH参数的设置,步骤多了,出错的几率就更高了。