暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

如何通过oracle连接SqlServer数据库

原创 黑獭 2025-02-10
158

相关软件包下载:

wget https://packages.microsoft.com/rhel/7/mssql-server-2019/mssql-server-15.0.4073.23-4.x86_64.rpm

工具包:

wget https://packages.microsoft.com/rhel/7/prod/msodbcsql17-17.6.1.1-1.x86_64.rpm

wget https://packages.microsoft.com/rhel/7/prod/mssql-tools-17.6.1.1-1.x86_64.rpm

对一个连接数据库的查询,select * from “tablename”@linkdbname;oracle首先从linkdbname开始,通过dba_db_links表查到建表时所属于的tnsname;
然后在tnsnames.ora中找到tnsname对应的sid;接着在lisener.ora中找该SID所对应的应用程序(如:PROGRAM=dg4msql或PROGRAM=dg4odbc),
而且这个程序到哪找,就要注明oracle_home(ORACLE_HOME=/opt/oracle/product/gw);找到程序之后,
oracle会在程序所在目录的admin子目录下找到init.ora文件,读取里面的连接信息;然后通过连接信息与non-oracle数据库通信。

[msql]
Description = ODBC for sqlserver
Driver = SQLServer
Server = 192.168.56.101
Port = 1433
User = ‘sa’
Password = 1qaz@WSX
Database = TestDB

[测试环境]

Oracle 服务器
操作系统:Red Hat Enterprise Linux Server release 7.4 (Maipo)
软件版本:Oracle 19.3
主机地址:192.168.56.101
监听端口:1521
网关和oracle在同一台,也是19.3,此数据库安装网关时未安装监听。

sqlserver 服务器
操作系统:Red Hat Enterprise Linux Server release 7.4 (Maipo)
软件版本:Microsoft SQL Server 2019 (RTM-CU8) (KB4577194) - 15.0.4073.23 (X64)
主机地址:192.168.56.101
服务端口:1433
数据库名:TestDB
用户密码:sa/1qaz@WSX

[配置]
1 sqlserver 服务器
安装并创建相关数据库,使用远程测试,确保远程连接正常。

2 Oracle 服务器
2.1 安装相关包
安装 unixODBC 软件包
yum -y install unixODBC*

yum localinstall msodbcsql17-17.6.1.1-1.x86_64.rpm

安装该应用包

2.2 下载mos上的数据库版本对应版本的gateway

2.3 安装gateway 填写相应信息,此步略过txt不支持截图,步骤很简单

2.4 相关配置文件

ORACLE_HOME/dg4msql/admin 下: 】[19c@rhel7 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=[192.168.56.101]:1433//TestDB

alternate connect format is hostname/serverinstance/databasename

HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

2.5 监听配置文件
[19c@rhel7 admin]$ cat listener.ora
LISTENERMS =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST= 192.168.56.101)(PORT=6666))
)

SID_LIST_LISTENERMS=
(SID_LIST=
(SID_DESC=
(SID_NAME=dg4msql)
(ORACLE_HOME=/19c/database)
(ENVS=“LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/19c/database/dg4msql/lib”)
(PROGRAM=dg4msql)
)
)

2.6 tnsname文件
[19c@rhel7 admin]$ cat tnsnames.ora

dg4msql =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.101)(PORT=6666))
(CONNECT_DATA=(SID=dg4msql))
(HS=OK)
)

2.7 创建dblink 并访问
SQL> create PUBLIC DATABASE LINK dg4msql connect to “test” identified by “123456” using ‘dg4msql’;

Database link created.

SQL> select * from “t1”@dg4msql;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论