Em resumo: SID = o nome exclusivo do seu banco de dados, ServiceName = o alias usado ao conectar
Não é estritamente verdade. SID = nome exclusivo da INSTANCE (por exemplo, o processo Oracle em execução na máquina). A Oracle considera o "Banco de Dados" como os arquivos.
Nome do serviço = alias para uma INSTANCE (ou várias instâncias). O principal objetivo disso é que, se você estiver executando um cluster, o cliente poderá dizer "conecte-me ao SALES.acme.com", o DBA poderá alterar rapidamente o número de instâncias disponíveis para solicitações do SALES.acme.com, ou mesmo mova SALES.acme.com para um banco de dados completamente diferente sem que o cliente precise alterar nenhuma configuração.
Assim, no seu exemplo, pode haver SID Sales1, Sales2e Sales3, todos os quais estão disponíveis através do nome do serviço Sales?
1
Eu acho que o oposto é o caso: você tem um SID que está disponível como muitos serviços. Você pode pegar um dos serviços e apontá-lo para um SID / banco de dados diferente.
Colin Nicholls
Podemos ter o nome do Oracle SID igual ao nome do TNS? Será um problema?
user2441441
2
@ user2441441: Indo pela explicação Matthew deu, acho que você está bem no pressuposto de que não pode haver vários SIDs e uma vez serviço que abstrai todos os SID
Qual é a diferença entre os SIDs do Oracle e os NOMES DE SERVIÇO do Oracle. Uma ferramenta de configuração procura NOME DO SERVIÇO e, em seguida, a próxima procura por SIDs! O que está acontecendo?!
Oracle SID é o nome exclusivo que identifica exclusivamente sua instância / banco de dados, onde como Nome do serviço é o alias do TNS que você fornece quando se conecta remotamente ao seu banco de dados e esse nome do Serviço é registrado no arquivo Tnsnames.ora em seus clientes e pode ser o igual ao SID e você também pode atribuir qualquer outro nome que desejar.
SERVICE_NAME é o novo recurso do oracle 8i em que o banco de dados pode se registrar no ouvinte. Se o banco de dados estiver registrado com o listener dessa maneira, 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 banco de dados ao qual esta instância se conecta. Você pode especificar vários nomes de serviços para distinguir entre diferentes usos do mesmo banco de dados. Por exemplo:
Estou confuso. Não deveria ser no RAC, você terá "INSTANCE_NAME" diferente para cada instância? E um SERVICE_NAME pode estar associado a várias instâncias?
Iwan Satria
20
Eu sei que isso é antigo, no entanto, quando se lida com ferramentas, usos, usuários ou sintomas exigentes, pode-se adicionar um pouco de flexibilidade às suas entradas tnsnames, como:
Eu apenas pensei em deixar isso aqui, pois é levemente relevante para a pergunta e pode ser útil ao tentar tecer em torno de algumas idiossincrasias menos do que claras de redes de oracle.
Caso o link acima não esteja acessível no futuro, no momento em que você escrever esta resposta, o link acima o direcionará para o tópico "Serviço de banco de dados e identificação de instância de banco de dados" no capítulo Conceitos de conectividade do "Guia do Administrador de Serviços de Rede de Banco de Dados" . Este guia é publicado pela oracle como parte de "Oracle Database Online Documentation, 10g Release 2 (10.2)"
Quando eu tenho que usar um ou outro? Por que eu preciso de dois deles?
Considere o mapeamento abaixo em um ambiente RAC,
SID SERVICE_NAME
bob1
bob2
bob2
bob3 bob3 bob4 bob
se o balanceamento de carga estiver configurado, o ouvinte 'equilibrará' a carga de trabalho nos quatro SIDs. Mesmo se o balanceamento de carga estiver configurado, você poderá se conectar ao bob1 o tempo todo, se desejar, usando o SID em vez de SERVICE_NAME.
SID é um nome exclusivo para uma instância de banco de dados Oracle. ---> Para alternar entre os 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 ouvinte de rede no arquivo LISTENER.ORA. Também conhecido como ID do sistema. O nome do serviço Oracle pode ser qualquer coisa descritiva como "MyOracleServiceORCL". No Windows, é possível que o Nome do serviço seja executado como um serviço nos Serviços do Windows.
Você deve usar o SID no TNSNAMES.ORA como uma abordagem melhor.
Respostas:
Citação de @DAC
Não é estritamente verdade. SID = nome exclusivo da INSTANCE (por exemplo, o processo Oracle em execução na máquina). A Oracle considera o "Banco de Dados" como os arquivos.
Nome do serviço = alias para uma INSTANCE (ou várias instâncias). O principal objetivo disso é que, se você estiver executando um cluster, o cliente poderá dizer "conecte-me ao SALES.acme.com", o DBA poderá alterar rapidamente o número de instâncias disponíveis para solicitações do SALES.acme.com, ou mesmo mova SALES.acme.com para um banco de dados completamente diferente sem que o cliente precise alterar nenhuma configuração.
fonte
Sales1
,Sales2
eSales3
, todos os quais estão disponíveis através do nome do serviçoSales
?Consulte: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm
Em resumo: SID = o nome exclusivo da sua instância de banco de dados, ServiceName = o alias usado ao conectar
fonte
Eu sei que isso é antigo, no entanto, quando se lida com ferramentas, usos, usuários ou sintomas exigentes, pode-se adicionar um pouco de flexibilidade às suas entradas tnsnames, como:
Eu apenas pensei em deixar isso aqui, pois é levemente relevante para a pergunta e pode ser útil ao tentar tecer em torno de algumas idiossincrasias menos do que claras de redes de oracle.
fonte
consulte a documentação da oracle em https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm
Caso o link acima não esteja acessível no futuro, no momento em que você escrever esta resposta, o link acima o direcionará para o tópico "Serviço de banco de dados e identificação de instância de banco de dados" no capítulo Conceitos de conectividade do "Guia do Administrador de Serviços de Rede de Banco de Dados" . Este guia é publicado pela oracle como parte de "Oracle Database Online Documentation, 10g Release 2 (10.2)"
Considere o mapeamento abaixo em um ambiente RAC,
SID SERVICE_NAME
bob1
bob2
bob2
bob3 bob3 bob4 bob
se o balanceamento de carga estiver configurado, o ouvinte 'equilibrará' a carga de trabalho nos quatro SIDs. Mesmo se o balanceamento de carga estiver configurado, você poderá se conectar ao bob1 o tempo todo, se desejar, usando o SID em vez de SERVICE_NAME.
Por favor, consulte, https://community.oracle.com/thread/4049517
fonte
Conforme o Oracle Glossary:
Você deve usar o SID no TNSNAMES.ORA como uma abordagem melhor.
fonte