Cómo SID es diferente del nombre del servicio en Oracle tnsnames.ora

178

¿Por qué necesito dos de ellos? ¿Cuándo tengo que usar uno u otro?

Georgy Bolyuba
fuente
1
¿Cómo encontrar el nombre de nuestro servicio cuando tengo el nombre SID?
Mrinal Saurabh

Respuestas:

154

Cita de @DAC

En resumen: SID = el nombre único de su DB, ServiceName = el alias utilizado al conectarse

No es estrictamente cierto. SID = nombre único de INSTANCE (por ejemplo, el proceso oracle que se ejecuta en la máquina). Oracle considera que la "Base de datos" son los archivos.

Nombre del servicio = alias de un INSTANCE (o muchas instancias). El objetivo principal de esto es si está ejecutando un clúster, el cliente puede decir "conécteme a SALES.acme.com", el DBA puede cambiar sobre la marcha el número de instancias que están disponibles para las solicitudes de SALES.acme.com, o incluso mover SALES.acme.com a una base de datos completamente diferente sin que el cliente necesite cambiar ninguna configuración.

Matthew Watson
fuente
1
Así, en su ejemplo, podría haber SID Sales1, Sales2y Sales3, todos los cuales están disponibles a través de nombre de servicio Sales?
1
Creo que lo contrario es el caso: tiene un SID que está disponible como muchos servicios. Luego puede tomar uno de los servicios y apuntarlo a un SID / base de datos diferente.
Colin Nicholls
¿Podemos tener el nombre SID de Oracle igual que el nombre TNS? ¿Será un problema?
user2441441
2
@ user2441441: Siguiendo la explicación que Matthew ha dado, creo que tiene razón en la suposición de que puede haber múltiples SID y una vez que el Servicio
abstraiga
26

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

¿Cuál es la diferencia entre Oracle SID y Oracle SERVICE NAMES? ¡Una herramienta de configuración busca NOMBRE DE SERVICIO y luego la siguiente busca SID! ¡¿Que esta pasando?!

Oracle SID es el nombre único que identifica de forma exclusiva su instancia / base de datos, donde como nombre de servicio es el alias de TNS que proporciona cuando se conecta de forma remota a su base de datos y este nombre de servicio se registra en el archivo Tnsnames.ora en sus clientes y puede ser el igual que SID y también puede darle cualquier otro nombre que desee.

SERVICE_NAME es la nueva característica desde Oracle 8i en adelante en la que la base de datos puede registrarse con el oyente. Si la base de datos está registrada con listener de esta manera, puede usar el parámetro SERVICE_NAME en tnsnames.ora; de lo contrario, use SID en tnsnames.ora.

Además, si tiene OPS (RAC), tendrá diferentes SERVICE_NAME para cada instancia.

SERVICE_NAMES especifica uno o más nombres para el servicio de base de datos al que se conecta esta instancia. Puede especificar varios nombres de servicios para distinguir entre los diferentes usos de la misma base de datos. Por ejemplo:

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

También puede usar nombres de servicios para identificar un único servicio que esté disponible en dos bases de datos diferentes mediante el uso de la replicación.

En un entorno de Oracle Parallel Server, debe establecer este parámetro para cada instancia.

En resumen: SID = el nombre único de su instancia de base de datos, ServiceName = el alias utilizado al conectarse

DAC
fuente
Estoy confundido. ¿No debería ser que en RAC, tendrá diferentes "INSTANCE_NAME" para cada instancia? ¿Y un SERVICE_NAME puede estar asociado con varias instancias?
Iwan Satria
20

Sé que esto es antiguo, sin embargo, cuando se trata de herramientas meticulosas, usos, usuarios o síntomas, los nombres de sid y servicios pueden agregar un poco de flexibilidad a sus entradas de tnsnames como:

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)
  )
)

Solo pensé en dejar esto aquí, ya que es ligeramente relevante para la pregunta y puede ser útil al intentar tejer algunas idiosincrasias menos claras de las redes de Oracle.

seorfatos
fuente
5

¿Qué es un SID y un nombre de servicio?

mire la documentación de Oracle en Oracle https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm

En caso de que el enlace anterior no sea accesible en el futuro, en el momento de escribir esta respuesta, el enlace anterior lo dirigirá al tema "Servicio de base de datos e identificación de la instancia de la base de datos" en el capítulo Conceptos de conectividad de la "Guía del administrador de los servicios de base de datos de red" . Oracle publica esta guía como parte de "Oracle Database Online Documentation, 10g Release 2 (10.2)"

¿Cuándo tengo que usar uno u otro? ¿Por qué necesito dos de ellos?

Considere el mapeo a continuación en un entorno RAC,

SID SERVICE_NAME
bob1 bob
bob2 bob
bob3 bob
bob4 bob

Si se configura el equilibrio de carga, el oyente 'equilibrará' la carga de trabajo en los cuatro SID. Incluso si el equilibrio de carga está configurado, puede conectarse a bob1 todo el tiempo si lo desea mediante el SID en lugar de SERVICE_NAME.

Consulte https://community.oracle.com/thread/4049517

swaroop
fuente
0

Según el glosario de Oracle:

SID es un nombre único para una instancia de base de datos Oracle. ---> Para cambiar entre bases de datos Oracle, los usuarios deben especificar el SID deseado <---. El SID se incluye en las partes CONNECT DATA de los descriptores de conexión en un archivo TNSNAMES.ORA, y en la definición del oyente de red en el archivo LISTENER.ORA. También conocido como ID del sistema. El nombre del servicio de Oracle puede ser descriptivo como "MyOracleServiceORCL". En Windows, puede ejecutar su Nombre de servicio como un servicio en Servicios de Windows.

Debería usar SID en TNSNAMES.ORA como un mejor enfoque.

Ashish
fuente