如何使用PLSQL Developer将SQL Server数据导入Oracle表并创建对应DB Link
解决方案
前置说明
你之前使用的是Oracle到Oracle的同构数据库DB Link语法,连接SQL Server这类异构数据库,必须先部署Oracle Database Gateway for SQL Server (DG4MSQL) 组件,无法直接通过原生同构DB Link语法连接。
配置步骤
1. 部署DG4MSQL组件
Oracle 19c安装介质中自带DG4MSQL安装选项,选择安装到Oracle数据库所在服务器即可,无需额外license。
2. 配置网关初始化参数
进入网关安装目录下的admin文件夹,新建初始化参数文件initdg4msql_muc2.ora,文件内容参考:
HS_FDS_CONNECT_INFO = TEST101\MUC2/<SQL Server侧数据库名> HS_FDS_TRACE_LEVEL = OFF HS_FDS_RECOVERY_ACCOUNT = RECOVER HS_FDS_RECOVERY_PWD = RECOVER HS_NLS_NCHAR = UCS2
这里直接填入你现有的TEST101\MUC2实例名即可,无需转换为.com域名格式,只要Oracle服务器能解析TEST101的主机名、和SQL Server网络连通即可。
3. 配置Oracle监听
编辑数据库所在服务器的listener.ora文件,新增网关SID条目,参考配置:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = dg4msql_muc2) (ORACLE_HOME = <你的Oracle网关安装目录绝对路径>) (PROGRAM = dg4msql) ) )
配置完成后执行lsnrctl reload重载监听生效。
4. 配置tnsnames.ora
编辑数据库所在服务器的tnsnames.ora文件,新增指向网关的TNS别名:
DG4MSQL_MUC2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <Oracle数据库本机IP或主机名>)(PORT = 1521)) (CONNECT_DATA = (SID = dg4msql_muc2) ) (HS = OK) )
可以执行tnsping DG4MSQL_MUC2验证连通性。
5. 创建DB Link
使用如下语法创建指向SQL Server的DB Link,这里的USING参数直接填上面配置的TNS别名即可,无需.com后缀的主机地址:
CREATE DATABASE LINK SQLSERVER_MUC2 CONNECT TO "<SQL Server登录名>" IDENTIFIED BY "<SQL Server登录密码>" USING 'DG4MSQL_MUC2';
创建完成后可以执行测试语句验证:
SELECT * FROM 表名@SQLSERVER_MUC2;
注意事项
- 确保SQL Server侧已开启TCP/IP协议、SQL Server Browser服务已启动,防火墙放通1433端口(命名实例如果用动态端口需放通对应端口)
- Oracle服务器的hosts文件可配置TEST101对应的IP地址,避免主机名解析失败
- SQL Server的对象名、字段名大小写敏感,查询时需和SQL Server侧的大小写完全一致
内容的提问来源于stack exchange,提问作者Swoop
相关产品推荐
相关产品推荐

