暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux dm到oracle的dblink

原创 wen 2022-08-30
523

目录

一、OCI方式创建dblink

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

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

3、重启达梦数据库

4、创建DBLINK

5、测试dblink的连通性

二、 ODBC方式创建dblink

1. 下载oracle clien、sqlplus和oracle odbc ,并安装在达梦服务器

2. dm端安装ODBC

1).上传odbc包并解压

2).编译ODBC,需要gcc环境

3. ODBC的配置

1).配置ODBC数据源

2)查看ODBC配置文件的路径

3)配置ODBC文件

4.测试ODBC访问Oracle数据库

5.使用ODBC数据源创建DBLINK访问Oracle

6. 测试dblink的连通性

一、OCI方式创建dblink

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

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

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

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

[root@localhost opt]# ls -lrt

-rw-r–r--. 1 root root 68965195 Aug  9 23:38 instantclient-basic-linux.x64-12.2.0.1.0.zip

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

[root@localhost opt]# unzip instantclient-basic-linux.x64-12.2.0.1.0.zip

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

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

[root@localhost instantclient_12_2]# pwd

/opt/instantclient_12_2

[root@localhost instantclient_12_2]# cp ./*.so /home/dmdba/dmdbms/bin

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

[root@localhost instantclient_12_2]# cp libclntsh.so.12.1 libclntsh.so

ldd 查看 libclntsh.so

[root@localhost instantclient_12_2]# ldd libclntsh.so

查找缺失驱动 放置到/lib64 目录下

[root@localhost instantclient_12_2]#  find / -name libmql1.so

[root@localhost instantclient_12_2]# cp libmql1.so /lib64/

[root@localhost instantclient_12_2]# find / -name libipc1.so

[root@localhost instantclient_12_2]# cp libipc1.so /lib64

[root@localhost instantclient_12_2]# find / -name libnnz12.so

[root@localhost instantclient_12_2]# cp libnnz12.so /lib64

[root@localhost instantclient_12_2]# find / -name libons.so

[root@localhost instantclient_12_2]# cp libons.so /lib64

[root@localhost instantclient_12_2]# ls -lrt libnsl*

ls: cannot access ‘libnsl*’: No such file or directory

[root@localhost instantclient_12_2]# find / -name libclntshcore.so.12.1

[root@localhost instantclient_12_2]# cp libclntshcore.so.12.1 /lib64

安装库包

dnf install libnsl

扩展:DNF 取代 YUM

再次查看[root@localhost instantclient_12_2]# ldd libclntsh.so

3、重启达梦数据库

具备上一步条件后,重启达梦数据库

[dmdba@localhost bin]$ ./DmServicetest2 restart

重启达梦数据库的目的是为了达梦数据库能加载到DBLINK访问Oracle数据库所需要的文件

4、创建DBLINK

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

create or replace public link dm2oracle connect ‘ORACLE’ with “SCOTT” identified by “scott” using ‘192.168.50.136:1521/EMREP’;

5、测试dblink的连通性

select *  from EMP@dm2oracle;

二、ODBC方式创建dblink

使用ODBC方式访问Oracle需要Oracle ODBC驱动包

1. 下载oracle clien、sqlplus和oracle odbc ,并安装在达梦服务器

在ORACLE官网中下载oracle client、sqlplus和oracle odbc,如下链接:

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

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

[root@localhost opt]# ls -lrt

-rwxr-xr-x. 1 root root 68965195 Aug  9 23:38 instantclient-basic-linux.x64-12.2.0.1.0.zip

-rwxr-xr-x. 1 root root   634023 Aug 19 01:00 instantclient-odbc-linux.x64-12.2.0.1.0-2.zip

-rw-r–r--.  1 root root   904309 Aug 20 05:19 instantclient-sqlplus-linux.x64-12.2.0.1.0.zip

解压缩

[root@localhost opt]# unzip instantclient-basic-linux.x64-12.2.0.1.0.zi

[root@localhost opt]# unzip instantclient-odbc-linux.x64-12.2.0.1.0-2.zip

[root@localhost opt]# unzip instantclient-sqlplus-linux.x64-12.2.0.1.0.zip

[root@localhost opt]# unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip

2. dm端安装ODBC

两种方式:源码编译和yum安装

此实验用源码编译安装(需要gcc环境)

1).上传odbc包并解压

使用地址http://www.unixodbc.org/可下载unixODBC源码

下载完成后将包上传至源数据库服务器/opt目录,执行如下命令解压文件:

[root@localhost opt]# tar -zxvf  unixODBC-2.3.11.tar.gz

2).编译ODBC,需要gcc环境

[root@localhost unixODBC-2.3.11]#./configure --enable-gui=no

[root@localhost unixODBC-2.3.11]#  make

[root@localhost unixODBC-2.3.11]#  make install

[root@localhost unixODBC-2.3.11]# odbc_config --version

源码编译安装完成之后,还需要检查oracle odbc的依赖是否正常。

如下:

[root@localhost instantclient_12_2]# ldd libsqora.so.12.1

查找缺失驱动,放置到/lib64 目录下

[root@localhost instantclient_12_2]# find / -name libnsl.so.1

[root@localhost instantclient_12_2]# find / -name libclntsh.so.12.1

[root@localhost instantclient_12_2]# cp libclntsh.so.12.1 /lib64

[root@localhost instantclient_12_2]# find / -name libclntshcore.so.12.1

[root@localhost instantclient_12_2]# cp libclntshcore.so.12.1 /lib64

[root@localhost instantclient_12_2]# find / -name libodbcinst.so.2

[root@localhost instantclient_12_2]# cp /usr/local/lib/libodbcinst.so.2 /lib64

安装库包

dnf install libnsl

扩展:DNF 取代 YUM

再次查看[root@localhost instantclient_12_2]# ldd libsqora.so.12.1

[root@localhost instantclient_12_2]# find  / -name libmql1.so

[root@localhost instantclient_12_2]# cp libmql1.so /lib64

[root@localhost instantclient_12_2]# find  / -name libipc1.so

[root@localhost instantclient_12_2]# cp libipc1.so /lib64

[root@localhost instantclient_12_2]# find  / -name libnnz12.so

[root@localhost instantclient_12_2]# cp libnnz12.so /lib64

[root@localhost instantclient_12_2]# find  / -name libons.so

[root@localhost instantclient_12_2]# cp libons.so /lib64

[root@localhost instantclient_12_2]# ldd libsqora.so.12.1

3. ODBC的配置

1).配置ODBC数据源

配置tnsnames.ora,并配置TNS_ADMIN系统环境变量

[root@localhost ~]# cat /opt/instantclient_12_2/network/admin/tnsnames.ora

EMREP =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.136)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = EMREP)

)

)

配置TNS_ADMIN系统环境变量

[root@localhost ~]# vim /etc/profile    —添加下面export

export TNS_ADMIN=/opt/instantclient_12_2/network/admin

[root@localhost ~]# source /etc/profile

[root@localhost instantclient_12_2]# sqlplus / as sysdba@EMREP

bash: sqlplus: command not found…

[root@localhost instantclient_12_2]# ln -s /opt/instantclient_12_2/sqlplus /usr/bin

[root@localhost instantclient_12_2]# sqlplus / as sysdba@EMREP

sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

[root@localhost instantclient_12_2]# find / -name libsqlplus.so

/opt/instantclient_12_2/libsqlplus.so

[root@localhost instantclient_12_2]# cp libsqlplus.so  /lib64

[root@localhost instantclient_12_2]# sqlplus / as sysdba@EMREP

Error 6 initializing SQL*Plus

SP2-0667: Message file sp1.msb not found

SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

。。。。。。

2)查看ODBC配置文件的路径

[root@localhost ~]#  odbcinst -j

3)配置ODBC文件

odbc.ini和odbcinst.ini

[root@localhost ~]# cat /usr/local/etc/odbc.ini

[ORA12]

DSN = ORA12

Driver = Oracle ODBC12

ServerName = EMREP

[root@localhost ~]# cat  /usr/local/etc/odbcinst.ini

[Oracle ODBC12]

Description     = Oracle ODBC Driver

Driver          = /opt/instantclient_12_2/libsqora.so.12.1

4.测试ODBC访问Oracle数据库

[root@localhost ~]# isql -v ORA12 SCOTT scott

Segmentation fault (core dumped)

5.使用ODBC数据源创建DBLINK访问Oracle

create link “LINKODBC” connect ‘ODBC’ with “SCOTT” identified by “scott” using ‘ORA12’;

6. 测试dblink的连通性

SQL> select *  from EMP@LINKODBC;

select *  from EMP@LINKODBC;

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

已用时间: 23.587(毫秒). 执行号:0.

解决方法

将解压后的ODBC目录下的所有.so文件复制到…/dmdbms/bin目录下,再次查询,成功!

[root@localhost unixODBC-2.3.11]# find ./ -name *.so

./cur/.libs/libodbccr.so

./odbcinst/.libs/libodbcinst.so

./DriverManager/.libs/libodbc.so

[root@localhost unixODBC-2.3.11]# cp ./DriverManager/.libs/libodbc.so /home/dmdba/dmdbms/bin

[root@localhost unixODBC-2.3.11]# cp ./cur/.libs/libodbccr.so /home/dmdba/dmdbms/bin

[root@localhost unixODBC-2.3.11]# cp ./odbcinst/.libs/libodbcinst.so /home/dmdba/dmdbms/bin

SQL> select *  from EMP@LINKODBC;

最后修改时间:2022-08-30 14:21:27
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

wen
关注
暂无图片
获得了195次点赞
暂无图片
内容获得1次评论
暂无图片
获得了1次收藏
目录
  • 一、OCI方式创建dblink
    • 1、下载OCI ,并安装在达梦服务器
    • 2、配置达梦连接Oracle数据库的dblink加载库环境
    • 3、重启达梦数据库
    • 4、创建DBLINK
    • 5、测试dblink的连通性
  • 二、ODBC方式创建dblink
    • 1. 下载oracle clien、sqlplus和oracle odbc ,并安装在达梦服务器
    • 2. dm端安装ODBC
      • 1).上传odbc包并解压
      • 2).编译ODBC,需要gcc环境
    • 3. ODBC的配置
      • 1).配置ODBC数据源
      • 2)查看ODBC配置文件的路径
      • 3)配置ODBC文件
  • 4.测试ODBC访问Oracle数据库
  • 5.使用ODBC数据源创建DBLINK访问Oracle
  • 6. 测试dblink的连通性