1、下载OCI ,并安装在达梦服务器

在ORACLE官网中下载OCI ,如下链接:

Instant Client for Linux x86-64 (64-bit)

下载与数据库版本一致的OCI,此实验我下载的版本为:11.2.0.4版本OCI下载的OCI包,最好包含basic ,sqlplus ,sdk 并将它上传到达梦数据库所在的服务器上,如下:

rw-r--r--. 1 root root 60704657 11月 24 09:19 instantclient-basic-linux.x64-11.2.0.4.0.zip

所谓安装,即解压即可,在生成的instantclient_11_2 目录中包含了达梦数据库所需要的DBLINK与oralce数据库连接的加载文件。

[root@node01 instantclient_11_2]# ll

总用量 183520

-rwxrwxr-x. 1 root root 25420 11月 25 2013 adrci

-rw-rw-r--. 1 root root 439 11月 25 2013 BASIC_README

-rwxrwxr-x. 1 root root 47860 11月 25 2013 genezi

-rwxrwxr-x. 1 root root 53865194 11月 25 2013 libclntsh.so.11.1

-r-xr-xr-x. 1 root root 7996693 11月 25 2013 libnnz11.so

-rwxrwxr-x. 1 root root 197307411月 25 2013 libocci.so.11.1

-rwxrwxr-x. 1 root root 118738042 11月 25 2013 libociei.so

-r-xr-xr-x. 1 root root 164942 11月 25 2013 libocijdbc11.so

-r--r--r--. 1 root root 2091135 11月 25 2013 ojdbc5.jar

-r--r--r--. 1 root root 2739616 11月 25 2013 ojdbc6.jar

-rwxrwxr-x. 1 root root 19236511月 25 2013 uidrvci

-rw-rw-r--. 1 root root 66779 11月 25 2013 xstreams.jar

2、配置达梦连接Oracle数据库的dblink加载库环境

将上一步解压出来的so文件复制拷贝到达梦数据库所在的bin目录下:

[root@node01 instantclient_11_2]# pwd

/u01/instantclient_11_2

[root@node01 instantclient_11_2]# cp ./.so /home/dmdba/dmdbms/bin

将libclntsh.so.11.1 复制一个名字为:libclntsh.so ,也可以对这个文件创建一个软链接,名字为:libclntsh.so

ldd 查看 libclntsh.so.11.1

[root@node01 instantclient_11_2]# ldd libclntsh.so.11.1

linux-vdso.so.1 => (0x00007fff96f45000)

libnnz11.so => not found

libdl.so.2 => /lib64/libdl.so.2 (0x00007fa73a97f000)

libm.so.6 => /lib64/libm.so.6 (0x00007fa73a6fb000)

libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa73a4de000)

libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fa73a2c4000)

libc.so.6 => /lib64/libc.so.6 (0x00007fa739f30000)

libaio.so.1 => /lib64/libaio.so.1 (0x00007fa739d2f000)

/lib64/ld-linux-x86-64.so.2 (0x0000003911600000)

查找缺失驱动 放置到/lib64 目录下 find / -name "libnnz11.so"

[root@node01 instantclient_11_2]# cp ./libnnz11.so /lib64/

3、重启达梦数据库

具备上一步条件后,重启达梦数据库,重启步骤省略。重启达梦数据库的目的是为了达梦数据库能加载到DBLINK访问Oracle数据库所需要的文件,否则在查询DBLINK时,提示如下信息:

SQL> select * from emp@test3;

select * from emp@test3;

第1 行附近出现错误[-2245]:DBLINK加载库文件失败.

已用时间: 0.751(毫秒). 执行号:4.

4、创建DBLINK,并测试

登录到达梦数据库,创建dblink 并查询oralce数据库中scott用户下的表信息。

[root@oracleadg2 ~]# /home/dmdba/dmdbms/bin/disql sysdba/oracle

SQL> create link "SYSDBA"."TEST3" connect 'ORACLE' with "SCOTT" identified by "scott" using '192.168.3.11:1522/prod';

操作已执行

已用时间: 61.119(毫秒). 执行号:8.

SQL> select * from emp@TEST3;

行号 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

1 7369 SMITH CLERK 7902 1980-12-17 00:00:00 800.00 NULL 20

2 7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600.00 300.00 30

3 7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250.00 500.00 30

4 7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975.00 NULL 20

5 7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250.00 1400.00 30

6 7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850.00 NULL 30

7 7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450.00 NULL 10

8 7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000.00 NULL 20

9 7839 KING PRESIDENT NULL 1981-11-17 00:00:00 5000.00 NULL 10

10 7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500.00 0 30

11 7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100.00 NULL 20

12 7900 JAMES CLERK 7698 1981-12-03 00:00:00 950.00 NULL 30

13 7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000.00 NULL 20

14 7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300.00 NULL 10

14 rows got

已用时间: 105.881(毫秒). 执行号:9.

测试成功

5、注意事项

1、达梦数据库服务器之间通信要通,且防火墙,SELINUX关闭,否则提示如下报错

SQL> select * from v$version@LINK02;

select * from v$version@LINK02;

第1 行附近出现错误[-2251]:DBLINK远程服务器获取对象[v$version]失败.

已用时间: 26.456(毫秒). 执行号:5.

2、oci中so文件需全部拷贝到达梦数据库bin目录中,并且重启达梦数据库,否则提示加载DBLINK的库文件失败。

SQL> select * from emp@test3;

select * from emp@test3;

第1 行附近出现错误[-2245]:DBLINK加载库文件失败.

已用时间: 0.751(毫秒). 执行号:4.

3、注意SQL串中用户为大写,否则提示如下错误信息:

SQL> select * from v$version@LINK02;

select * from v$version@LINK02;

第1 行附近出现错误[-2251]:DBLINK远程服务器获取对象[v$version]失败.

已用时间: 26.456(毫秒). 执行号:5.