AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 61920
Accepted
jpmc26
jpmc26
Asked: 2014-03-28 10:24:52 +0800 CST2014-03-28 10:24:52 +0800 CST 2014-03-28 10:24:52 +0800 CST

使用 Oracle 的 Easy Connect 语法有什么缺点吗?

  • 772

Oracle 允许使用几种不同的语法来指定在哪里可以找到您的数据库服务。我最常看到的(在我专业开发软件的短短几年里)看起来像这样:

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myserver)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myservice)))

我不认为这种语法有任何特定的名称,但如果您使用图形工具修改它,它就是 Oracle 在其 TNS 文件中生成的。但 Oracle 还允许使用以下更紧凑的语法,至少使用 SQL*Plus 和 application diver 之类的工具:

myserver:1521/myservice

这称为Easy Connect,我读到它是由 Oracle 10g 引入的。这使得它大约有 10 年的历史。我不确定这是否可以在 TNS 文件中使用,尽管它很简短,但我认为没有太多必要将它放在 TNS 文件中。在我看来,它的好处在于:您可以直接将它用于您的应用程序,而无需维护 TNS 文件。

然而,从我所做的工作和与我合作过的客户来看,它的使用似乎并不常见。我什至知道它的唯一原因是因为 ESRI 开始推荐使用它在较新版本的 ArcGIS 中建立连接。这让我想知道为什么它不常见,那么使用 Easy Connect 是否有某种我遗漏的缺点?

(如果有人可以添加更多标签,我将不胜感激。我想不出/找不到更多有意义的东西。)

oracle
  • 2 2 个回答
  • 622 Views

2 个回答

  • Voted
  1. Best Answer
    Justin Cave
    2014-03-28T10:43:55+08:002014-03-28T10:43:55+08:00

    唯一真正的缺点是有许多配置选项可以放入 TNS 别名中,但在使用简单连接语法时无法使用这些选项。Easy connect 旨在简化简单连接的语法。但是,为了做到这一点,它失去了创建更复杂的 TNS 别名的能力,这些别名可以执行负载平衡/故障转移或请求专用服务器会话等操作。如果您不需要这些,使用更简单的语法没有任何缺点。但是,一旦一个组织有一个使用 easy connect 语法不支持的东西的用例,它要么必须支持一种混合配置,其中一些东西使用 easy connect 而其他东西使用 TNS 别名,或者它必须使用 TNS 别名到处。

    根据您的观点,支持混合配置或更改连接处理方式可能会有些痛苦。Oracle 客户端处理一堆不同的命名约定相对容易。一个组织要支持它要困难得多。

    对于组织而言,想出将单个共享的 tnsnames.ora 文件分发给每个人或建立中央 LDAP 服务器来托管组织的 TNS 信息的方法相对容易。如果某些应用程序使用简单连接语法而某些组织使用 TNS 别名,那么当组织想要执行诸如合并数据库或将数据库从一台主机移动到另一台主机等操作时,这可能会出现问题。如果一个组织想要添加负载平衡支持,当一些应用程序自动故障转移而另一些则不能时,可能会出现问题。有人必须跟踪哪些应用程序是哪些,管理员必须以不同的方式对待应用程序,而不是能够依赖全面遵守的组织惯例。当然,这一切都不是不可能的。

    • 5
  2. Sparkle
    2014-03-28T22:37:42+08:002014-03-28T22:37:42+08:00

    @Justin-Cave 所说的几乎涵盖了它。使用 tnsnames 或其他解析方法的最佳理由之一是提供一定程度的抽象。基本上,它会阻止应用程序使用难以维护/更改/查找的硬编码值。如果连接保存在 tnsnames 文件中,则可以移动、重命名数据库等,并且不需要更改应用程序,只需重新指向 tnsnames 条目即可。

    • 2

相关问题

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • ORDER BY 使用文本列的自定义优先级

  • 舒服的sqlplus界面?[关闭]

  • 如何在数据库中找到最新的 SQL 语句?

  • 如何使用正则表达式查询名称?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve