Perché ne ho bisogno di due? Quando devo usare uno o l'altro?
@DAC
In breve: SID = il nome unico del tuo DB, ServiceName = l'alias usato quando ci si connette
Non strettamente vero... SID = nome univoco dell'INSTANCE (ad esempio il processo oracle in esecuzione sulla macchina). Oracle considera il "Database" come i file.
Service Name = alias di un'ISTANZA (o di molte istanze). Lo scopo principale di questo è se si sta eseguendo un cluster, il cliente può dire "connettimi a SALES.acme.com", il DBA può cambiare al volo il numero di istanze che sono disponibili alle richieste di SALES.acme.com, o anche spostare SALES.acme.com in un database completamente diverso senza che il cliente abbia bisogno di cambiare alcuna impostazione.
Si prega di vedere: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm
Qual è la differenza tra Oracle SIDs e Oracle SERVICE NAMES. Un
strumento di configurazione cerca SERVICE NAME e poi il prossimo cerca i SID! Che cosa'sta succedendo?
Oracle SID è il nome unico che identifica in modo univoco la tua istanza/database dove il Servizio nome è l'alias TNS che dai quando ti connetti da remoto al tuo database e questo nome di servizio è registrato nel file Tnsnames.ora sul tuo client e può essere lo stesso del SID e puoi anche dargli qualsiasi altro nome che vuoi.
SERVICE_NAME è la nuova caratteristica da oracle 8i in poi in cui il database può registrarsi con l'ascoltatore. Se il database è registrato con l'ascoltatore in questo modo, allora puoi usare il parametro SERVICE_NAME in tnsnames.ora altrimenti - usa SID in tnsnames.ora.
Inoltre se hai OPS (RAC) avrai avere un SERVICE_NAME diverso per ogni istanza.
SERVICE_NAMES specifica uno o più nomi per il servizio di database a cui cui questa istanza si connette. È possibile specificare più nomi di servizi in modo da distinguere tra diversi usi dello stesso database. Per esempio:
SERVICE_NAMES = sales.acme.com, widgetsales.acme.com
Puoi anche usare i nomi dei servizi per identificare un singolo servizio che è disponibile da due diversi database attraverso l'uso della replica.
In un Oracle Parallel Server ambiente, devi impostare questo parametro per ogni istanza.
In breve: SID = il nome unico della tua istanza DB, ServiceName = l'alias usato quando ti connetti
Come da Glossario Oracle:
SID è un nome unico per un'istanza del database Oracle. ---> Per passare tra i database Oracle, gli utenti devono specificare il SID desiderato. Il SID è incluso nelle parti CONNECT DATA dei descrittori di connessione in un file TNSNAMES.ORA, e nella definizione dell'ascoltatore di rete nel file LISTENER.ORA. Conosciuto anche come System ID. Nome del servizio Oracle
può essere qualcosa di descrittivo come "MyOracleServiceORCL". In Windows, puoi il tuo Service Name in esecuzione come un servizio sotto Windows Services.
Dovresti usare SID in TNSNAMES.ORA come approccio migliore.