Os nomes do Oracle TNS não aparecem ao adicionar uma nova conexão ao SQL Developer

93

Estou tentando me conectar a um banco de dados oracle com SQL Developer.

Instalei os drivers .Net Oracle e coloquei o tnsnames.oraarquivo em
C:\Oracle\product\11.1.0\client_1\Network\Admin

Estou usando o seguinte formato em tnsnames.ora:

dev =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XXX.XXX)(PORT = XXXX))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = idpdev2)
    )
  )

No SQL Developer, quando tento criar uma nova conexão, nenhum nome TNS aparece como opções.

Tem algo que estou perdendo?

Americus
fonte

Respostas:

176

O SQL Developer procurará no seguinte local nesta ordem um arquivo tnsnames.ora

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. Chave de pesquisa TNS_ADMIN no registro
  4. /etc/tnsnames.ora (não Windows)
  5. $ ORACLE_HOME / network / admin / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Para ver qual SQL Developer está usando, emita o comando show tnsna planilha

Se o seu arquivo tnsnames.ora não estiver sendo reconhecido, use o seguinte procedimento:

  1. Defina uma variável de ambiente chamada TNS_ADMIN para apontar para a pasta que contém seu arquivo tnsnames.ora.

    No Windows, isso é feito navegando para Painel de controle > Sistema > Configurações avançadas do sistema > Variáveis ​​de ambiente ...

    No Linux, defina a variável TNS_ADMIN no arquivo .profile em seu diretório inicial.

  2. Confirme se o sistema operacional está reconhecendo esta variável ambiental

    Na linha de comando do Windows: echo% TNS_ADMIN%

    Do linux: echo $ TNS_ADMIN

  3. Reinicie o SQL Developer

  4. Agora em SQL Developer clique direito em Conexões e selecione New Connection ... . Selecione TNS como tipo de conexão na caixa suspensa. Suas entradas de tnsnames.ora agora devem ser exibidas aqui.
JaseAnderson
fonte
1
Para mim: $ HOME / .tnsnames.ora não funcionou ... Usei $ HOME / tnsnames.ora em vez disso. Observação também: você precisará ir para Ferramentas -> Preferências, pesquisar "tns" e apontar o diretório para $ HOME
Ryan Delucchi
Apesar de estar nas notas de lançamento da versão 1.5 do desenvolvedor SQL, descobri que no Ubuntu 12.04 LTS apenas o # 5 funcionava . Tente estas etapas para verificar se esse é o seu caso: forums.oracle.com/message/2769285#2769285 . Digno de nota : o autor teve o problema no Win Vista.
LAFK diz Reinstate Monica
Trabalhou para mim no Windows. Registrando coisas para sempre FTW!
Isaac
Definir TNS_ADMIN não funcionou para mim. Em vez disso, procurei no computador todos os arquivos TNSNAMES e atualizei o conteúdo de todos eles. Não tenho ideia de por que o Windows 7 Sql Developer persistiu em usar algum outro arquivo TNSNAMES em alguma pasta antiga.
Ben
1
Nota: $TNS_ADMINo DIRETÓRIO não é o .oraarquivo real
geneorama
30

Abra o SQL Developer. Vá para Ferramentas -> Preferências -> Bancos de dados -> Avançado Em seguida, defina explicitamente o diretório Tnsnames

Meu TNSNAMES foi configurado corretamente e pude me conectar ao Toad, SQL * Plus etc., mas eu precisava fazer isso para fazer o SQL Developer funcionar. Talvez fosse um problema do Win 7, pois também era difícil de instalar.

Paul Mattey
fonte
A resposta aceita não funcionou para mim, mas funcionou (Windows Server 2008R2)
Josh Werts
Tive o mesmo problema, mas o SQL Developer também procurou em% userprofile% \ tnsnames.ora antes de% TNS_ADMIN% \ tnsnames.ora, e foi aí que eu tinha o arquivo tnsnames.ora extra.
MBWise
15

Em SQLDeveloper ver Tools --> Preferences, como mostrado na imagem abaixo.

insira a descrição da imagem aqui

Nas opções de Preferências emexpand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory que tnsnames.ora está presente.
Em seguida, clique em Ok .
conforme mostrado no diagrama abaixo.

insira a descrição da imagem aqui

Você concluiu!

Agora você pode se conectar por meio das opções de TNSnames .

Chandra Sekhar
fonte
Não consigo encontrar "Databse: Advanced" ==> minha versão é 1.5.5
Tarek El-Mallah
1
Para versões inferiores a 2.1 ou se você não especificou um diretório Tnsnames em 2.1 ou superior, siga as especificações na resposta de @JasonAnderson .
Chandra Sekhar
Eu não tenho a opção Tnsnames Directory no menu Ferramentas-> Preferências-> Databaes-> Parâmetros Avançados. Estou usando o SqlDeveloper v1.1.3
Ahmedov
14

Você sempre pode descobrir a localização do arquivo tnsnames.ora sendo usado executando TNSPING para verificar a conectividade (9i ou posterior):

C:\>tnsping dev

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-JAN-2009 12:48:38

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = DEV)))
OK (30 msec)

C:\>

Às vezes, o problema é com a entrada que você fez em tnsnames.ora, não que o sistema não consiga localizá-la. Dito isso, concordo que ter uma variável de ambiente tns_admin definida é uma coisa boa, pois evita os problemas inevitáveis ​​que surgem com a determinação exata de qual arquivo tnsnames está sendo usado em sistemas com vários oracle homes.

DCookie
fonte
como posso instalar a ferramenta tnsping ??
Kiquenet
Na instalação do cliente, há uma caixa de seleção para Ferramentas de banco de dados ou algo parecido.
DCookie de
2

As etapas mencionadas por Jason são muito boas e devem funcionar. No entanto, há uma pequena diferença no SQL Developer. Ele armazena em cache as especificações de conexão (host, nome do serviço, porta) na primeira vez que lê o arquivo tnsnames.ora. Então, ele não invalida as especificações quando a entrada original é removida do arquivo tnsname.ora. O cache persiste mesmo após o SQL Developer ser encerrado e reiniciado. Esta não é uma forma tão ilógica de lidar com a situação. Mesmo se um arquivo tnsnames.ora estiver temporariamente indisponível, o SQL Developer ainda pode fazer a conexão, desde que as especificações originais ainda sejam verdadeiras. O problema surge com sua próxima reviravolta. O SQL Developer trata os nomes de serviço no arquivo tnsnames.ora como valores que diferenciam maiúsculas de minúsculas ao resolver a conexão. Então, se você costumava ter um nome de entrada ABCD. world no arquivo e você o substituiu por uma nova entrada chamada abcd.world, o SQL Developer NÃO atualizaria suas especificações de conexão para ABCD.world - tratará abcd.world como uma conexão totalmente diferente. Por que não estou surpreso que um produto Oracle trataria como diferenciando maiúsculas de minúsculas o conteúdo de um formato de arquivo desenvolvido pela oracle que não diferencia maiúsculas de minúsculas?

Allan Stewart
fonte
@allen: você sabe como forçá-lo a limpar esta lista? Em caso afirmativo, responda para stackoverflow.com/q/6412559/168646
David Oneill
1

No Sql Developer, navegue até Ferramentas-> preferências-> Datababa-> avançado-> Definir o diretório Tnsname para o diretório que contém tnsnames.ora

B Chowdhary
fonte
0

Nenhuma das mudanças acima fez qualquer diferença no meu caso. Eu poderia executar TNS_PING na janela de comando, mas o SQL Developer não conseguiu descobrir onde estava tnsnames.ora.

O problema no meu caso (Windows 7 - 64 bits - Enterprise) foi que o instalador do Oracle apontou o atalho do menu Iniciar para a versão errada do SQL Developer. Parece haver três instâncias do SQL Developer que acompanham o instalador. Um está em% ORACLE_HOME% \ client_1 \ sqldeveloper \ e dois estão em% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \.

O instalador instalou um atalho do menu iniciar que apontava para uma versão no diretório bin que simplesmente não funcionava. Ele pedia uma senha toda vez que eu iniciava o SQL Developer, não me lembro das escolhas que fiz e exibia uma lista em branco quando escolhi o TNS como o mecanismo de conexão. Também não possui o campo Diretório TNS nas configurações avançadas do banco de dados referenciadas em outras postagens.

Joguei fora o antigo atalho Iniciar e instalei um atalho para% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Essa mudança resolveu o problema no meu caso.

Michael
fonte