达梦通过DBLINK访问Oracle数据库有两种方式一种是通过Oracle oci接口,一种是通过ODBC数据源的方式。
这里使用oci的方式去访问ORACLE
1.本次环境:
操作系统版本:Centos 7.9
Oracle数据库版本:Oracle 19.26
192.168.133.120:1521/orclpdb3
DM数据库版本:DM V8 1-2-70 ENT
192.168.133.180:5236
Oracle Instant Client包版本:19.26
数据库字符集:Oracle al32utf8,DM utf8
2.下载Oracle客户端驱动(Instant Client)
https://www.oracle.com/database/ ... 6-64-downloads.html
选择对应平台的Basic和ODBC驱动包:
Basic Package(instantclient-basic) *必须
ODBC Package (instantclient-odbc)*可选
另外,还需要注意Oracle Instant Client高版本包对glibc版本有要求,需要glibc 2.14或者以上环境
3、查看系统环境
3.1、检查glibc版本
[root@dmserver ~]# rpm -qi glibc
Name : glibc
Version : 2.17
Release : 317.el7
Architecture: x86_64
Install Date: Fri 06 Dec 2024 12:54:38 PM CST
Group : System Environment/Libraries
Size : 14100602
License : LGPLv2+ and LGPLv2+ with exceptions and GPLv2+
Signature : RSA/SHA256, Thu 15 Oct 2020 02:49:59 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : glibc-2.17-317.el7.src.rpm
Build Date : Wed 30 Sep 2020 10:14:55 AM CST
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.gnu.org/software/glibc/
Summary : The GNU libc libraries
Description :
The glibc package contains standard libraries which are used by
multiple programs on the system. In order to save disk space and
memory, as well as to make upgrading easier, common system code is
kept in one place and shared between programs. This particular package
contains the most important sets of shared libraries: the standard C
library and the standard math library. Without these two libraries, a
Linux system will not function.
[root@dmserver ~]#
[root@dmserver ~]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
3.2、检查是否有安装libaio包
[root@dmserver ~]# rpm -qa|grep libaio
libaio-0.3.109-13.el7.x86_64
[root@dmserver ~]#
4.解压安装Oracle Instant Client包
上传安装包到服务器,然后创建目录并解压
mkdir -p /opt/oracle
[root@dmserver setup]# ls -ltr
total 2009220
drwxr-xr-x. 2 root root 6 Dec 8 10:17 os
drwxr-xr-x. 7 postgres postgres 4096 Dec 28 16:09 source
-rw-r--r-- 1 root root 240 Feb 14 10:52 dm8_20250122_x86_rh7_64.README
-rw-r--r-- 1 root root 100 Feb 14 10:52 dm8_20250122_x86_rh7_64.iso_SHA256.txt
-rw-r--r-- 1 root root 997971968 Feb 14 10:52 dm8_20250122_x86_rh7_64.iso
-rw-r--r-- 1 root root 981779338 Feb 17 14:27 dm8_20250122_x86_rh7_64.zip
-rw-r--r-- 1 root root 651180 Mar 23 18:12 instantclient-odbc-linux.x64-19.26.0.0.0dbru.zip
-rw-r--r-- 1 root root 77020960 Mar 23 18:12 instantclient-basic-linux.x64-19.26.0.0.0dbru.zip
[root@dmserver setup]# unzip instantclient-basic-linux.x64-19.26.0.0.0dbru.zip -d /opt/oracle
Archive: instantclient-basic-linux.x64-19.26.0.0.0dbru.zip
inflating: /opt/oracle/META-INF/MANIFEST.MF
inflating: /opt/oracle/META-INF/ORACLE_C.SF
inflating: /opt/oracle/META-INF/ORACLE_C.RSA
inflating: /opt/oracle/instantclient_19_26/adrci
inflating: /opt/oracle/instantclient_19_26/BASIC_LICENSE
inflating: /opt/oracle/instantclient_19_26/BASIC_README
inflating: /opt/oracle/instantclient_19_26/genezi
inflating: /opt/oracle/instantclient_19_26/libccme_asym.so
inflating: /opt/oracle/instantclient_19_26/libccme_base_non_fips.so
inflating: /opt/oracle/instantclient_19_26/libccme_base.so
inflating: /opt/oracle/instantclient_19_26/libccme_ecc_non_fips.so
inflating: /opt/oracle/instantclient_19_26/libccme_ecc.so
inflating: /opt/oracle/instantclient_19_26/libclntshcore.so.19.1
linking: /opt/oracle/instantclient_19_26/libclntsh.so -> libclntsh.so.19.1
linking: /opt/oracle/instantclient_19_26/libclntsh.so.10.1 -> libclntsh.so.19.1
linking: /opt/oracle/instantclient_19_26/libclntsh.so.11.1 -> libclntsh.so.19.1
linking: /opt/oracle/instantclient_19_26/libclntsh.so.12.1 -> libclntsh.so.19.1
linking: /opt/oracle/instantclient_19_26/libclntsh.so.18.1 -> libclntsh.so.19.1
inflating: /opt/oracle/instantclient_19_26/libclntsh.so.19.1
inflating: /opt/oracle/instantclient_19_26/libcryptocme.so
inflating: /opt/oracle/instantclient_19_26/libipc1.so
inflating: /opt/oracle/instantclient_19_26/libmql1.so
inflating: /opt/oracle/instantclient_19_26/libnnz19.so
linking: /opt/oracle/instantclient_19_26/libocci.so -> libocci.so.19.1
linking: /opt/oracle/instantclient_19_26/libocci.so.10.1 -> libocci.so.19.1
linking: /opt/oracle/instantclient_19_26/libocci.so.11.1 -> libocci.so.19.1
linking: /opt/oracle/instantclient_19_26/libocci.so.12.1 -> libocci.so.19.1
linking: /opt/oracle/instantclient_19_26/libocci.so.18.1 -> libocci.so.19.1
inflating: /opt/oracle/instantclient_19_26/libocci.so.19.1
inflating: /opt/oracle/instantclient_19_26/libociei.so
inflating: /opt/oracle/instantclient_19_26/libocijdbc19.so
inflating: /opt/oracle/instantclient_19_26/liboramysql19.so
inflating: /opt/oracle/instantclient_19_26/libtfojdbc1.so
creating: /opt/oracle/instantclient_19_26/network/
inflating: /opt/oracle/instantclient_19_26/ojdbc8.jar
inflating: /opt/oracle/instantclient_19_26/ucp.jar
inflating: /opt/oracle/instantclient_19_26/uidrvci
inflating: /opt/oracle/instantclient_19_26/xstreams.jar
creating: /opt/oracle/instantclient_19_26/network/admin/
inflating: /opt/oracle/instantclient_19_26/network/admin/README
finishing deferred symbolic links:
/opt/oracle/instantclient_19_26/libclntsh.so -> libclntsh.so.19.1
/opt/oracle/instantclient_19_26/libclntsh.so.10.1 -> libclntsh.so.19.1
/opt/oracle/instantclient_19_26/libclntsh.so.11.1 -> libclntsh.so.19.1
/opt/oracle/instantclient_19_26/libclntsh.so.12.1 -> libclntsh.so.19.1
/opt/oracle/instantclient_19_26/libclntsh.so.18.1 -> libclntsh.so.19.1
/opt/oracle/instantclient_19_26/libocci.so -> libocci.so.19.1
/opt/oracle/instantclient_19_26/libocci.so.10.1 -> libocci.so.19.1
/opt/oracle/instantclient_19_26/libocci.so.11.1 -> libocci.so.19.1
/opt/oracle/instantclient_19_26/libocci.so.12.1 -> libocci.so.19.1
/opt/oracle/instantclient_19_26/libocci.so.18.1 -> libocci.so.19.1
[root@dmserver setup]# unzip instantclient-odbc-linux.x64-19.26.0.0.0dbru.zip -d /opt/oracle
Archive: instantclient-odbc-linux.x64-19.26.0.0.0dbru.zip
replace /opt/oracle/META-INF/MANIFEST.MF? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
inflating: /opt/oracle/META-INF/MANIFEST.MF
inflating: /opt/oracle/META-INF/ORACLE_C.SF
inflating: /opt/oracle/META-INF/ORACLE_C.RSA
creating: /opt/oracle/instantclient_19_26/help/
creating: /opt/oracle/instantclient_19_26/help/us/
creating: /opt/oracle/instantclient_19_26/help/us/img_text/
inflating: /opt/oracle/instantclient_19_26/help/us/img_text/odbcdrvarch.htm
inflating: /opt/oracle/instantclient_19_26/help/us/img_text/setup_app.htm
inflating: /opt/oracle/instantclient_19_26/help/us/img_text/odbcmodel.htm
inflating: /opt/oracle/instantclient_19_26/help/us/img_text/setup_work.htm
inflating: /opt/oracle/instantclient_19_26/help/us/img_text/setup_ssmig.htm
inflating: /opt/oracle/instantclient_19_26/help/us/img_text/setup_ora.htm
inflating: /opt/oracle/instantclient_19_26/help/us/sqora.htm
inflating: /opt/oracle/instantclient_19_26/help/us/toc.htm
creating: /opt/oracle/instantclient_19_26/help/us/META-INF/
inflating: /opt/oracle/instantclient_19_26/help/us/META-INF/MANIFEST.MF
inflating: /opt/oracle/instantclient_19_26/help/us/blafdoc.css
inflating: /opt/oracle/instantclient_19_26/help/us/map.xml
inflating: /opt/oracle/instantclient_19_26/help/us/cpyr.htm
creating: /opt/oracle/instantclient_19_26/help/us/img/
inflating: /opt/oracle/instantclient_19_26/help/us/img/odbcdrvarch.gif
inflating: /opt/oracle/instantclient_19_26/help/us/img/setup_app.gif
inflating: /opt/oracle/instantclient_19_26/help/us/img/setup_ora.gif
inflating: /opt/oracle/instantclient_19_26/help/us/img/setup_ssmig.gif
inflating: /opt/oracle/instantclient_19_26/help/us/img/odbcmodel.gif
inflating: /opt/oracle/instantclient_19_26/help/us/img/setup_work.gif
inflating: /opt/oracle/instantclient_19_26/help/us/oracle.gif
creating: /opt/oracle/instantclient_19_26/help/ja/
creating: /opt/oracle/instantclient_19_26/help/ja/img_text/
inflating: /opt/oracle/instantclient_19_26/help/ja/img_text/odbcdrvarch.htm
inflating: /opt/oracle/instantclient_19_26/help/ja/img_text/setup_app.htm
inflating: /opt/oracle/instantclient_19_26/help/ja/img_text/odbcmodel.htm
inflating: /opt/oracle/instantclient_19_26/help/ja/img_text/setup_work.htm
inflating: /opt/oracle/instantclient_19_26/help/ja/img_text/setup_ssmig.htm
inflating: /opt/oracle/instantclient_19_26/help/ja/img_text/setup_ora.htm
inflating: /opt/oracle/instantclient_19_26/help/ja/sqora.htm
inflating: /opt/oracle/instantclient_19_26/help/ja/toc.htm
creating: /opt/oracle/instantclient_19_26/help/ja/META-INF/
inflating: /opt/oracle/instantclient_19_26/help/ja/META-INF/MANIFEST.MF
inflating: /opt/oracle/instantclient_19_26/help/ja/blafdoc.css
inflating: /opt/oracle/instantclient_19_26/help/ja/map.xml
inflating: /opt/oracle/instantclient_19_26/help/ja/cpyr.htm
creating: /opt/oracle/instantclient_19_26/help/ja/img/
inflating: /opt/oracle/instantclient_19_26/help/ja/img/odbcdrvarch.gif
inflating: /opt/oracle/instantclient_19_26/help/ja/img/setup_app.gif
inflating: /opt/oracle/instantclient_19_26/help/ja/img/setup_ora.gif
inflating: /opt/oracle/instantclient_19_26/help/ja/img/setup_ssmig.gif
inflating: /opt/oracle/instantclient_19_26/help/ja/img/odbcmodel.gif
inflating: /opt/oracle/instantclient_19_26/help/ja/img/setup_work.gif
inflating: /opt/oracle/instantclient_19_26/help/ja/oracle.gif
inflating: /opt/oracle/instantclient_19_26/libsqora.so.19.1
inflating: /opt/oracle/instantclient_19_26/ODBC_LICENSE
inflating: /opt/oracle/instantclient_19_26/ODBC_README
inflating: /opt/oracle/instantclient_19_26/odbc_update_ini.sh
[root@dmserver setup]# cd /opt/oracle
[root@dmserver oracle]# pwd
/opt/oracle
[root@dmserver oracle]# ls -ltr
total 4
drwxr-xr-x 2 root root 64 Mar 23 18:14 META-INF
drwxr-xr-x 4 root root 4096 Mar 23 18:14 instantclient_19_26
[root@dmserver oracle]# cd instantclient_19_26/
[root@dmserver instantclient_19_26]# pwd
/opt/oracle/instantclient_19_26
[root@dmserver instantclient_19_26]# ls -ltr
total 240004
-rwxr-xr-x 1 root root 237840 Jan 18 21:34 uidrvci
drwxr-xr-x 3 root root 19 Jan 18 21:34 network
-rwxr-xr-x 1 root root 116352 Jan 18 21:34 liboramysql19.so
-rwxr-xr-x 1 root root 130576848 Jan 18 21:34 libociei.so
-rwxr-xr-x 1 root root 2337384 Jan 18 21:34 libocci.so.19.1
-rwxr-xr-x 1 root root 5910424 Jan 18 21:34 libnnz19.so
-r-xr-xr-x 1 root root 478784 Jan 18 21:34 libmql1.so
-r-xr-xr-x 1 root root 3813840 Jan 18 21:34 libipc1.so
-rwxr-xr-x 1 root root 403440 Jan 18 21:34 libcryptocme.so
-rwxr-xr-x 1 root root 82725112 Jan 18 21:34 libclntsh.so.19.1
-rwxr-xr-x 1 root root 8062680 Jan 18 21:34 libclntshcore.so.19.1
-rwxr-xr-x 1 root root 1080384 Jan 18 21:34 libccme_ecc.so
-rwxr-xr-x 1 root root 151744 Jan 18 21:34 libccme_ecc_non_fips.so
-rwxr-xr-x 1 root root 821488 Jan 18 21:34 libccme_base.so
-rwxr-xr-x 1 root root 713792 Jan 18 21:34 libccme_base_non_fips.so
-rwxr-xr-x 1 root root 640088 Jan 18 21:34 libccme_asym.so
-rwxr-xr-x 1 root root 59328 Jan 18 21:34 genezi
-rw-r--r-- 1 root root 1634 Jan 18 21:34 BASIC_README
-r-xr-xr-x 1 root root 5780 Jan 18 21:34 BASIC_LICENSE
-rwxr-xr-x 1 root root 41984 Jan 18 21:34 adrci
-rw-r--r-- 1 root root 31825 Jan 18 21:34 xstreams.jar
-rw-r--r-- 1 root root 1698367 Jan 18 21:34 ucp.jar
-rw-r--r-- 1 root root 4533489 Jan 18 21:34 ojdbc8.jar
-r-xr-xr-x 1 root root 18840 Jan 18 21:34 libtfojdbc1.so
-r-xr-xr-x 1 root root 153624 Jan 18 21:34 libocijdbc19.so
-rwxr-xr-x 1 root root 4961 Jan 18 21:35 odbc_update_ini.sh
-rw-r--r-- 1 root root 7651 Jan 18 21:35 ODBC_README
-r-xr-xr-x 1 root root 5780 Jan 18 21:35 ODBC_LICENSE
-rwxr-xr-x 1 root root 1070280 Jan 18 21:35 libsqora.so.19.1
drwxr-xr-x 4 root root 26 Jan 18 21:35 help
lrwxrwxrwx 1 root root 15 Mar 23 18:14 libocci.so.18.1 -> libocci.so.19.1
lrwxrwxrwx 1 root root 15 Mar 23 18:14 libocci.so.12.1 -> libocci.so.19.1
lrwxrwxrwx 1 root root 15 Mar 23 18:14 libocci.so.11.1 -> libocci.so.19.1
lrwxrwxrwx 1 root root 15 Mar 23 18:14 libocci.so.10.1 -> libocci.so.19.1
lrwxrwxrwx 1 root root 15 Mar 23 18:14 libocci.so -> libocci.so.19.1
lrwxrwxrwx 1 root root 17 Mar 23 18:14 libclntsh.so.18.1 -> libclntsh.so.19.1
lrwxrwxrwx 1 root root 17 Mar 23 18:14 libclntsh.so.12.1 -> libclntsh.so.19.1
lrwxrwxrwx 1 root root 17 Mar 23 18:14 libclntsh.so.11.1 -> libclntsh.so.19.1
lrwxrwxrwx 1 root root 17 Mar 23 18:14 libclntsh.so.10.1 -> libclntsh.so.19.1
lrwxrwxrwx 1 root root 17 Mar 23 18:14 libclntsh.so -> libclntsh.so.19.1
[root@dmserver instantclient_19_26]# pwd
/opt/oracle/instantclient_19_26
5、配置环境变量
添加到/etc/ld.so.conf.d目录下
[root@dmserver instantclient_19_26]# echo /opt/oracle/instantclient_19_26 > /etc/ld.so.conf.d/oracle-instantclient.conf
[root@dmserver instantclient_19_26]# ls -ltr /etc/ld.so.conf.d/oracle-instantclient.conf
-rw-r--r-- 1 root root 32 Mar 23 18:16 /etc/ld.so.conf.d/oracle-instantclient.conf
[root@dmserver instantclient_19_26]# cat /etc/ld.so.conf.d/oracle-instantclient.conf
/opt/oracle/instantclient_19_26
[root@dmserver instantclient_19_26]# ldconfig
配置LD_LIBRARY_PATH环境变量
修改dmdba用户下的.bash_profile文件,添加如下内容:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/u01/app/dmdbms/bin:/opt/oracle/instantclient_19_26"
[root@dmserver instantclient_19_26]# su - dmdba
Last login: Sun Mar 23 17:21:24 CST 2025 on pts/1
[dmdba@dmserver ~]$ vim .bash_profile
...
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/u01/app/dmdbms/bin:/opt/oracle/instantclient_19_26"
...
[dmdba@dmserver ~]$ source .bash_profile
验证:
[dmdba@dmserver ~]$ env|grep LD_LIBRARY_PATH
LD_LIBRARY_PATH=:/u01/app/dmdbms/bin:/opt/oracle/instantclient_19_26
6、通过ORACLE OCI接口的方式访问
上面配置成功完成后,达梦数据库可以使用Oracle OCI接口进行访问。创建语法以及使用方法可以参考《DM8 SQL语言使用手册》外部链接章节。Oracle OCI接口相关动态库文件在instantclient-basic包中,配置好上面的环境变量后可以直接创建DBLINK访问。
DBLINK创建语句:
[dmdba@dmserver bin]$ ./DmServiceszdb restart
Stopping DmServiceszdb: [ OK ]
Starting DmServiceszdb: [ OK ]
[dmdba@dmserver bin]$ ./disql sysdba/sztech_4U
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.356(ms)
disql V8
SQL> create link "linkora" connect 'oracle' with "HR" identified by "hr" using '192.168.133.120:1521/orclpdb3';
操作已执行
已用时间: 4.549(毫秒). 执行号:601.
SQL> select * from v$version@"linkora" ;
行号 BANNER BANNER_FULL
---------- ---------------------------------------------------------------------- ------------------------------------------------------------------------------------------
BANNER_LEGACY CON_ID
---------------------------------------------------------------------- ------
1 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.26.0.0.0
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 0
已用时间: 53.972(毫秒). 执行号:602.
SQL> select * from emp@"linkora";
行号 EMPID LAST_NAME
---------- ----- ---------
1 101 思庄
已用时间: 4.872(毫秒). 执行号:806.
SQL>
导致,配置完毕,在达梦数据库中,可以看到oracle数据库中信息。
|