Perché ne ho bisogno di due? Quando devo usare l'uno o l'altro?
Perché ne ho bisogno di due? Quando devo usare l'uno o l'altro?
Risposte:
In breve: SID = il nome univoco del DB, ServiceName = l'alias utilizzato durante la connessione
Non proprio vero. SID = nome univoco dell'ISTANZA (ad es. Il processo dell'oracolo in esecuzione sulla macchina). Oracle considera il "Database" come file.
Nome servizio = alias di un'ISTANZA (o di molte istanze). Lo scopo principale di questo è se stai eseguendo un cluster, il cliente può dire "connettimi a SALES.acme.com", il DBA può cambiare al volo il numero di istanze disponibili per le richieste SALES.acme.com, o persino spostare SALES.acme.com in un database completamente diverso senza che il client debba modificare alcuna impostazione.
Sales1
, Sales2
e Sales3
, che sono tutti disponibili tramite il nome del servizio Sales
?
Si prega di consultare: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm
Qual è la differenza tra Oracle SID e Oracle SERVICE NAMES. Uno strumento di configurazione cerca NOME SERVIZIO e poi il successivo cerca SID! Cosa sta succedendo?!
Oracle SID è il nome univoco che identifica in modo univoco la tua istanza / database in cui come nome del servizio è l'alias TNS che dai quando ti connetti in remoto al tuo database e questo nome del servizio è registrato nel file Tnsnames.ora sui tuoi client e può essere il come SID e puoi anche assegnargli qualsiasi altro nome tu voglia.
SERVICE_NAME è la nuova funzione da Oracle 8i in poi in cui il database può registrarsi con il listener. Se il database è registrato con listener in questo modo, è possibile utilizzare il parametro SERVICE_NAME in tnsnames.ora altrimenti - utilizzare SID in tnsnames.ora.
Inoltre, se hai OPS (RAC), avrai SERVICE_NAME diverso per ogni istanza.
SERVICE_NAMES specifica uno o più nomi per il servizio di database a cui si collega questa istanza. È possibile specificare più nomi di servizi al fine di distinguere tra diversi usi dello stesso database. Per esempio:
SERVICE_NAMES = sales.acme.com, widgetsales.acme.com
È inoltre possibile utilizzare i nomi dei servizi per identificare un singolo servizio disponibile da due database diversi attraverso l'uso della replica.
In un ambiente Oracle Parallel Server, è necessario impostare questo parametro per ogni istanza.
In breve: SID = il nome univoco dell'istanza DB, ServiceName = l'alias utilizzato durante la connessione
So che questo è antico, tuttavia, quando si ha a che fare con strumenti, usi, utenti o sintomi complicati in relazione a nomi di nome e servizio, si può aggiungere un po 'di flessibilità alle voci del proprio nome come:
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)
)
)
Ho solo pensato di lasciarlo qui perché è leggermente rilevante per la domanda e può essere utile quando si tenta di intrecciare alcune idiosincrasie meno che chiare della rete di Oracle.
cos'è un SID e un nome di servizio
consultare la documentazione di Oracle all'indirizzo https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm
Nel caso in cui il link sopra riportato non sia accessibile in futuro, Al momento della stesura di questa risposta, il link precedente ti indirizzerà all'argomento "Identificazione delle istanze del servizio e del database" nel capitolo Concetti di connettività della "Guida dell'amministratore dei servizi di rete del database" . Questa guida è pubblicata da Oracle come parte di "Documentazione online del database Oracle, 10g Release 2 (10.2)"
Quando devo usare l'uno o l'altro? Perché ne ho bisogno di due?
Considerare di seguito la mappatura in un ambiente RAC,
SID SERVICE_NAME
bob1 bob
bob2 bob
bob3 bob
bob4 bob
se il bilanciamento del carico è configurato, il listener "bilancerà" il carico di lavoro su tutti e quattro i SID. Anche se il bilanciamento del carico è configurato, è possibile connettersi a bob1 in qualsiasi momento utilizzando il SID anziché SERVICE_NAME.
Fare riferimento a https://community.oracle.com/thread/4049517
Secondo il Glossario Oracle:
SID è un nome univoco per un'istanza del database Oracle. ---> Per passare da un database Oracle all'altro, gli utenti devono specificare il SID desiderato <---. Il SID è incluso nelle parti CONNECT DATA dei descrittori connect in un file TNSNAMES.ORA e nella definizione del listener di rete nel file LISTENER.ORA. Conosciuto anche come ID di sistema. Il nome del servizio Oracle può essere qualcosa di descrittivo come "MyOracleServiceORCL". In Windows, è possibile eseguire il nome del servizio in esecuzione come servizio in Servizi Windows.
È necessario utilizzare SID in TNSNAMES.ORA come approccio migliore.