Sid与Oracle tnsnames.ora中的服务名称有何不同

为什么我需要两个?当我不得不使用一个或另一个?

589897 次浏览

请参阅:http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm

Oracle之间的区别是

什么 Sid和Oracle服务名。一 配置工具查找服务名称和 然后下一个寻找婴儿猝死综合症。什么 继续?!

Oracle Sid是 唯一标识您的 实例/数据库Where作为服务 name是您指定的TNS别名 当您远程连接到 数据库,此服务名为 记录在您的上的tnsnames.ora文件中 客户端,并且它可以与Sid相同 你也可以给它任何其他 你想要的名字.

服务_名称是 哪个数据库中的Oracle 8i及更高版本 可以向侦听器注册自身。如果 数据库已向侦听器注册 这样你就可以使用 tnsnames.ora中的服务_名称参数 否则-使用tnsnames.ora中的Sid.

此外,如果您有OPS(RAC),您将 每个都有不同服务_名称 实例.

服务_名称指定一个或多个 数据库服务的名称 此实例连接的。你可以 在中指定多个服务名称 为了区分不同的 使用相同的数据库。为了 例如:

服务_名称=sales.acme.com, widgetsales.acme.com

您还可以使用服务名称来 标识单个服务 可从两个不同的数据库获取 通过使用复制。

Oracle并行服务器中 环境中,您必须设置此 每个实例的参数。

简而言之:Sid=数据库实例的唯一名称,ServiceName=连接时使用的别名

根据Oracle术语表:

SID是Oracle数据库实例的唯一名称。--->切换 在Oracle数据库之间,用户必须指定所需的Sid<;--。这个 Sid包含在连接描述符的连接数据部分中 在tnsnames.ora文件中,以及在网络侦听器的定义中 在listener.ora文件中。也称为系统ID.Oracle服务名称 可以是任何描述性的内容,如“ MyOracleServiceORCL ”。在Windows中, 您可以将您的服务名称作为Windows服务下的服务运行。

您应该使用tnsnames.ora中的Sid作为更好的方法。

我知道这是古老的,但是在处理挑剔的工具,使用,用户或症状时:Sid&;服务命名可以在tnsNames条目中添加一些Flex,如下所示:

mySID, mySID.whereever.com =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = myHostname)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mySID.whereever.com)
(SID = mySID)
(SERVER = DEDICATED)
)
)

我只是想把这个问题留在这里,因为它与这个问题有一定的相关性,并且在试图围绕Oracle网络的一些不太明确的特性进行编织时会很有帮助。

什么是Sid和服务名称

请查看位于https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm的Oracle文档

如果将来无法访问上述链接,则在撰写此答案时,上述链接将引导您访问“数据库网络服务管理员指南”的连接概念章节中的“数据库服务和数据库实例标识”主题。本指南由Oracle作为“ Oracle数据库联机文档,10g发行版2(10.2)”的一部分发布

当我不得不使用一个或另一个?为什么我需要两个?

考虑RAC环境中的以下映射,

SID ; ; ;服务_名称
BOB1 ; ;鲍勃
BOB2 ; ;鲍勃
BOB3 ; ;鲍勃
BOB4 ; ;鲍勃

如果配置了负载平衡,则侦听器将在所有四个Sid之间“平衡”工作负载。即使配置了负载平衡,您也可以通过使用Sid而不是服务_名称随时连接到BOB1。

请参阅,https://community.oracle.com/thread/4049517