最新DM8搭建dblink连接Oracle 11G_(19c的OCI)

这篇具有很好参考价值的文章主要介绍了最新DM8搭建dblink连接Oracle 11G_(19c的OCI)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

相关说明

  1. 本方案直接使用19c的OCI连接达梦数据库,即便Oracle版本是11g也没有关系,因为oci版本是向下兼容的。如使用11g的OCI而达梦的版本是1.3.12及以后版本大概率会搭建不起来。
  2. 本方案操作之前请先确认oracle到dm的网络端口畅通并且orale的监听已经配置完成。

一、下载Oracle客户端驱动

以下的下载包已经放到资料包中,也可在官网直接下载
下载地址:Oracle Instant Client Downloads
目前Oracle Instant Client驱动包已经支持ARM架构平台环境。
选择对应平台的Basic和ODBC驱动包:最新DM8搭建dblink连接Oracle 11G_(19c的OCI),达梦数据库,oracle,数据库
最新DM8搭建dblink连接Oracle 11G_(19c的OCI),达梦数据库,oracle,数据库
最新DM8搭建dblink连接Oracle 11G_(19c的OCI),达梦数据库,oracle,数据库
最新DM8搭建dblink连接Oracle 11G_(19c的OCI),达梦数据库,oracle,数据库

二、解压安装Oracle Instant Client包

## 上传安装包到服务器,然后创建目录并解压
[root@localhost ~]# mkdir -p /opt/dm_dblink
[root@localhost dm_dblink]# cd opt/dm_dblink
[root@localhost dm_dblink]# unzip instantclient-basic-linux.x64-19.19.0.0.0dbru.zip
[root@localhost dm_dblink]# unzip instantclient-sdk-linux.x64-19.19.0.0.0dbru.zip
[root@localhost dm_dblink]# unzip instantclient-sqlplus-linux.x64-19.19.0.0.0dbru.zip

#解压以后会在同级目录下生成instantclient_19_19目录
[root@localhost oracle]# cd instantclient_19_19/
[root@localhost instantclient_19_19]# pwd
/opt/oracle/instantclient_19_19
## 所有的驱动包都在/opt/oracle/instantclient_19_13目录下
## ls -l 如下图注意看下有没有下载的版本关系
## 这里注意下libclntsh.so文件有没有软连接
## 因为用的是19c的oci连11g的库,所以这个软连接特别重要                                                 

image.png

三、确认libclntsh.so的对应关系

#ldd查看依赖库的关系,缺一个都不行哦
[root@localhost instantclient_19_19]# ldd libclntsh.so

缺少libnnz19.so

[root@localhost instantclient_19_19]# ldd libclntsh.so
	linux-vdso.so.1 (0x00007ffe047a2000)
	libnnz19.so => not found
	libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f8c5c086000)
	libm.so.6 => /usr/lib64/libm.so.6 (0x00007f8c5bf03000)
	libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f8c5bee2000)
	libnsl.so.1 => not found
	librt.so.1 => /usr/lib64/librt.so.1 (0x00007f8c5bed7000)
	libaio.so.1 => /usr/lib64/libaio.so.1 (0x00007f8c5bed0000)
	libresolv.so.2 => /usr/lib64/libresolv.so.2 (0x00007f8c5beb7000)
	libc.so.6 => /usr/lib64/libc.so.6 (0x00007f8c5bcff000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f8c6020a000)
	libclntshcore.so.19.1 => not found


## 发现在同级目录下确保已经存在 libnnz19.so 文件,但还是报错找不到依赖,可能是由于系统的动态链接器配置问题导致。
[root@localhost instantclient_19_19]# export LD_LIBRARY_PATH=/opt/dm_dblink/instantclient_19_19/
[root@localhost instantclient_19_19]# ldd libclntsh.so
	linux-vdso.so.1 (0x00007fffe13a3000)
	libnnz19.so => /opt/dm_dblink/instantclient_19_19/libnnz19.so (0x00007f36cbc1e000)
	libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f36cbbfe000)
	libm.so.6 => /usr/lib64/libm.so.6 (0x00007f36cba7b000)
	libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f36cba5a000)
	libnsl.so.1 => not found
	librt.so.1 => /usr/lib64/librt.so.1 (0x00007f36cba4f000)
	libaio.so.1 => /usr/lib64/libaio.so.1 (0x00007f36cba48000)
	libresolv.so.2 => /usr/lib64/libresolv.so.2 (0x00007f36cba2f000)
	libc.so.6 => /usr/lib64/libc.so.6 (0x00007f36cb877000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f36d03fb000)
	libclntshcore.so.19.1 => /opt/dm_dblink/instantclient_19_19/libclntshcore.so.19.1 (0x00007f36cb2d2000)
	libnsl.so.1 => not found

## (可选)为了让该配置永久生效,可以添加到/etc/ld.so.conf.d目录下,因为最后会在dmdba中配置环境变量 所以root配不配都行
[root@localhost instantclient_19_19]# echo /opt/dm_dblink/instantclient_19_19 > /etc/ld.so.conf.d/oracle-instantclient.conf
[root@localhost instantclient_19_19]# cat /etc/ld.so.conf.d/oracle-instantclient.conf
/opt/dm_dblink/instantclient_19_19
[root@localhost instantclient_19_13]# ldconfig

image.png

缺少libnsl.so.1

libnsl.so.1 是一个用于网络服务的动态链接库。该库提供了一些用于网络通信的函数和系统调用。它通常与网络相关的程序一起使用,例如服务器程序、网络客户端等。这个库是基于网络套接字编程的一部分,它提供了一些用于网络通信的函数和接口。

#方案一 yum安装 libnsl.so.1 库:
sudo yum install libnsl

#方案二 使用资料包中提供的so库  libnsl.so.1_qlv10
[root@localhost instantclient_19_19]# pwd
/opt/dm_dblink/instantclient_19_19
#修改下so名称
[root@localhost instantclient_19_19]# mv libnsl.so.1_qlv10 libnsl.so.1

image.png

四、将相关依赖库添加到/lib64下

DM8 1.3.12及以后版本,为避免缺少库依赖,所以将两个so 连接到/lib64下

## 配置libclntsh.so软连接
## 因为我这里是11g的库 所以我直接用的是libclntsh.so.11.1,其实用libclntsh.so也可以 都是同一个库
[root@localhost instantclient_19_19]# ln -s libclntsh.so.11.1 /lib64/libclntsh.so
[root@localhost instantclient_19_19]# ll /lib64/libclntsh.so
lrwxrwxrwx 1 root root 17  717 13:19 /lib64/libclntsh.so -> libclntsh.so.11.1
## libocci.so软连接
[root@localhost instantclient_19_19]# ln -s libocci.so /lib64/libocci.so
[root@localhost instantclient_19_19]# ll /lib64/libocci.so
lrwxrwxrwx 1 root root 10  717 13:19 /lib64/libocci.so -> libocci.so

五、配置dmdba环境变量

## 1. 将这个目录赋予dmdba用户权限
[root@localhost instantclient_19_19]# chown dmdba:dinstall /opt/dm_dblink* -R
## 2. 配置dmdba的环境变量
[root@iZ2zegdg3jn4k03ylt4m6rZ ~]# su - dmdba
[dmdba@iZ2zegdg3jn4k03ylt4m6rZ ~]$ vi ~/.bash_profile
##########内容如下##########
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/dmdbms_1_3_26/bin"
export DM_HOME="/opt/dmdbms_1_3_26"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/dmdbms_1_3_26/bin:/lib64:/opt/dm_dblink/instantclient_19_19
#这个编码设置需要看字符集的编码是什么,设置错了dblink查询可能会乱码
#export LANG=zh_CN.utf8
############################
[dmdba@iZ2zegdg3jn4k03ylt4m6rZ ~]$ source ~/.bash_profile
## 3.进行验证
[dmdba@iZ2zegdg3jn4k03ylt4m6rZ ~]$ env |grep LD_LIBRARY_PATH
## 4.需要重启DM数据库,重新加载dblink的库

六、DM端创建Dblink

上面配置成功完成后,达梦数据库可以使用Oracle OCI接口进行访问。创建语法以及使用方法可以参考《DM8 SQL语言使用手册》外部链接章节。Oracle OCI接口相关动态库文件在instantclient-basic包中,配置好上面的环境变量后可以直接创建DBLINK访问。

创建dblink连接

## DBLINK创建语句:
create public link "TEST1" connect 'ORACLE' with "SCOTT" identified by "password" using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 82.156.XXX.XXX)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = oracle )
    )
  )';

强烈不推荐使用这种方式创建DBLINK连接,因为如遇版本升级,该dblink写法可能会不生效从而报错。
image.png

问题1:DBLINK连接丢失

SQL> select * from TEST@TEST1;
select * from TEST@TEST1;
第1 行附近出现错误[-6033]:DBLINK连接丢失.
已用时间: 97.854(毫秒). 执行号:0.

#查看数据库实例日志,确认是账号密码错误

image.png
查看数据库实例日志报错
image.png

问题2:DBLINK加载库文件失败

使用DBLINK访问Oracle目的端报错"DBLINK加载库文件失败"

SQL> select * from t1@link1;
select * from t1@link1;
[-2245]:Error in line: 1
DBLINK load library fail.

b68dffebbdb83abfcbad588969764a3.jpg

原因

(1)第一种情况:检查是否将将相关依赖库添加到/lib64下
(2)第二种情况:DM DBLINK使用的是Oracle OCI方式创建,一般是由于DM数据库未加载Oracle OCI驱动,需要重启DM数据库。(前提是LD_LIBRARY_PATH或者ldconfig配置正确)

七、查询DBLINK

SQL> select * from TEST@TEST1;

行号     C1                                      
---------- ----------------------------------------
1          .333333333333333333333333333333333333333
2          3.3333333333333331E-001

已用时间: 136.162(毫秒). 执行号:800.

踩坑提醒

TNS:could not resolve the connect identifier specified

image.png
新建dblink的时候,尽量采用这种下面这种写法。
image.png
如果数据库是从DM8 1.2.192之前的版本升级到1.3.12以后版本的话,下面创建的dblink方式会失效
image.png

资料包

链接:https://pan.baidu.com/s/1EsuaH39WjsXRSYxl0Bp1fQ?pwd=la5q
提取码:la5q文章来源地址https://www.toymoban.com/news/detail-595840.html

到了这里,关于最新DM8搭建dblink连接Oracle 11G_(19c的OCI)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 达梦数据库(DM8)常用SQL学习

    达梦产品手册 从输出结果看出,用户状态 account_status 为 open,输出的时间为用户的创建时间。 注意:windows系统在DM管理工具中使用该命令无法完成用户切换,直接断开登录后重新连接,更换登录用户即可。 通过触发器脚本实现 解析 UPDATE_TIME_CUSTOM_NAME:触发名称 DEV: 模式名

    2024年02月01日
    浏览(16)
  • dmfldr-快速装载-载入(DM8:达梦数据库)

    DM 提供了快速装载工具:dmfldr; 通过使用快速装载工具能够把按照一定格式排序的文本数据以简单、快速、高效的方式载入到 DM 数据库中,或把 DM 数据库中的数据按照一定格式载出到文本文件中。 dmfldr 在一台机器上启动即可,独立完成快速装载任务,简单高效。 其中,表

    2024年02月06日
    浏览(18)
  • DM8:达梦数据库开启SQL日志sqllog

    在使用数据库过程中,有时候想要查看数据库执行的SQL日志,由于V$SESSIONS 系统视图默认保留10000条,不满足需求,可以配置开启SQLLOG; 登陆达梦数据库管理工具或 disql 执行命令 开启后注意观察数据库log目录的dmsql开头的日志文件,是否达到256MB后正常切换,达到20个日志文件

    2024年02月10日
    浏览(18)
  • 数据库应用:kylin 部署 达梦数据库DM8

    目录   一、实验 1.环境 2.部署前规划 3.部署达梦数据库DM8 4.创建数据库及数据库事例管理 5.达梦数据库的基本操作 二、问题 1.xhost命令报错 2.执行安装程序DMInstall.bin 报错 3.解压安装程序报错 4.安装程序找不到文件 5.图像化界面打不开 6.安装内存太小 7.打开图形化界面报错

    2024年02月19日
    浏览(17)
  • springboot使用达梦数据库(DM8)整合MybatisPlus

    在idea中开发spring boot项目,用到的数据库是达梦数据库,想要使用 MybatisPlus 自动生成实体类和服务,并且通过 MybatisPlus 完成一些简单的数据库CRUD ps:这里的 MybatisPlus 版本必须要是3.0以上 2.1、pom ps:其中需要将达梦数据库的依赖添加到指定目录下,不然达梦的依赖无法生效

    2024年02月16日
    浏览(22)
  • Linux安装达梦数据库/DM8(附带客户端工具安装完整版)

    1.1、创建安装与运行的Linux用户 官方也明确提出,为了减少对操作系统的影响, Linux 用户不应该已 root 用户和默认的用户组来安装与运行达梦数据库,应该为 DM 创建一个专用的用户组和系统用户。例如: 1.2、操作系统资源限制检查 这也是官方给出的提醒,在 Linux 系统中,

    2024年02月02日
    浏览(27)
  • -9501 MAL系统没有配置或者服务器不是企业版(dm8达梦数据库)

    搭建主备集群时,遇到报错-9501 MAL系统没有配置或者服务器不是企业版 检查dmmal.ini配置文件权限正确 dmdba:dinstall,内容正确 检查dm.key授权是支持主备或读写分离 检查dm.ini 参数配置 最终定位问题是 dm.ini 中 INSTANCE_NAME 参数值 与dmmal.ini 中MAL_INST_NAME 不匹配的原因,修改后启动

    2024年02月11日
    浏览(16)
  • 麒麟操作系统Kylin V10 安装达梦数据库DM8 客户端远程调试

    一、环境准备 软件名称 版本 vmware workstation 16.1.2 build-17966106 银河麒麟 Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso 达梦DM8 DMInstall.bin 银河麒麟 server v10 x86架构安装iso镜像。 Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso 二、DM8数据库安装 以下操作可以使用远程工具执行命令 1. 启动网络

    2024年02月04日
    浏览(30)
  • 配置ODBC驱动连接DM8数据库

    ODBC提供访问不同类型的数据库的途径。结构化查询语言 SQL 是一种用来访问数据库的语言。通过使用 ODBC,应用程序能够使用相同的源代码和各种各样的数据库交互。这使得开发者不需要以特殊的数据库管理系统 DBMS 为目标,或者了解不同支撑背景的数据库的详细细节,就能

    2024年02月16日
    浏览(14)
  • Windows-Oracle11g 安装详解-含Navicate远程连接配置 -本地监听设置及更换navicate环境指向的oci.dll

    https://www.oracle.com/partners/campaign/112010-win64soft-094461.html 下一步可能会出现 [INS-13001] 的提示,这是因为版本注册的问题。 Oracle 在发布 11g时,Winodws10还没有发布。所以Oracle的安装程序中,并没有将Windows10作为被认证的操作系统。 解决方案: 第一种方法:直接忽略安装即可。 第

    2024年02月03日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包