Como o SID é diferente do nome do serviço no Oracle tnsnames.ora

Por que preciso de dois deles? Quando tenho que usar um ou outro?

@DAC

Em suma: SID = o nome exclusivo do seu DB, ServiceName = o alias usado ao conectar

Não é estritamente verdadeiro .. SID = nome exclusivo do INSTANCE (por exemplo, o processo oracle em execução na máquina). A Oracle considera o “Banco de Dados” como sendo os arquivos.

Nome do Serviço = alias para uma INSTANCE (ou muitas instâncias). O principal objective é que, se você estiver executando um cluster, o cliente possa dizer “conecte-me a SALES.acme.com”, o DBA pode mudar o número de instâncias disponíveis para solicitações SALES.acme.com, ou até mesmo mover o SALES.acme.com para um database completamente diferente sem que o cliente precise alterar as configurações.

Por favor, veja: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm

Qual é a diferença entre os SIDs do Oracle e os Nomes de Serviço da Oracle? Uma ferramenta de configuração procura SERVICE NAME e, em seguida, a próxima procura por SIDs! O que está acontecendo?!

O Oracle SID é o nome exclusivo que identifica exclusivamente sua instância / database onde o nome do Serviço é o alias TNS que você fornece quando se conecta remotamente ao database e esse nome é gravado no arquivo Tnsnames.ora em seus clientes e pode ser o O mesmo que SID e você também pode dar qualquer outro nome que você deseja.

SERVICE_NAME é o novo recurso do oracle 8i em diante, no qual o database pode se registrar com o listener. Se o database for registrado com o listener dessa forma, você poderá usar o parâmetro SERVICE_NAME em tnsnames.ora, caso contrário, use o SID em tnsnames.ora.

Além disso, se você tiver OPS (RAC), terá SERVICE_NAME diferente para cada instância.

SERVICE_NAMES especifica um ou mais nomes para o serviço de database ao qual esta instância se conecta. Você pode especificar vários nomes de serviços para distinguir entre diferentes usos do mesmo database. Por exemplo:

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

Você também pode usar nomes de serviço para identificar um único serviço disponível em dois bancos de dados diferentes por meio do uso de replicação.

Em um ambiente Oracle Parallel Server, você deve definir esse parâmetro para cada instância.

Em suma: SID = o nome exclusivo da sua instância de database, ServiceName = o alias usado ao conectar

Eu sei que isso é antigo, no entanto, quando se lida com ferramentas miscigenadas, usos, usuários ou sintomas re: sid & serviço de nomeação pode adicionar um pouco flex para suas inputs tnsnames como como:

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

Eu apenas pensei em deixar isso aqui, pois é levemente relevante para a questão e pode ser útil ao tentar tecer algumas idiossincrasias menos claras da rede oracle.

o que é um nome SID e serviço

por favor, consulte a documentação do oracle em https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm

Quando tenho que usar um ou outro? Por que preciso de dois deles?

Considere abaixo o mapeamento em um ambiente RAC,

SID SERVICE_NAME
bob1 bob
bob2 bob
bob3 bob
bob4 bob

Se o balanceamento de carga estiver configurado, o ouvinte “equilibrará” a carga de trabalho nos quatro SIDs. Mesmo que o balanceamento de carga esteja configurado, você poderá se conectar a bob1 o tempo todo, se desejar, usando o SID em vez de SERVICE_NAME.

Por favor, consulte, https://community.oracle.com/thread/4049517

Conforme Oracle Glossary:

SID é um nome exclusivo para uma instância do database Oracle. —> Para alternar entre bancos de dados Oracle, os usuários devem especificar o SID desejado <---. O SID está incluído nas partes CONNECT DATA dos descritores de conexão em um arquivo TNSNAMES.ORA e na definição do listener de rede no arquivo LISTENER.ORA. Também conhecido como ID do sistema. Nome do Serviço Oracle pode ser qualquer coisa descritiva como "MyOracleServiceORCL". No Windows, você pode executar seu nome de serviço como um serviço no Windows Services.

Você deve usar o SID no TNSNAMES.ORA como uma abordagem melhor.

    Intereting Posts