为什么我需要两个人?当我必须使用一个或另一个时?
@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之间有什么区别? SID和Oracle SERVICE NAMES的区别。一 配置工具寻找服务名称和 然后下一个工具寻找SIDs!这是什么? 怎么回事?
Oracle SID是一个独特的名称,它可以 识别你的 实例/数据库,而服务 名称是你在远程连接你的服务时给你的TNS别名,>。 当你远程连接到你的 数据库时给予的别名,而这个服务名称是 记录在你的客户机上的Tnsnames.ora文件中。 该服务名称记录在你的客户机的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并行服务器 环境中,你必须为每个实例设置这个 为每个实例设置这个参数。
简而言之:SID = 你的数据库实例的唯一名称,ServiceName = 连接时使用的别名
根据甲骨文词汇表。
SID是Oracle数据库实例的唯一名称。-----> 要在 用户必须指定所需的SID <---。该 SID包括在连接描述符的CONNECT DATA部分中 在TNSNAMES.ORA文件中,以及在网络监听器的定义中 在LISTENER.ORA文件中。也被称为系统ID。Oracle服务名称 可以是任何描述性的东西,如"MyOracleServiceORCL"。在Windows中。 你可以你的服务名称作为一个服务在Windows服务下运行。
你应该使用TNSNAMES.ORA中的SID作为一个更好的方法。