网站首页 > 技术文章 正文
概述
在某些情况下,我们希望从外部数据库中获取数据,而无需在应用程序中进行额外编码,只需编写一个 T-SQL 查询即可为我们完成所有工作。这就是微软提供的“链接服务器”功能的原因。
但默认情况下,链接服务器无法连接到 Oracle 数据库。本文中我们将展示如何安装必需的库和工具,然后我们将配置 Oracle 数据库(称为 Oracle Net)的网络层,以最终能够创建链接服务器并查询目标数据库实例。
Oracle 数据库客户端的安装
首先,停止 SQL Server 实例。如果实例正在运行,安装不会失败,但是在第一次调用 Linked Server Provider 时,实例会挂起并且不会响应!本文中我想连接一个 Oracle Database 11g 实例。所以我将安装一个 Oracle Database 11g 客户端,但您也可以尝试安装最新版本。源文件可以在Oracle 的网站上下载。它采用 ZIP 文件的形式。下载解压缩并打开解压缩的文件夹。
完成后,只需点击 ? setup.exe ?
这将打开以下对话框。选择?自定义?
选择您使用的适当语言。
然后选择安装的目标文件夹。我个人更喜欢将其与操作系统分区分开,并且我遵循 Oracle 中的常规路径。
现在让我们选择适当的组件。
[
- 数据库实用程序、SQL*Plus 和 Oracle 调用接口是在出于任何原因添加外部开发的情况下选择的。它们可能没有用。
- Oracle Net是 Oracle 数据库的网络层。这将允许我们在名为 tnsnames.ora 的文件中配置“路由”
- 选择了Oracle ODBC Driver、Oracle Provider for OLE DB 和 Oracle Provider for .NET,以允许 SQL Server 通过不同的方式联系 Oracle 数据库。
通过单击“下一步”按钮,您将看到以下界面:
[
单击“结束”并开始安装……
我们完成了。
让我们连接到 SQL Server 实例并检查它是否看到新安装的提供程序:
配置 Oracle Net(添加对目标 Oracle 实例的引用)
- 配置文件的位置
由于我们在 I:\app\oracle 中安装了 Oracle 软件,因此网络配置文件将位于 I:\app\oracle\product\11.2.0\client_1\network\admin 中。
- 编辑 Oracle Net (sqlnet.ora) 的配置
我们将使用它来首先确定名称解析方法的优先级,定义默认域和时间间隔以验证连接是否仍处于活动状态。
为此,请在 sqlnet.ora 文件中添加以下行。
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)NAMES.DEFAULT_DOMAIN = LOCALDOMSQLNET.EXPIRE_TIME = 30
重要的提示
定义 NAMES.DEFAULT_DOMAIN 时,您将始终必须使用完全限定的 TNS 名称。如果您对使用不感兴趣,可以将其删除
- 编辑名称解析中使用的本地列表 (tnsnames.ora)
在配置中另一个非常重要的文件是 tnsnames.ora 文件。此 tnsnames.ora 文件是一个配置文件,其中包含映射到本地命名方法的连接描述符的网络服务名称,或映射到侦听器协议地址的网络服务名称。
以下是用于创建链接服务器的内容示例。
TESTSRV.LOCALDOM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = TestSrv.st.chulg)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TESTSRV.LOCALDOM) ) )
- 测试命名解析
打开 cmd.exe 并运行以下命令:
tnsping TESTSRV
您将收到类似于以下内容的文本:
创建到 Oracle 数据库实例的链接服务器
- 使用 SSMS
创建链接服务器最方便的方法肯定是通过 SQL Server Management Studio。为此,请连接到 SQL Server 实例并找到 ? Server Objects ?,单击一下,您将找到 ? Linked Servers ?。如果您右键单击它,您将能够创建一个新的链接服务器。
如下提供连接信息。作为数据源,您将使用 tnsnames.ora 文件中使用的名称(带或不带域名)。
在配置的安全部分,根据您的环境配置,您将选择适当的方法用于远程身份验证。
您还可以查看链接服务器设置以根据您的环境进行调整。
单击“确定”后,将创建链接服务器并将其添加到“链接服务器”列表中,如下所示。
我们可以测试链接服务器。为此,请右键单击它并选择?测试连接?。
如果一切都配置好,您将看到以下对话框:
您还可以通过查看树视图查询的表和视图:
最后,您可以运行以下查询:
SELECT * FROM OPENQUERY([DBLNK_TEST] , 'select sysdate from dual') ;
小结
本文首先介绍了ORACLE客户端的安装过程,然后介绍了配置 Oracle 数据库(称为 Oracle Net)的网络层的方法,最后介绍了链接服务器的测试及查询目标数据库实例的方法。
猜你喜欢
- 2025-07-10 Oracle 与 Google Cloud 携手大幅扩展多云服务
- 2025-07-10 分享收藏的 oracle 11.2.0.4各平台的下载地址
- 2025-07-10 Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- 2025-07-10 Oracle Database@Azure 推进到南美等新区域并增加了新服务
- 2025-07-10 Oracle宣布推出 Oracle Database@AWS 的有限预览版
- 2025-07-10 Oracle与Nextcloud合作,推出主权云上的安全协作平台
- 2025-07-10 NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 2024-10-19 「AWEI」Oracle12c初体验之新建数据库和用户并连接
- 2024-10-19 php7 怎么连接oracle 11g php oracle 连接池
- 2024-10-19 使用JDBC连接ORACLE的三种URL格式
你 发表评论:
欢迎- 07-10Oracle 与 Google Cloud 携手大幅扩展多云服务
- 07-10分享收藏的 oracle 11.2.0.4各平台的下载地址
- 07-10Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- 07-10Oracle Database@Azure 推进到南美等新区域并增加了新服务
- 07-10Oracle宣布推出 Oracle Database@AWS 的有限预览版
- 07-10Oracle与Nextcloud合作,推出主权云上的安全协作平台
- 07-10NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 07-10对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 601℃几个Oracle空值处理函数 oracle处理null值的函数
- 593℃Oracle分析函数之Lag和Lead()使用
- 581℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 578℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 573℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 566℃【数据统计分析】详解Oracle分组函数之CUBE
- 552℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 547℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- Oracle 与 Google Cloud 携手大幅扩展多云服务
- 分享收藏的 oracle 11.2.0.4各平台的下载地址
- Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- Oracle Database@Azure 推进到南美等新区域并增加了新服务
- Oracle宣布推出 Oracle Database@AWS 的有限预览版
- Oracle与Nextcloud合作,推出主权云上的安全协作平台
- NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 解读丨《归档文件整理规则》— 电子文件元数据存储
- Data Guard跳归档恢复的实践(dataguard failover)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)