1、环境需求

需要安装配置以下相关软件:

1、Oracle Gateways

(Linux环境 oracle 11.2.0.4 gateways安装包p13390677_112040_Linux-x86-64_Gateways_5of7.zip)

2、ODBC数据源(gateway机器)

3、达梦数据库软件(gateway机器)

2、数据库的连接过程

oracle——>dg4odbc——>odbc——>达梦数据库

  1. 安装odbc

(1)配置yum 源,安装odbc

yum install unixODBC*

rpm -qa unixODBC

rpm -qa unixODBC-devel

验证odbc

odbcinst -j

(2)安装包编译安装odbc

下载odbc

unixODBC

tar -xzvf /tmp/unixODBC-2.3.9.tar.gz -C /usr/local/

cd /usr/local/unixODBC-2.3.9/

./configure –prefix=/usr/local/unixODBC-2.3.9 –includedir=/usr/include –libdir=/usr/lib64 –bindir=/usr/bin –sysconfdir=/etc

make

make install

odbcinst -j

  1. 配置可以通过isql命令连接达梦数据库

本例采用的是yum 安装odbc

(1)环境信息

达梦软件安装目录

/data/dmdbms

oracle数据库基目录

/data/app/oracle

oracle数据库home目录

/data/app/oracle/product/11.2.0/db_1

安装的gateway home目录

/data/app/oracle/product/11.2.0/db_1

软件存放目录

/data/soft

(2)在oracle服务器上安装达梦数据库软件

dmdba用户组创建

groupadd dinstall

useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

创建达梦软件目录并授权

mkdir -p /data/dmdbms

mkdir -p /data/dmsoft

chown dmdba.dinstall /data/dmdbms

chown dmdba.dinstall /data/dmsoft

chown dmdba.dinstall /data

chmod -R 775 /data/

上传达梦软件并挂载

dm8_20220919_x86_kylin10_64_ent_8.1.2.128_pack5.iso

将软件上传到/data/dmsoft

cd /data/dmsoft

mount -o loop dm8_20220919_x86_kylin10_64_ent_8.1.2.128_pack5.iso /mnt

执行安装程序

cd /mnt

[dmdba@clpc-ylgh-test01 mnt]$ ./DMInstall.bin -i

请选择安装语言(C/c:中文 E/e:英文) [C/c]:c

解压安装程序…..

Please select the installer’s language (E/e:English C/c:Chinese) [E/e]:c

解压安装程序………

欢迎使用达梦数据库安装程序

是否输入Key文件路径” />

是否设置时区? (Y/y:是 N/n:否) [Y/y]:n

安装类型:

1 典型安装

2 服务器

3 客户端

4 自定义

请选择安装类型的数字序号 [1 典型安装]:

所需空间: 1835M

请选择安装目录 [/home/dmdba/dmdbms]:/data/dmdbms

可用空间: 395G

是否确认安装路径(/data/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y

安装前小结

安装位置: /data/dmdbms

所需空间: 1835M

可用空间: 395G

版本信息:

有效日期:

安装类型: 典型安装

是否确认安装? (Y/y:是 N/n:否):y

2023-02-21 14:59:15

[INFO] 安装 基础 模块…

2023-02-21 14:59:15

[INFO] 安装达梦数据库…

2023-02-21 14:59:17

[INFO] 安装 服务器 模块…

2023-02-21 14:59:18

[INFO] 安装 客户端 模块…

2023-02-21 14:59:18

[INFO] 安装 驱动 模块…

2023-02-21 14:59:19

[INFO] 安装 手册 模块…

2023-02-21 14:59:19

[INFO] 安装 服务 模块…

2023-02-21 14:59:20

[INFO] 移动日志文件。

2023-02-21 14:59:21

[INFO] 安装达梦数据库完成。

请以root系统用户执行命令:

/data/dmdbms/script/root/root_installer.sh

安装结束

root用户执行脚本

~]# /data/dmdbms/script/root/root_installer.sh

移动 /data/dmdbms/bin/dm_svc.conf 到/etc目录

修改服务器权限

创建DmAPService服务

Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service.

创建服务(DmAPService)完成

启动DmAPService服务

~]#

~]# systemctl stop DmAPService.service

修改dmdba用户环境变量

vi .bash_profile

export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/data/dmdbms/bin”

export DM_HOME=”/data/dmdbms”

#添加

PATH=$PATH:/data/dmdbms/bin

  1. 配置odbc数据源

配置oracle用户环境变量vi /home/oracle/.bash_profile ,添加

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/dmbin

oracle用户环境变量生效

source /home/oracle/.bash_profile

将达梦软件的bin目录拷贝到ORACLE_HOME目录,并授权

cp -r /data/dmdbms/bin /data/app/oracle/product/11.2.0/db_1/dmbin

chown oracle:oinstall /data/app/oracle/product/11.2.0/db_1/dmbin

编辑配置文件/etc/odbcinst.ini

[DM8 ODBC DRIVER]

Description = ODBC DRIVER FOR DM8

Driver = /usr/lib/libdodbc.so –该文件是从达梦bin目录下拷贝的

cp /data/dmdbms/bin/libdodbc.so /usr/lib/libdodbc.so

编辑配置文件/etc/odbc.ini

[DM]

Driver = DM8 ODBC DRIVER –该值和/etc/odbcinst.ini 中,标红的名字一致

Description = DM ODBC DSND

SERVER = 192.168.80.100 –达梦数据库服务器IP

UID = YLJOAXC –达梦数据库用户

PWD = YLJOAXC20230307 –达梦数据库用户密码

TCP_PORT = 5236 –达梦数据库监听端口号

[DMLINK]

Driver = DM8 ODBC DRIVER

Description = DM ODBC DSND

SERVER = 192.168.80.100

UID = SYSDBA

PWD = SYSDBA20230308

  1. 用isql命令测试登录达梦数据库

isql DM -v

isql DMLINK -v

DM配置的是业务用户,访问表不使用用户名,就可以访问表。

DMLINK配置的是SYSDBA用户,访问表必须使用 “用户名.表名” 格式。

  1. 配置Oracle Gateways

oracle 11.2.0.4 已默认安装网关,$ORACLE_HOME/hs/admin

如果没有安装,解压

p13390677_112040_Linux-x86-64_Gateways_5of7.zip安装。

(1)配置init+SID_NAME

cd $ORACLE_HOME/hs/admin

vi initdg4odbc.ora

HS_FDS_CONNECT_INFO = DM –配置的ODBC数据源名称

HS_FDS_TRACE_LEVEL = debug –调试排错的时候可以开启trace

HS_FDS_SHAREABLE_NAME = /usr/lib/libdodbc.so

set ODBCINI=/etc/odbc.ini

HS_LANGUAGE=”simplified chinese_china.al32utf8″

HS_NLS_NCHAR=UCS2

vi initdm8.ora

HS_FDS_CONNECT_INFO = DMLINK

HS_FDS_TRACE_LEVEL = debug

set ODBCINI=/etc/odbc.ini

HS_FDS_SHAREABLE_NAME=/usr/lib/libdodbc.so

HS_LANGUAGE=”simplified chinese_china.al32utf8″

HS_NLS_NCHAR=UCS2

  1. 配置静态监听

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

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

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=dg4odbc)

(ORACLE_HOME=/data/app/oracle/product/11.2.0/db_1)

(PROGRAM=dg4odbc)

)

(SID_DESC=

(SID_NAME=dm8) –SID_NAME对应gateway参数配置文件后面的名称init+SID_NAME.ora

(ORACLE_HOME=/data/app/oracle/product/11.2.0/db_1)

(PROGRAM=dg4odbc) –这里表示配置的是ODBC网关

)

)

ADR_BASE_LISTENER = /data/app/oracle

PROGRAM=dg4odbc这里dg4odbc是不可以修改的,不要修改成sid,这里会执行$ORACLE_HOME/bin下面的一个名字是dg4odbc的文件,dg4odbc是Oracle了解异库的一种协议;

重启监听

(3)配置tnsname.ora

dg4odbctns =

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=hlw)(PORT=1521))

(CONNECT_DATA=(SID=dg4odbc))

(HS=OK) —这里表示连接的是异构数据库

)

dm8tns =

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=hlw)(PORT=1521))

(CONNECT_DATA=(SID=dm8))

(HS=OK)

)

  1. 创建dblink,并测试访问

create public database link LINK_DM8_USER connect to YLJOAXC identified by “YLJOAXC20230307” using ‘dg4odbctns‘;

达梦数据库用户为YLJOAXC,密码为YLJOAXC20230307

create public database link LINK_DM8_SYS connect to SYSDBA identified by “SYSDBA20230308” using ‘dm8tns’;

达梦数据库用户为SYSDBA,密码为SYSDBA20230308

set linesize 200

set pagesize 2000

col OWNER for a10

col db_link for a20

col username for a10

col host for a20

select owner,db_link,username,host from dba_db_links;

测试:

补充

HS_FDS_TRACE_LEVEL = debug 时,$ORACLE_HOME/hs/log会产生trc文件,连接达梦成功后,可以将其设置为OFF

$ORACLE_HOME/hs/log

https://eco.dameng.com