文章主要是为了解决工作中的一个问题,应用这边有一个需求,需要使用Oracle 创建DB link连接达梦库,不过在测试安装过程中发现,远端oracle AIX环境上安装达梦和unixODBC有问题,连接不了目标库,而在目标库上由于机器原因,不能安装Oracle库,所以下面方案中就不把透明网关服务部署在源库或目标库上了,通过一台处于远端目标端之间的Linux机器,在上面安装Oracle,达梦,unixODBC,然后配置透明网关的服务解决此问题。

一、整体结构
Oracle 创建DBLINK 连接DM
二、系统环境
源端:操作系统AIX 6.1 Oracle版本:11.2.0.2
远端:操作系统 Centos 7.6 Oracle版本:11.2.0.4 DM版本:DM 8.1
变量配置:ORACLE_HOME=/u01/oracle DM_HOME=/home/oracle/dmdbms
LD_LIBRARY_PATH=/usr/lib64:/u01/oracle/lib:/u01/oracle/network/lib:/home/oracle/dmdbms/bin:/u01/oracle/hs/lib
目标端:操作系统:银河麒麟 DM版本: DM8.2

三、安装配置linx远端环境
1.安装配置Oracle透明网关
详细过程不做说明

安装完成后注意配置LD_LIBRARY_PATH环境变量

2.安装DM数据库
详细过程不做说明

建议安装在Oracle用户下,过程中主要是需要达梦bin目录下的驱动
3.配置unixODBC
建议之前Oracle检查依赖时使用yum将unixODBC包一起装上
[[email protected] ~]# odbcinst -j
unixODBC 2.3.1
DRIVERS…: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES…: /etc/ODBCDataSources
USER DATA SOURCES…: /root/.odbc.ini
SQLULEN Size…: 8
SQLLEN Size…: 8
SQLSETPOSIROW Size.: 8

[[email protected] ~]# vi /etc/odbcinst.ini

[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/psqlodbc.so
Setup = /usr/lib/libodbcpsqlS.so
Driver64 = /usr/lib64/psqlodbc.so
Setup64 = /usr/lib64/libodbcpsqlS.so
FileUsage = 1

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc5.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER =/home/oracle/dmdbms/bin/libdodbc.so

[[email protected] ~]# vi /etc/odbc.ini
[DM]
Description = DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = 192.168.3.99
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

测试ODBC
[[email protected] ~]$ isql DM
±--------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
±--------------------------------------+
SQL>

4 配置Oracle 透明网关 HS,listener,TNS
查看Oracle透明网关服务
[[email protected] ~]# dg4odbc

Oracle Corporation — 星期二 11月 17 2020 13:53:21.006

Heterogeneous Agent Release 11.2.0.4.0 - 64bit Production Built with
Oracle Database Gateway for ODBC

[[email protected] ~]# vi /u01/oracle/hs/admin/initdm8.ora 文件名为init+SID.ora

HS_FDS_CONNECT_INFO =DM //配置为达梦ODBC数据源名称
HS_FDS_TRACE_LEVEL = 255 //开启HS日志
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P15 //Oracle字符集为AL32UTF8的需要设置此参数
HS_FDS_SQLLEN_INTERPRETATION=64
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so //配置ODBC驱动路径
set ODBCINI=/etc/odbc.ini //设置ODBC的目录
set ODBCSYSINI=/etc

配置透明网关监听 //配置监听和TNS时需注意空格和括号
[[email protected] ~]# vi /u01/oracle/network/admin/listener.ora

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.88)(PORT = 1521))
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME=prod )
(ORACLE_HOME = /u01/oracle)
(SID_NAME =prod)
)
(SID_DESC =
(SID_NAME =dm8)
(ORACLE_HOME = /u01/oracle)
(PROGRAM =dg4odbc)
(ENVS =LD_LIBRARY_PATH=/usr/lib64:/u01/oracle/lib:/u01/oracle/network/lib:/home/oracle/dmdbms/bin:/u01/oracle/hs/lib)
)
)
配置TNS

[[email protected] ~]# vi /u01/oracle/network/admin/tnsnames.ora

DM =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST= 192.168.3.88)(PORT=1521))
(CONNECT_DATA=
(SID=dm8)
)
(HS=ok)
)

启动监听服务,使用tnsping验证
[[email protected] ~]$ lsnrctl start
[[email protected] ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-11月-2020 15:42:27

Copyright © 1991, 2013, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.150)(PORT=1521)))LISTENER 的 STATUS

别名 LISTENER
版本 TNSLSNR for Linux: Version 11.2.0.4.0 - Production
启动日期 17-11月-2020 15:42:14
正常运行时间 0 天 0 小时 0 分 13 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 /u01/oracle/network/admin/listener.ora
监听程序日志文件 /u01/diag/tnslsnr/ying/listener/alert/log.xml
监听端点概要…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.3.88)(PORT=1521)))
服务摘要…
服务 “dm8” 包含 1 个实例。
实例 “dm8”, 状态 UNKNOWN, 包含此服务的 1 个处理程序…
服务 “prod” 包含 1 个实例。
实例 “prod”, 状态 UNKNOWN, 包含此服务的 1 个处理程序…
命令执行成功.

[[email protected] admin]$ tnsping DM

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 17-11月-2020 15:44:08

Copyright © 1997, 2013, Oracle. All rights reserved.

已使用的参数文件:
/u01/oracle/network/admin/sqlnet.ora

已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST= 192.168.3.88)(PORT=1521)) (CONNECT_DATA= (SID=DM)) (HS=ok))
OK (40 毫秒)

三、Oracle库创建DBLINK 测试连接
SQL> create database link TEST connect to “SYSDBA” identified by “qweqwe123” using ‘DM’;

Database link created.

SQL> select 1 from [email protected] ;

1

1
测试连通DM库成功

相关文章: