In che modo SID è diverso dal nome del servizio in Oracle tnsnames.ora


Risposte:


154

Citazione di @DAC

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.


1
Quindi, nel tuo esempio, ci potrebbe essere SID Sales1, Sales2e Sales3, che sono tutti disponibili tramite il nome del servizio Sales?

1
Penso che sia il contrario: hai un SID disponibile come tanti servizi. È quindi possibile prendere uno dei servizi e puntarlo su un SID / database diverso.
Colin Nicholls,

Possiamo avere il nome Oracle SID uguale al nome TNS? Sarà un problema?
user2441441

2
@ user2441441: Seguendo la spiegazione fornita da Matthew, penso che tu abbia ragione nel presupposto che ci possono essere più SID e una volta che il Servizio
astrasse

26

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


Non ho capito bene. Non dovrebbe essere quello in RAC, avrai "INSTANCE_NAME" diverso per ogni istanza? E un SERVICE_NAME può essere associato a più istanze?
Iwan Satria,

20

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.


6

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


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.