【问题标题】:What is the relationship between schema and service_name in oracle?oracle中schema和service_name是什么关系?
【发布时间】:2015-01-24 10:12:30
【问题描述】:

当我连接到 oracle 数据库(11g)时,我必须使用以下信息: 架构名称(用户名)、密码、Service_name(数据库名称?)。

连接字符串看起来像“schemaName/pwd@host:1521/serviceName”。

我了解架构与用户几乎相同。包含所有对象(如表、索引、视图等)的集合的模式由用户拥有。 我的问题是如果架构已经包含表和其他对象,为什么我们必须在尝试连接时指定 service_name。(在客户端工具或 tns 文件中的配置中) 因为使用 schema_name/password 可以定位到我们想要的各个表,这里 service_name 的作用是什么?

【问题讨论】:

  • 仅模式名称不足以连接 - 您需要指定要连接的数据库实例;服务名称是指定实例的好方法。

标签: database oracle database-schema


【解决方案1】:

服务是同一机器/服务器/计算机上不同数据库之间的连接可能不同的方式之一。理论上,您不能提及这一点并且仍然可以访问正确的数据库(如果只有 1 个数据库),但是在数据库连接的上下文中,所有参数都需要显式给出。我相信这是因为安全性和双重检查。

请注意,端口号也已给出,这是数据库之间不同的另一种方式。但是,要知道可以通过同一个端口访问不同的数据库。

该服务通常是指向一个正在连接的实际数据库实例的提示。

【讨论】:

    【解决方案2】:

    服务名称标识您要连接的服务(数据库)。除此之外,还有一些附加功能取决于您用于连接的服务:例如资源管理器、跟踪、性能统计信息收集。

    【讨论】:

      【解决方案3】:

      服务是在操作系统后台持续运行的东西。因此,您使用的每个数据库都是一个持续运行的服务。比如说。如果你安装了 oracle 和 mysql 这两个数据库软件,你需要指定连接到哪个服务。我希望这能回答您在service_name 上的问题。

      【讨论】:

      • 我认为您所说的服务与问题中的服务不同。它之所以称为“service_name”,只是因为它是在 oracle 配置文件中配置的。例如在“tnsnames.ora”文件中:My_Oracle = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hostAddress)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = appdev)))
      • 哈,其实你是对的。我之前没有意识到它有理由被命名为服务。它运行在具有不同服务名称的操作系统下,以区分同一台机器上安装的 oracle 数据库。
      • 是的,我也这么认为。谢谢你确认我。我曾经在我的机器上安装了两台 MS SQL 服务器时看到过这种情况。
      猜你喜欢
      • 2015-06-04
      • 2014-03-14
      • 2013-06-14
      • 2018-02-16
      • 2020-05-04
      • 2020-01-08
      • 2015-01-13
      • 2017-11-06
      • 2015-07-09
      相关资源
      最近更新 更多