Oracle tnsnames.ora中SID与服务名称的区别

为什么我需要两个? 当我必须使用这个或另一个?

@DAC

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

不完全正确。SID = INSTANCE的唯一名称(例如,在机器上运行的oracle进程)。 Oracle认为“数据库”是文件。

服务名称= INSTANCE(或许多实例)的别名。 这样做的主要目的是,如果您正在运行集群,客户端可以说“连接到SALES.acme.com”,DBA可以随时更改SALES.acme.com请求可用的实例的数量,甚至可以将SALES.acme.com移动到完全不同的数据库,而无需客户端更改任何设置。

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

Oracle SID和Oracle SERVICE NAMES有什么区别? 一个configuration工具查找SERVICE NAME,然后下一个查找SID! 这是怎么回事?!

Oracle SID是唯一标识您的实例/数据库的唯一名称,其中服务名称是远程连接到数据库时所提供的TNS别名,此服务名称logging在客户端的Tnsnames.ora文件中,并且可以是和SID一样,你也可以给它任何你想要的名字。

SERVICE_NAME是Oracle 8i以后的新特性,数据库可以在其中注册监听器。 如果以这种方式向侦听器注册数据库,则可以在tnsnames.ora中使用SERVICE_NAME参数,否则使用tnsnames.ora中的SID。

另外,如果您有OPS(RAC),则每个实例都有不同的SERVICE_NAME。

SERVICE_NAMES为该实例连接的数据库服务指定一个或多个名称。 您可以指定多个服务名称,以区分同一数据库的不同用途。 例如:

SERVICE_NAMES = sales.acme.com,widgetsales.acme.com

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

在Oracle Parallel Server环境中,您必须为每个实例设置此参数。

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

我知道这是古代然而,当处理挑剔的工具,使用,用户或症状重新:SID和服务命名可以添加一些flex你的tnsnames条目,如:

 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联网特性时,这个问题会很有帮助。

按照Oracle术语表:

SID是Oracle数据库实例的唯一名称。 —>要在Oracle数据库之间切换,用户必须指定所需的SID <—。 SID包含在TNSNAMES.ORA文件的连接描述符的CONNECT DATA部分以及LISTENER.ORA文件中networking监听器的定义中。 也称为系统ID。 Oracle服务名称可以是任何类似“MyOracleServiceORCL”的描述。 在Windows中,您可以将服务名称作为Windows服务下的服务运行。

您应该在TNSNAMES.ORA中使用SID作为更好的方法。