Pergunta

Meu objetivo é conectar a instância um Oracle 9i da minha máquina OS X. Eu segui as instruções de instalação aqui e tem por eles sem erros (eventualmente). No entanto, eu estou achando que sqlplus é incapaz de se conectar: ??

[ ethan@gir ~ ]$ sqlplus xxx/yyy@zzz

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Apr 17 10:13:08 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

looooong espera ...

ERROR:
ORA-12170: TNS:Connect timeout occurred

Enter user-name: xxx
Enter password: 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Enter user-name:

Meu arquivo tnsnames.ora ...

zzz =
  (DESCRIPTION = 
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = dbhost)
        (PORT = 1521))
    )
  (CONNECT_DATA =
    (SERVICE_NAME = zzz)
  )
)

Talvez haja uma variável env que precisa ser definido?


Atualização

capaz de ping máquina host DB nenhum problema.

Tentei ...

sqlplus xxx/yyy@//dbhost/zzz

Got ...

ERROR:
ORA-12170: TNS:Connect timeout occurred

Tentei usar SID vez de SERVICE_NAME em tnsnames.ora. não parecem mudar o resultado. volta revertido para SERVICE_NAME.


Última casal entradas em sqlnet.log ...

***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 10:33:06
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0


***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 11:24:08
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0

RESPOSTA PARCIAL

Obrigado a todos por suas respostas. Eles foram úteis. Descobri que havia um problema de DNS. Eu era capaz de pingue por hostname, então pensei que deve funcionar bem. Eu também tentei, I.P. endereço. Descobriu-se que eu precisava do interno "10.1.x.x", I.P. endereço para que ele funcione nesta máquina OS X (mas hostname é bem no Windows).

Neste ponto, eu posso ligar com ...

sqlplus xxx/yyy@//INTERNAL_IP/zzz

No entanto, com esses valores entraram em tnsnames.ora, isso ainda não funciona ...

sqlplus xxx/yyy@zzz

...

ORA-12154: TNS:could not resolve the connect identifier specified

Eu procurei por um arquivo de amostra tnsnames.ora que estava perto do que eu precisava e copiou o conteúdo no meu arquivo. Mudou os parâmetros e agora tudo funciona. Não sei por que o meu não estava funcionando.

Foi útil?

Solução

Uma vez que você estiver usando um cliente 10g, é aconselhável sintaxe uso Easy Connect vez:

export TWO_TASK=//dbhost/zzz
sqlplus xxx/yyy

, ou apenas esta:

sqlplus 'xxx/yyy@//dnhost/zzz'

Além disso, verifique os seus pontos ORACLE_HOME para a pasta correta: tnsnames.ora é procurado em $ORACLE_HOME/network/admin/tnsnames.ora

Outras dicas

Seus suportes parece correto.

Tente utilizar o SID:

A seguir é um exemplo de um arquivo tnsnames.ora:

IDENTIFIER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP) (HOST = userid.myhosteddb.net)(PORT = 1521))
    )
    (CONNECT_DATA = (SID = odb))
  )

Leia sobre SID aqui.

Você pode usar

sqlplus user/password@servicename_host

Se você não pode se conectar você pode usar

sqlplus user/password@(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))

Se você estiver usando linux outro * Nix OS Você precisa usar aspas então o () são interpretados pelo shell

exemplo

sqlplus user/password@'(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))'

Há provavelmente um arquivo sqlnet.log sendo gerado em seu diretório de trabalho. Isso pode ajudá-lo ou se você postar seu conteúdo poderia nos dar mais informações.

No seu exemplo, você está tentando duas coisas diferentes. Na linha de comando que você usou "xxx / yyy @ zzz". Parece que este é encontrar a entrada "zzz" em tnsnames.ora com sucesso, mas o tempo limite indica que ele está recebendo qualquer resposta do servidor. Pode você pingue dbhost com sucesso?

Em sua segunda tentativa que acabou de inserir "xxx" para o nome de usuário; o que faz sentido se você não está acostumado a SQLPlus, mas como você pode ver não há nenhum ponto em que ele solicita o nome do banco. Portanto, neste caso, foi tentando se conectar a "xxx / yyy" sem um nome de serviço, levando para o segundo erro. Isto apenas significa que você não tem um nome de serviço padrão configurado. Portanto, esse erro vem da entrada incompleto. (Você deve digitar "xxx @ zzz" para o nome de usuário para especificar o nome do serviço neste prompt. Você pode realmente entrar em toda a cadeia de ligação "xxx / yyy @ zzz" no nome de usuário rápida, se você não se importa do ser a senha visível.)

Você já tentou usar telnet para chegar à porta aberta para certificar-se de um firewall não está bloqueando você? pode valer a pena uma série tentativa telnet porta-num

Será que você configurar seu ambiente com a oraenv script?

Você já tentou tnsping?

$ tnsping $ORACLE_SID

Talvez ele vai ajudar a comparar a saída em uma máquina que se conecta à saída em uma máquina que não consegue se conectar. Pelo menos é o que eu faço pouco antes de entrar em contato com o nosso DBA.

Você pode obter um pouco mais detalhadamente sobre o que o erro com o comando oerr:

$ oerr ora 12170
12170, 00000, "TNS:Connect timeout occurred"
// *Cause:  The server shut down because connection establishment or
// communication with a client failed to complete within the allotted time
// interval. This may be a result of network or system delays; or this may
// indicate that a malicious client is trying to cause a Denial of Service
// attack on the server.
// *Action: If the error occurred because of a slow network or system,
// reconfigure one or all of the parameters SQLNET.INBOUND_CONNECT_TIMEOUT,
// SQLNET.SEND_TIMEOUT, SQLNET.RECV_TIMEOUT in sqlnet.ora to larger values.
// If a malicious client is suspected, use the address in sqlnet.log to
// identify the source and restrict access. Note that logged addresses may
// not be reliable as they can be forged (e.g. in TCP/IP).

Eu tive um problema semelhante e parece que a Oracle sqlplus era o problema!

Conexão como nenhuma dessas obras:

   > sqlplus MyUsername/MyPassword@MyHostname:1521/MyServiceName
   > sqlplus MyUsername/MyPassword@//MyHostname:1521/MyServiceName

(o // é opcional antes do hostname). No entanto, deixando de fora a senha ou ambos user / pass falha como esta:

    sqlplus @//MyHostname:1521/MyServiceName

    SQL*Plus: Release 11.2.0.4.0 Production on Thu Apr 2 15:59:49 2015

    Copyright (c) 1982, 2013, Oracle.  All rights reserved.

    SP2-0310: unable to open file "//MyHostname:1521/MyServiceName.sql"
    Enter user-name: MyUsername
    Enter password: MyPassword
    ERROR: 
    ORA-12162: TNS:net service name is incorrectly specified

Assim, mesmo que sqlplus lhe pede o nome de usuário / senha, ele vai estupidamente falhar com uma mensagem de erro falso se você digitá-los na linha de comando. Ele só funciona se você colocá-los (os dois!) No início da cadeia de ligação.

A Oracle estúpido !!!

FOLLOW LINK para instalação passo a passo e métodos de instalação post .. Tenha cuidado com ele.

E se conectar com SQL Plus:

  1. Nome de Usuário será sistema CONFORME O ensino ministrado em link acima
  2. sua senha não deve ser tigre mas o que você definir no início da instalação

P.S: pânico Não se você encontrar problema (incompatibilidade navegador), que liga o Oracle Enterprise Manager durante o teste de instalação se o seu navegador é o Google Chrome. bateu a seta página para trás e próxima seta página para acordar os termos e clicando em OK.

Eu resolvi este problema na minha máquina em um dia .. mas será uma questão de alguns hors para você.

soruces: eu sou computador engenheiro ciência principalmente código em Java

Eu tive o mesmo erro (ORA-12162: TNS: nome do serviço net é especificado incorretamente), mas um motivo diferente (No Windows 7 Enterprise 64-bit). Espero que isso ajude alguém:

I.T. no meu trabalho instalado 32bit e 64bit Oracle, e com base na minha variável PATH, o shell parecia no caminho de 64 bits para SQLPLUS.exe comparação com o caminho de 32 bits.

Os caminhos diferentes usam diferentes arquivos tnsnames.ora e eu não tinha a minha string de conexão no caminho de 64 bits:

A Oracle \ product \ 11.1.0 \ client_1_64bit \ network \ admin \ tnsnames.ora

Eu só tinha a seqüência de conexão no 32-bit TNSNAMES.ORA: Oracle \ product \ 11.1.0 \ client_1_32bit \ network \ admin \ tnsnames.ora

Além disso, uma vez que havia várias instalações ORACLE eu tinha que remover a variável de ambiente ORACLE_HOME para que ambas as instalações pode usar diferentes diretórios home.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top