Oracle--DM8的dblink创建

本文详细指导如何在Oracle 11g环境中配置ODBC驱动,创建达梦DM8的DBLink,并通过实例演示了dblink的创建、测试和验证过程。

Oracle–DM8的dblink的创建

1、环境信息

操作系统RedHat 7.5
Oracle版本11g
达梦版本DM8

IP地址:

Oracle192.168.111.10
DM192.168.111.22

2、Oracle端配置

2.1安装ODBC

[root@localhost upload]# ls
unixODBC-2.3.0.tar.gz
[root@localhost upload]# tar zxvf unixODBC-2.3.0.tar.gz
[root@localhost upload]# cd unixODBC-2.3.0
[root@localhost unixODBC-2.3.0]# ./configure --with-iconv-char-enc=GB18030 --enable-iconv=yes
[root@localhost unixODBC-2.3.0]# make && make install
[root@localhost unixODBC-2.3.0]# cd /usr/local/etc/
[root@localhost etc]# ls
ODBCDataSources  odbc.ini  odbcinst.ini

2.2 配置ODBC

[root@localhost etc]# cat odbc.ini 
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 192.168.111.22
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
CHARSET = GB18030

[root@localhost etc]# cat odbcinst.ini 
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dmdbms/bin/libdodbc.so  #此处的/dmdbms/bin/是存放了达梦数据库中安装目录下的 bin 目录,需要手工上传到 Oracle 服务器
threading = 0

2.3环境变量修改

[root@localhost etc]# cat odbc.ini 
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 192.168.111.22
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
CHARSET = GB18030

[root@localhost etc]# cat odbcinst.ini 
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dmdbms/bin/libdodbc.so  #此处的/dmdbms/bin/是存放了达梦数据库中安装目录下的 bin 目录,需要手工上传到 Oracle 服务器
threading = 0
2.3 添加环境变量库文件路径并使环境变量生效
[oracle@localhost ~]$ cat .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_home
export LD_LIBRARY_PATH=$ORACLE_HOME/bin:$LD_LIBRARY_PATH:/dmdbms/bin
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
umask 022
export PATH
[oracle@localhost ~]$ source .bash_profile

在这里插入图片描述
2.4修改文件属性

[root@localhost etc]# chmod 755 /usr/local/etc/odbc.ini 
[root@localhost etc]# chmod 755 /usr/local/etc/odbcinst.ini 
[root@localhost etc]#  chown oracle:oinstall /usr/local/etc/odbc.ini
[root@localhost etc]#  chown oracle:oinstall /usr/local/etc/odbcinst.ini

2.5登录测试

[oracle@localhost ~]$ isql -v dm8
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select id_code;
+---------------------------------------------------------------------------------------------------------------------------------+
| ID_CODE                                                                                                                         |
+---------------------------------------------------------------------------------------------------------------------------------+
| 1-1-88-20.06.24-123627-ENT                                                                                                      |
+---------------------------------------------------------------------------------------------------------------------------------+
SQLRowCount returns 1
1 rows fetched

2.6 编辑透明网关文件

[oracle@localhost ~]$ cd /u01/app/oracle/product/11.2.0/db_home/hs/admin/
[oracle@localhost admin]$ ls
extproc.ora  initdg4odbc.ora  listener.ora.sample  tnsnames.ora.sample
[oracle@localhost admin]$ vi initDM8.ora
[oracle@localhost admin]$ cat initDM8.ora 
HS_FDS_CONNECT_INFO = DM8
HS_FDS_TRACE_LEVEL = 255
set ODBCINI=/usr/local/etc/odbc.ini
HS_FDS_SHAREABLE_NAME =/usr/local/lib/libodbc.so
HS_LANGUAGE =American_America.ZHS16GBK

2.7 配置静态监听listener.ora和 tnsnames.ora(如果文件不存在则新建)
如果直接复制文件内容粘贴到文件中以后监听重启失败;
解决方法:
把/u01/app/oracle/product/11.2.0/db_home/hs/admin/下的listener.ora.sample文件复制到/u01/app/oracle/product/11.2.0/db_home/network/admin目录下,并修改相应路径,
添加一行参数:(ENVS=LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/db_home/lib:/lib:/usr/lib:/dmdbms/bin)

[oracle@localhost admin]$ pwd
/u01/app/oracle/product/11.2.0/db_home/network/admin

[oracle@localhost admin]$ cat listener.ora 
# This is a sample listener.ora that contains the NET8 parameters that are
# needed to connect to an HS Agent

LISTENER =
 (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
 )

SID_LIST_LISTENER=
  (SID_LIST=
      (SID_DESC=
         (SID_NAME=DM8)
         (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_home)
          (ENVS=LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/db_home/lib:/lib:/usr/lib:/dmdbms/bin)
         (PROGRAM=dg4odbc)
      )
  )
 
 [oracle@localhost admin]$ cat tnsnames.ora 
DM8 =
 (DESCRIPTION =
 (ADDRESS_LIST =
 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.10)(PORT = 1521))
 )
 (CONNECT_DATA =
 (SERVICE_NAME = DM8)
 (SID = DM8)
 )
 (HS=OK)
 ) 

2.8 重启监听并测试是否可以识别

[oracle@localhost ~]$ lsnrctl stop  |  start  |  status
[oracle@localhost admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 25-NOV-2020 11:09:25

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/11.2.0/db_home/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/db_home/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                25-NOV-2020 11:09:25
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/db_home/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary...
Service "DM8" has 1 instance(s).
  Instance "DM8", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully


测试是否可以识别:
[oracle@localhost ~]$ tnsping DM8

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 24-NOV-2020 18:07:38

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.10)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = DM8)) (HS=OK))
OK (0 msec)

2.9 创建dblink并验证是否可用

[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Nov 24 18:08:06 2020

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create public database link DMLINK connect to "SYSDBA" identified by "SYSDBA" USING 'DM8';

Database link created.

SQL> select * from v$version@dmlink;

BANNER
--------------------------------------------------------------------------------
DM Database Server 64 V8
DB Version: 0x7000a

SQL> select * from aaa@dmlink;

	ID
----------
       222
       444

SQL> 
### 配置达梦数据库中的DBLink以连接至Oracle #### 使用OCI接口配置DBLink 为了使达梦数据库能够通过DBLink访问Oracle数据库,推荐采用Oracle OCI(Oracle Call Interface)方式进行配置[^3]。 - **下载并安装Oracle客户端驱动** Oracle Instant Client 是实现这一目标所必需的组件之一。可以从指定网站获取适用于操作系统的最新版本Instant Client包,并按照说明完成安装过程。 - **创建监听器** 在Oracle端需建立一个监听程序来接收来自达梦数据库发出的数据请求。这通常涉及到编辑`listener.ora`文件以及启动监听服务[^5]。 - **修改tnsnames.ora文件** 此文件用于定义网络服务名与实际数据库实例之间的映射关系,在其中添加针对目标Oracle数据库的服务条目是必要的步骤之一。 ```bash # Example entry in tnsnames.ora file ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host_ip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl_service_name) ) ) ``` - **在达梦侧执行SQL命令创建DBLink对象** 完成上述准备工作之后,可以在达梦环境中利用如下语句构建指向远程Oracle数据库链接: ```sql CREATE DATABASE LINK dblink_oracle CONNECT TO username IDENTIFIED BY password USING 'orcl'; ``` 此处`username`, `password`代表具有适当权限的Oracle账户凭证;而`'orcl'`则是之前于`tnsnames.ora`内设定好的网络服务名称[^4]。 --- #### ODBC方式配置DBLink 对于某些特定场景下可能更倾向于使用ODBC作为中间件来进行跨平台间通信,则可考虑基于此协议实施相应设置。 - **注册ODBC数据源** 参照相关文档指导,在操作系统层面建立起名为DM_TO_ORA_DSN的新DSN资源,确保其参数正确无误地指向待接入的目标Oracle服务器实例[^1]。 - **编写连接字符串** 构建适配当前环境变量条件下的完整连接串表达式,该字符串将被用来初始化后续所有经由本路径发起的操作指令集。 ```sql CREATE DATABASE LINK dblink_odbc CONNECT TO "SCHEMA" IDENTIFIED BY "PASSWORD" USING '(DESCRIPTION=(DRIVER={Microsoft ODBC for Oracle};SERVER=//oracle_server:port/service_name))' ``` 请注意替换掉模板里的占位符部分(`SCHEMA`,`PASSWORD`)为真实的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值