我为什么需要其中两个?我何时必须使用一个或另一个?
我为什么需要其中两个?我何时必须使用一个或另一个?
Answers:
简而言之:SID =数据库的唯一名称,ServiceName =连接时使用的别名
并非完全正确。SID = INSTANCE的唯一名称(例如,计算机上运行的oracle进程)。Oracle将“数据库”视为文件。
服务名称=实例(或许多实例)的别名。这样做的主要目的是,如果您正在运行集群,则客户端可以说“将我连接到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 NAME之间有什么区别。一个配置工具查找“ SERVICE NAME”,然后另一个查找SID!这是怎么回事?!
Oracle SID是唯一标识您的实例/数据库的唯一名称,其中服务名称是您远程连接到数据库时提供的TNS别名,并且此服务名称记录在客户端的Tnsnames.ora文件中,并且可以是与SID相同,也可以为其指定其他任何名称。
SERVICE_NAME是oracle 8i以后的新功能,在该功能中数据库可以向侦听器注册自己。如果以这种方式向侦听器注册了数据库,则可以在tnsnames.ora中使用SERVICE_NAME参数,否则-在tnsnames.ora中使用SID。
另外,如果您具有OPS(RAC),则每个实例的名称也将不同。
SERVICE_NAMES为该实例连接到的数据库服务指定一个或多个名称。您可以指定多个服务名称,以区分同一数据库的不同用途。例如:
SERVICE_NAMES = sales.acme.com,widgetsales.acme.com
您还可以使用服务名称来标识通过使用复制从两个不同的数据库中可用的单个服务。
在Oracle Parallel Server环境中,必须为每个实例设置此参数。
简而言之:SID =数据库实例的唯一名称,ServiceName =连接时使用的别名
我知道这很古老,但是在处理复杂的工具,用途,用户或症状时:sid和服务命名可以为您的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网络特性时可能会有所帮助。
什么是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。