为什么我需要其中两个?当我必须使用一个或另一个?
@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之间有什么区别.一个配置工具查找SERVICE NAME,然后下一个查找SID!这是怎么回事?!
Oracle SID是唯一标识您的实例/数据库的唯一名称,其中Service name是您在远程连接到数据库时提供的TNS别名,并且此服务名称记录在客户端的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&service命名可以为你的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的文档
如果将来无法访问上述链接,在编写此答案时,以上链接会将您定向到“数据库Net Services管理员指南”的“连接概念”一章中的“数据库服务和数据库实例标识”主题。 。该指南由oracle作为“ Oracle数据库在线文档,10g第2版(10.2)”的一部分发布。
我何时必须使用一个或另一个?我为什么需要其中两个?
考虑下面在RAC环境中的映射,
SID SERVICE_NAME
bob1 bob
bob2 bob
bob3 bob
bob4 bob
如果配置了负载平衡,则侦听器将“平衡”所有四个SID上的工作负载。即使配置了负载平衡,也可以始终使用SID(而不是SERVICE_NAME)连接到bob1。
请参考https://community.oracle.com/thread/4049517