En quoi le SID est différent du nom du service dans Oracle tnsnames.ora

178

Pourquoi ai-je besoin de deux d'entre eux? Quand dois-je utiliser l'un ou l'autre?

Georgy Bolyuba
la source
1
Comment trouver le nom de notre service lorsque j'ai un nom SID?
Mrinal Saurabh

Réponses:

154

Citation de @DAC

En bref: SID = le nom unique de votre base de données, ServiceName = l'alias utilisé lors de la connexion

Pas strictement vrai. SID = nom unique de l'INSTANCE (par exemple le processus oracle en cours d'exécution sur la machine). Oracle considère la «base de données» comme étant les fichiers.

Nom du service = alias d'une INSTANCE (ou de plusieurs instances). Le but principal de ceci est que si vous exécutez un cluster, le client peut dire "connectez-moi à SALES.acme.com", le DBA peut changer à la volée le nombre d'instances qui sont disponibles pour les requêtes SALES.acme.com, ou même déplacer SALES.acme.com vers une base de données complètement différente sans que le client ait besoin de modifier les paramètres.

Matthew Watson
la source
1
Ainsi, dans votre exemple, il pourrait y avoir SIDs Sales1, Sales2et Sales3qui sont tous disponibles via le nom de service Sales?
1
Je pense que le contraire est le cas: vous avez un SID qui est disponible autant de services. Vous pouvez alors prendre l'un des services et le pointer vers un autre SID / base de données.
Colin Nicholls
Pouvons-nous avoir le même nom Oracle SID que le nom TNS? Est-ce que ce sera un problème?
user2441441
2
@ user2441441: D'après l'explication donnée par Matthew, je pense que vous avez raison de supposer qu'il peut y avoir plusieurs SID et une fois Service qui résume tous les SID
Dwarak
26

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

Quelle est la différence entre Oracle SID et Oracle SERVICE NAMES. Un outil de configuration recherche le NOM DU SERVICE, puis le suivant recherche les SID! Que se passe-t-il?!

Oracle SID est le nom unique qui identifie de manière unique votre instance / base de données où comme nom de service est l'alias TNS que vous donnez lorsque vous vous connectez à distance à votre base de données et ce nom de service est enregistré dans le fichier Tnsnames.ora sur vos clients et il peut être le identique à SID et vous pouvez également lui donner tout autre nom que vous voulez.

SERVICE_NAME est la nouvelle fonctionnalité à partir d'oracle 8i dans laquelle la base de données peut s'enregistrer auprès de l'auditeur. Si la base de données est enregistrée avec l'écouteur de cette manière, vous pouvez utiliser le paramètre SERVICE_NAME dans tnsnames.ora sinon - utilisez SID dans tnsnames.ora.

De plus, si vous avez OPS (RAC), vous aurez un SERVICE_NAME différent pour chaque instance.

SERVICE_NAMES spécifie un ou plusieurs noms pour le service de base de données auquel cette instance se connecte. Vous pouvez spécifier plusieurs noms de services afin de distinguer les différentes utilisations de la même base de données. Par exemple:

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

Vous pouvez également utiliser des noms de service pour identifier un service unique disponible à partir de deux bases de données différentes via l'utilisation de la réplication.

Dans un environnement Oracle Parallel Server, vous devez définir ce paramètre pour chaque instance.

En bref: SID = le nom unique de votre instance de base de données, ServiceName = l'alias utilisé lors de la connexion

DAC
la source
Je suis confus. Ne devrait-il pas être que dans RAC, vous aurez différents "INSTANCE_NAME" pour chaque instance? Et un SERVICE_NAME peut être associé à plusieurs instances?
Iwan Satria
20

Je sais que c'est ancien, cependant, lorsqu'il s'agit d'outils, d'utilisations, d'utilisateurs ou de symptômes capricieux, on peut ajouter un peu de flexibilité à vos entrées tnsnames comme:

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

Je pensais juste que je laisserais cela ici car il est légèrement pertinent pour la question et peut être utile lorsque vous essayez de tisser des particularités moins que claires de la mise en réseau des oracles.

séorphates
la source
5

qu'est-ce qu'un SID et un nom de service

veuillez consulter la documentation d'Oracle sur adresse https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm

Au cas où le lien ci-dessus ne serait plus accessible à l'avenir, Au moment de la rédaction de cette réponse, le lien ci-dessus vous dirigera vers la rubrique «Service de base de données et identification des instances de base de données» dans le chapitre Concepts de connectivité du «Guide de l'administrateur de Database Net Services» . Ce guide est publié par oracle dans le cadre de "Oracle Database Online Documentation, 10g Release 2 (10.2)"

Quand dois-je utiliser l'un ou l'autre? Pourquoi ai-je besoin de deux d'entre eux?

Considérez ci-dessous la cartographie dans un environnement RAC,

SID SERVICE_NAME
bob1 bob
bob2 bob
bob3 bob
bob4 bob

si l'équilibrage de charge est configuré, l'écouteur «équilibrera» la charge de travail entre les quatre SID. Même si l'équilibrage de charge est configuré, vous pouvez vous connecter à bob1 tout le temps si vous le souhaitez en utilisant le SID au lieu de SERVICE_NAME.

Veuillez vous référer à https://community.oracle.com/thread/4049517

swaroop
la source
0

Selon le glossaire Oracle:

SID est un nom unique pour une instance de base de données Oracle. ---> Pour basculer entre les bases de données Oracle, les utilisateurs doivent spécifier le SID souhaité <---. Le SID est inclus dans les parties CONNECT DATA des descripteurs de connexion dans un fichier TNSNAMES.ORA et dans la définition de l'écouteur réseau dans le fichier LISTENER.ORA. Également appelé ID système. Le nom du service Oracle peut être quelque chose de descriptif comme "MyOracleServiceORCL". Sous Windows, vous pouvez exécuter votre nom de service en tant que service sous les services Windows.

Vous devez utiliser SID dans TNSNAMES.ORA comme une meilleure approche.

Ashish
la source