Différence entre l'utilisation d'un TNS nom et un nom de service dans une connexion JDBC

J'ai un basé sur java serveur (Tomcat) qui se connecte à une base de données Oracle à l'aide d'une connexion JDBC. Il existe plusieurs façons de se connecter à la base de données: SID, TNS nom, le nom du Service.

J'aimerais comprendre quelle est la différence entre chacune de ces connexions et quelle serait la connexion recommandée (SID, TNS, ou de service) en cas de connexion à une base de données en cluster. Ici, c'est le nom TNS, nous avons pour la base de données:

MY_NICE_TNS_NAME.MY_COMPANY.COM =

(DESCRIPTION =

  (ADDRESS = (PROTOCOL = TCP)(HOST = myhostname)(PORT = 1521))

  (LOAD_BALANCE = YES)

  (CONNECT_DATA =

   (SERVER = DEDICATED)

   (SERVICE_NAME = MY_NICE_SERVICE_NAME.MY_COMPANY.COM)

   (FAILOVER_MODE =

   (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5)

   )

  )

)

Merci!

tant que vous n'avez qu'UN nom d'hôte spécifié il n'y a pratiquement pas de différence. Si vous étiez connecté à RAC(OPS) ou DataGuard, alors oui. SID est unique, non modifiable et se termine avec le numéro. Alors que le SERVICE_NAME peuvent être présents sur un ou plusieurs nœuds. Et il peut aussi se déplacer entre les nœuds
Merci, un grand savoir. Voir mon commentaire ci-dessous. Nous avons un RAC.
si vous utilisez RAC ensuite, vous devez spécifier le nom d'hôte de chaque nœud. voir: stackoverflow.com/questions/13424385/...

OriginalL'auteur Luis Garcia | 2013-04-04