Oracle 使用dblink连接SQL Server

本文详细介绍了如何从Oracle官网下载并安装数据库网关,通过具体步骤演示了使用Oracle账号上传、解压和安装过程。涵盖了环境变量设置、监听配置、tnsnames.ora与listener.ora文件修改、监听重启、DBLINK创建及链接测试等关键环节。

1.下载gateway文件

 

Oracle官网下载数据库版本对应的gateway

2.上传至服务器,解压出来(用Oracle账号解压)

unzip linux.x64_11gR2_gateways.zip

3.解压安装

Oracle用户下操作:

mkdir - /opt/app/gateway

[oracle@OAapp02 ~]$ cd gateways/
[oracle@OAapp02 gateways]$ ll
total 32
drwxr-xr-x.  6 oracle oinstall 4096 Aug 17  2009 doc
drwxr-xr-x.  4 oracle oinstall 4096 Aug 15  2009 install
drwxrwxr-x.  4 oracle oinstall 4096 Aug 15  2009 legacy
drwxrwxr-x.  2 oracle oinstall 4096 Aug 15  2009 response
-rwxr-xr-x.  1 oracle oinstall 3226 Aug 15  2009 runInstaller
drwxr-xr-x. 13 oracle oinstall 4096 Aug 15  2009 stage
-rw-r--r--.  1 oracle oinstall 6285 Aug 18  2009 welcome.html
[oracle@OAapp02 gateways]$ export DISPLAY=192.168.86.93:0.0
[oracle@OAapp02 gateways]$ ./runInstaller 
Starting Oracle Universal Installer...
	
Checking Temp space: must be greater than 120 MB.   Actual 68185 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 58891 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2020-06-24_11-21-00AM. Please wait ...[oracle@OAapp02 gateways]$ Oracle Universal Installer, Version 11.2.0.1.0 Production
copyright (C) 1999, 2009, Oracle. All rights reserved.

[root@OAapp02 ~]# /opt/app/gateway/root.sh
Running Oracle 11g root.sh script...
	
The following environment variables are set as:
	ORACLE_OWNER= oracle
	ORACLE_HOME=  /opt/app/gateway
	
Enter the full pathname of the local bin directory: [/usr/local/bin]: 
The file "dbhome" already exists in /usr/local/bin.  Overwrite it? (y/n) 
	[n]: 
The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n) 
	[n]: 
The file "coraenv" already exists in /usr/local/bin.  Overwrite it? (y/n) 
	[n]: 
	
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.

4.需要创建监听,点击cancel,手动创建监听

5.查看这个文件的连接信息

[oracle@OAapp02 admin]$ cat initdg4msql.ora 
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
	
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=[10.0.13.101]:1433//WTS_DELI
# alternate connect format is hostname/serverinstance/databasename
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
	
[oracle@OAapp02 admin]$ pwd
/opt/app/gateway/dg4msql/admin

6.在listener.ora 加入以下内容

SID_LIST_LISTENER=
	(SID_LIST=
	   (SID_DESC=
	      (SID_NAME=dg4msql)
	      (ORACLE_HOME=/opt/app/gateway)
	      (PROGRAM=dg4msql)
	    )
)

7.在tnsnames.ora加入以下内容

dg4msql =
	(DESCRIPTION =
	   (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.112.33)(PORT = 1521))
	   (CONNECT_DATA=(SID=dg4msql))
	   (HS=OK)
)

8.重新加载监听

[oracle@OAapp02 admin]$ lsnrctl reload
	
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 24-JUN-2020 11:47:04
	
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
	
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.112.33)(PORT=1521)))
The command completed successfully
[oracle@OAapp02 admin]$ 
[oracle@OAapp02 admin]$ 
[oracle@OAapp02 admin]$ lsnrctl status
	
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 24-JUN-2020 11:47:12
	
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
	
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.112.33)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                14-JAN-2020 08:03:44
Uptime                    162 days 3 hr. 43 min. 28 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/app/oracle/diag/tnslsnr/OAapp02/listener/alert/log.xml
Listening Endpoints Summary...
	(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.112.33)(PORT=1521)))
Services Summary...
Service "dg4msql" has 1 instance(s).
	Instance "dg4msql", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
	Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
	Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
	

9.创建DBLINK链接

create database link wtsdb connect to sa identified by "password" using 'dg4msql';

10.测试链接

SQL> show user;
USER is "ECOLOGY"
	
SQL> select count(*) from "dbo"."stock_data"@wtsdb;
	
 COUNT(*)
----------
 36282

参考文章:

https://www.cnblogs.com/xqzt/p/5688659.html
https://wenku.baidu.com/view/104739b365ce050876321347.html

Oracle 数据库中创建 DBLink 以访问 SQL Server 数据库,通常需要通过 Oracle 的异构服务(Heterogeneous Services)和 Oracle Gateway for SQL Server 来实现。以下是详细的配置步骤: ### 安装 Oracle Gateway for SQL Server 首先,确保 Oracle Gateway for SQL Server 已经安装在系统中。如果没有安装,可以从 Oracle 官网下载并安装相应的版本。安装过程中需要选择 SQL Server 作为目标数据库类型。 ### 配置监听器(Listener) 安装完成后,需要配置监听器以支持与 SQL Server连接。编辑 `listener.ora` 文件,通常位于 `$ORACLE_HOME/network/admin` 目录下,添加以下内容: ```ini SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = dg4msql) (ORACLE_HOME = /opt/app/gateway) (PROGRAM = dg4msql) ) ) ``` 保存文件后,重启监听器服务以应用更改: ```bash lsnrctl stop lsnrctl start ``` ### 配置 TNS 名称解析 接下来,需要配置 `tnsnames.ora` 文件,同样位于 `$ORACLE_HOME/network/admin` 目录下,添加一个指向 SQL Server连接描述符: ```ini SQLSERVER_LINK = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.20)(PORT = 1521)) ) (CONNECT_DATA = (SID = dg4msql) ) (HS = OK) ) ``` ### 配置初始化参数文件 创建一个初始化参数文件 `initdg4msql.ora`,通常位于 `$ORACLE_HOME/hs/admin` 目录下,内容如下: ```ini HS_FDS_CONNECT_INFO="SERVER=192.168.10.20;DATABASE=YourDatabaseName" HS_FDS_TRACE_LEVEL=0 HS_FDS_RECOVERY_ACCOUNT=sa HS_FDS_RECOVERY_PASSWORD=123 ``` 确保 `HS_FDS_CONNECT_INFO` 中的 `SERVER` 和 `DATABASE` 参数与你的 SQL Server 实例匹配。 ### 创建 DBLink 完成上述配置后,可以在 Oracle 数据库中创建 DBLink。执行以下 SQL 命令: ```sql CREATE PUBLIC DATABASE LINK SQLSERVER_LINK CONNECT TO "sa" IDENTIFIED BY "123" USING 'SQLSERVER_LINK'; ``` 此命令将创建一个名为 `SQLSERVER_LINK` 的公共 DBLink连接SQL Server 数据库。 ### 测试 DBLink 创建完成后,可以通过以下 SQL 语句测试 DBLink 是否正常工作: ```sql SELECT * FROM dual@SQLSERVER_LINK; ``` 如果查询成功返回结果,则表示 DBLink 已经正确配置并可以正常使用。 ### 使用 DBLink 查询数据 一旦 DBLink 成功创建,就可以通过它来查询 SQL Server 中的数据。例如,查询 SQL Server 中的某个表: ```sql SELECT * FROM your_table@SQLSERVER_LINK; ``` 如果需要执行更复杂的查询,可以使用 `OPENQUERY` 函数: ```sql INSERT INTO M_MOM_M_LOTMOVEHISTORY SELECT * FROM OPENQUERY(SQLSERVER_LINK, 'SELECT * FROM V_M_LOTMOVEHISTORY'); ``` ### 注意事项 - 确保 Oracle Gateway 和 SQL Server 之间的网络连接是通畅的。 - 检查 SQL Server 是否允许远程连接,并确保防火墙规则允许相应的端口通信。 - 如果 SQL Server 使用命名实例,确保 `HS_FDS_CONNECT_INFO` 中的 `SERVER` 参数包含实例名称,如 `SERVER=ZZL\MSSQLSERVER` [^3]。 - 确保用于连接SQL Server 用户具有足够的权限访问目标数据库和表。 通过以上步骤,Oracle 数据库可以成功创建 DBLink 并访问 SQL Server 数据库。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值