f9e63b815389896ed75f1b2929bc2329.png

今天是接着前两天关于达梦数据库配置的最后一个实验,需要回顾前两天实验的朋友,可以点进个人主页回看。事不宜迟,实验开始。

实验环境说明

Linux服务器(192.168.91.100) :达梦7

Linux服务器(192.168.91.55) :Oracle11g 11.2.0.4

WINDOWS服务器(192.168.91.254):win64_11gR2_gateways oracle数据库透明网关

达梦数据库版本:DM Database Server x64 V7.1.5.117-Build(2016.09.29-73607)ENT

达梦认识Oracle,但Oracle并不买账,所以从Oracle数据库建立到达梦数据库的DBLINK,这是要费一番周折。还好DM数据库支持ODBC ,ORACLE在对异构数据库这块也是有需求的,ORACLE数据库可以提供hs异构数据库的配置使得Oracle能够访问目标的异构数据库。而异构数据库则包含了ODBC数据源,也就是说,Oracle可以将ODBC的数据源通过异构hs的配置,将ODBC构造成Oracle数据库的服务,类似从Oracle访问另一个Oracle的数据库,这样就可以在Oracle创建DBLINK进行异构数据库之间的访问。也就是说,我们将目标达梦数据库通过ODBC伪装成Oracle数据库,这样就可以实现Oracle DBlink访问到达梦数据库了。

Oracle数据库和异构数据库不可能在同一台主机,因此ODBC的实现,HS的实现会变得有点繁琐,尤其在Linux平台,配置会变得复杂。我们不喜欢做复杂的事,同样Oracle绝不做复杂的事,因此对于异构数据库的访问需求,Oracle开发了gateways工具,它就像Oracle的客户端工具一样,可以让你轻松访问其他主机上的异构数据库。如DB2,informix ,mysql ,MS SqlServer等等,唯独没有达梦,还好Oracle 没有忘记ODBC,因此在配置Oracle访问达梦的DBLINK,首先要将达梦数据库在windows主机上创建ODBC数据源,然后在windows主机上安装透明网关,并配置hs,将ODBC配置为Oracle自身认可的Oracle服务,然后Oracle源数据就可以通过对该服务创建DBLINK实现oracle到达梦访问。

实验步骤

1、WINDOWS主机上配置达梦ODBC数据源

打开WINDOWS 的控制面板,在管理工具中找到创建ODBC数据源的管理程序,如下图所示:

94a53c87acae26d8eae83f5b678813a4.png

选择系统DSN创建ODBC数据源,单击添加按钮,进入配置页面:

5bebdd03991315575287b62cdb906f64.png

添加数据源,找到对应的数据库驱动:

1ebb633ad8dc13367a7b329943547031.png

注意:前提条件下windows主机上要先安装达梦数据库软件,否则无法获取达梦数据库的驱动。

填写好数据库信息,创建ODBC数据源,如下:

9e58b3914fd11e1b9dc6389bd22c3084.png

配置完成后,进行测试(一定要测试),如下图:

aa417598156efb197e4cc59206905fcc.png

配置完成后最后如下图所示:

23b003e34f9786f5aca79908637c44a8.png

上图配置了一个叫dg4odbc的ODBC数据源。

2、WINDOWS主机上安装透明网关-Gateways

从Oracle官网上下载对应版本的Gateways安装包,Gateways安装具体过程略过,类似安装oracle数据库客户端,安装的组件选择如下图所示:

d85d9c267cd87357dd0177f0f181c39f.png

我们选择的是gateway for ODBC,因此选择这个组件安装即可。

安装完成了会生成以下目录,跟客户端类似,

安装目录如下:E:product11.2.0tg_1

42b5a3f98aa10bfc4af496b5fc736257.png

最主要的是进入到hs目录,以及network/admin目录,配置hs,监听,以及tns。

HS路径:E:product11.2.0tg_1hsadmin

d7fa310cc21064a7a8e6148554999ef5.png

监听及Tnsname.ora路径:E:product11.2.0tg_1NETWORKADMIN

0b3339ad7ede5b7dea2e0ed64575834c.png

3、配置HS,监听,tnsname.ora

配置HS:initdg4odbc.ora

文件命名格式为:init+Service_NAME.ora ,这个Service_NAME就是需要我们自己命名的,在这里我取名叫做dg4odbc,你也可以取其他的名字。该文件配置如下:

# This is a sample agent init file that contains the HS parameters that are

# needed for the Database Gateway for ODBC

#

# HS init parameters

#

HS_FDS_CONNECT_INFO = dg4odbc

HS_FDS_TRACE_LEVEL = OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

#

# Environment variables required for the non-Oracle system

#

#set <envvar>=<value>

配置解析:

HS_FDS_CONNECT_INFO = dg4odbc #这里是要填写ODBC的名字,就是之前对达梦配置的ODBC的名字。

HS_FDS_TRACE_LEVEL = OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

这三个参数是HS异构数据库配置的一些参数,根据情况而定,在这就不做解释。这个文件配置好后,则需要配置tnsname.ora 来创建oracle本地服务。

配置HS:tnsname.ora

Tnsnames.ora文件内容如下:

# This is a sample tnsnames.ora that contains the NET8 parameters that are

# needed to connect to an HS Agent

dg4odbc =

(DESCRIPTION=

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

(CONNECT_DATA=(SID=dg4odbc))

(HS=OK)

)

配置解析:

(CONNECT_DATA=(SID=dg4odbc)):需要配置的数据库的SID,跟配置的hs文件的名字保持一致,这里为dg4odbc。 (HS=OK):表示为异构数据

配置HS:监听Listener.ora

a

# listener.ora Network Configuration File: E:product11.2.0tg_1networkadminlistener.ora

# Generated by Oracle configuration tools.

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = SC-201606142035)(PORT = 1521))

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

)

)

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=dg4odbc)

(ORACLE_HOME=E:product11.2.0tg_1)

(PROGRAM=dg4odbc)

)

)

ADR_BASE_LISTENER = E:product11.2.0tg_1

主要是添加蓝色代码:

配置解析:

SID_NAME=dg4odbc:表示监听的数据库的SID的名称,与配置tnsname.ora中的名字保持一致,这里为dg4odbc。

PROGRAM=dg4odbc:这里dg4odbc 不是指的ODBC的名字,也不是要设置的SID的名字,这里指的是配置为11g的ODBC异构数据库,10g的名字为:tg4odbc。

配置好监听后,就可以启动监听,监听程序的在

E:product11.2.0tg_1bin目录下:

db79aefe76bfe9aee805f82064f09c55.png

双击LSNRCTL.exe文件,先停止,再启动

820560f690a98273b18ae4eb143b1345.png

如果提示没有权限,让它运行在管理员模式下

824202e87e3b99fc8d2eb01aa7a6157a.png

这样就成功创建了一个叫dg4odbc的oracle服务。这服务是可以对外访问的。

4、创建DBLINK,并测试

创建dblink可以直接在数据库中执行创建语句,也可以使用pl/sql工具来创建,如下:

CREATE PUBLIC DATABASE LINK test_sql CONNECT TO "test" identified by "abc1234567" using '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.91.254)(PORT=1521))(CONNECT_DATA=(SID=dg4odbc))(HS=OK))';

测试语句为:select * from dual@test_sql;

意思是创建Oralce访问windows主机上伪造的oracle数据库服务的Dblink,这样Oracle就可以通过这种方式访问到达梦数据库。

注意事项

1、ODBC配置前应在windows主机上安装达梦数据库,否则找不到驱动。

2、ODBC配置后,应进行有效性测试,测试能否正常访问到达梦数据库。

3、安装透明网关后,配置hs的initdg4odbc.ora文件 ,tnsname.ora 文件,监听文件之间的关系要搞清楚。

写到最后

国产数据库是国家信息安全的重中之重,对比国外的数据库产品来讲,国产数据库还存在比较大的差距,但这种差距也越来越小。达梦数据库从安全技术标准,使用习惯以及重要的性能各方面来讲达梦数据库也正一步一个脚印在追赶国外优秀的数据库产品,我们相信在不久的将来国产数据库一定能够取代国外优秀的数据库产品。

END

2f95e7d4df0d5f8b614993e795102a17.png
Logo

一站式 AI 云服务平台

更多推荐