下载OCI ,并安装在达梦服务器
1.1 在ORACLE官网中下载OCI ,如下链接:
https://www.oracle.com/database/technologies/instant-client/linux-arm-aarch64-downloads.html
下载与数据库版本一致的OCI,此实验我下载的版本为:19.10.0.0版本OCI下载的OCI包,最好包含basic ,sqlplus ,sdk 并将它上传到达梦数据库所在的服务器上,如下:
$ cd /u01
$ ll
![](https://i-blog.csdnimg.cn/blog_migrate/bff9d205f6fab8b2b58a88dbc366b83f.png)
1.2 上图中的所有安装包解压后均生成在instantclient_19_10 目录中,包含了达梦数据库需要的DBLINK与oralce数据库连接的加载文件。
注意:将4个文件均进行解压
$ cd instantclient_19_10
$ ls
![](https://i-blog.csdnimg.cn/blog_migrate/9954839743b5f2f00ac001f8ea8c8df4.png)
配置DM连接ORACLE数据库的dblink加载库环境
将上一步解压出来的so文件复制拷贝到达梦数据库所在的bin目录下:
[dmdba@localhost instantclient_19_10]$ pwd
/u01/instantclient_19_10
[dmdba@localhost instantclient_19_10]$ \cp -r instantclient_19_10 /home/dmdba/20230110/dmdbms/bin/
![](https://i-blog.csdnimg.cn/blog_migrate/42c854c7cff8ad785bce114bd4499bbe.png)
ldd 查看 libclntsh.so.19.1
$ cd /home/dmdba/20230110/dmdbms/bin/instantclient_19_10/
$ ldd libclntsh.so.19.1
![](https://i-blog.csdnimg.cn/blog_migrate/a62ac1df79f1d7810d3af2c9a75726a6.png)
在DM机器上配置DM到ORACLE的链接
3.1 在nerwork/admin目录下创建tnsnames.ora文件,并编辑数据库链接信息
$ cd /network/admin
$ cat tnsnames.ora
![](https://i-blog.csdnimg.cn/blog_migrate/3daada89041daf0a5a62db26ddd8df23.png)
3.2 在DM机器上配置环境变量
[dmdba@localhost admin]$ cat ~/.bash_profile
添加
export ORACLE_HOME=/home/dmdba/20230110/dmdbms/bin/instantclient_19_10
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
![](https://i-blog.csdnimg.cn/blog_migrate/97123b7d396004bfa298b2a35636317d.png)
[dmdba@localhost admin]$ source ~/.bash_profile #对环境变量进行生效
![](https://i-blog.csdnimg.cn/blog_migrate/16d622ae028a8240290b1e10a2634213.png)
在DM机器上测试是否可以正常连接到ORACLE 数据库上,并查看表中行数
$ sqlplus NMNXOCRM/123456789@10.15.1.20:1521/testdb
SQL> select count(*) from LINK_TEST;
![](https://i-blog.csdnimg.cn/blog_migrate/4fee3d48067bde02cd1f057c73317cba.png)
5、重启达梦数据库
具备上一步条件后,重启达梦数据库,重启步骤省略。重启达梦数据库的目的是为了达梦数据库能加载到DBLINK访问Oracle数据库所需要的文件,否则在查询DBLINK时,提示如下信息:
SQL> select count(*) from LINK_TEST@DM_ORA;
![](https://i-blog.csdnimg.cn/blog_migrate/3c02b4650c3c66d32094feb29bdd5af3.png)
4、在DM数据库上创建DBLINK,并测试
登录到达梦数据库,创建dblink 并查询oralce数据库中scott用户下的表信息。
$ cd /home/dmdba/20230110/dmdbms/bin
$ ./disql SYSDBA/SYSDBA:15236
SQL> create or replace link dm_ora connect 'ORACLE' with NMNXOCRM identified by 123456789 using '10.15.1.20:1521/testdb';
SQL> select count(*) from LINK_TEST@DM_ORA;
![](https://i-blog.csdnimg.cn/blog_migrate/f4248e5b4dad43ddbd4cda35584e46f2.png)
5、注意事项
1、达梦数据库服务器之间通信要通,且防火墙,SELINUX关闭,否则提示如下报错
SQL> select * from v$version@DM_ORA;
select * from v$version@DM_ORA;
第1 行附近出现错误[-2251]:DBLINK远程服务器获取对象[v$version]失败.
已用时间: 26.456(毫秒). 执行号:5.
2、oci中so文件需全部拷贝到达梦数据库bin目录中,并且重启达梦数据库,否则提示加载DBLINK的库文件失败。
SQL> select * from emp@DM_ORA;
select * from emp@DM_ORA;
第1 行附近出现错误[-2245]:DBLINK加载库文件失败.
已用时间: 0.751(毫秒). 执行号:4.
3、注意SQL串中用户为大写,否则提示如下错误信息:
SQL> select * from v$version@DM_ORA;
select * from v$version@DM_ORA;
第1 行附近出现错误[-2251]:DBLINK远程服务器获取对象[v$version]失败.
已用时间: 26.456(毫秒). 执行号:5.
达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心