Pergunta

Estou tentando me conectar ao Oracle 11g instalado no Linux El 5 e e obtendo o seguinte erro

SQL> connect sys/password@ud06 as sysdba
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

meu ouvinte.ora em rede/administrador é o seguinte

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=ud06)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=orcl)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (SID_NAME=orcl))
    (SID_DESC=
      (SID_NAME=plsextproc)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (PROGRAM=extproc)))

Meu tnsnames.ora é o seguinte

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

UD06=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ud06)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

Meu status LSNRCTL mostra o seguinte:

LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                17-FEB-2010 16:23:06
Uptime                    0 days 0 hr. 12 min. 33 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/11g/network/admin/listener.ora
Listener Log File         /home/oracle/app/oracle/product/11g/log/diag/tnslsnr/ud06/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
  Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
Foi útil?

Solução

Você pode ping ud06 com sucesso (como ud06, não ud06.us.server.com)?

O que faz o comando

lsnrctl services

mostrar?

EDIT: Parece -me que talvez o nome da instância do banco de dados não seja "orcl"? O que a saída do LSNRCTL Services me diz é que o serviço "ORCL", embora definido no arquivo ouvinte.ora, não está realmente em execução.

Você pode fazer logon com uma conexão direta no servidor? Em caso afirmativo, o que você usa como o valor variável de ambiente oracle_sid? Faça login como usuário do SYS e emita o comando:

Alterar registro do sistema;

Em seguida, emita o comando LSNRCTL Services novamente e veja se uma instância adicional não aparece.

Além disso, como Alex aponta, o comando tnsping está relatando um nome de serviço totalmente qualificado. Edite o arquivo sqlnet.ora e defina o valor nomes.default_domain como nulo se ele tiver um valor.

Edit 2: Tnsping UD06 no servidor trabalhar? Ou minha suposição de que o cliente e o servidor estão em diferentes sistemas errados?

Outras dicas

A resposta para esse problema é muito simples. Não se preocupe com os arquivos .ora ou qualquer outra configuração. O Oracle faz tudo isso perfeito.

Somente enquanto se conecta via linha de comando, ela é confundida com senhas que possuem um símbolo @.

Portanto, ao conectar através da linha de comando SQL, não use uma senha com um '@' nela. Basta usar a interface da Web para criar uma conta com uma senha sem um símbolo '@' nela.

Aquilo é!! Problema resolvido. Eu estava quebrando a cabeça há alguns dias e agora meu problema está resolvido !!

o SERVICE_NAME no tnsping A saída não corresponde à entrada em tnsnames.ora; Esse arquivo é da caixa do Windows ou da caixa Linux? Parece que você não tem um local (Windows) tnsnames.ora entrada para u06 E está adivinhando o que o nome do serviço deve estar expandindo -o - acho que é isso que significa a referência ao adaptador do nome do host.

Eu também encontro o ORA-12154: TNS: não consegui resolver o identificador de conexão especificado e adicionar o usuário que tenta se conectar ao grupo Oinstall of Oracle o corrigiu.

Primeiro tente se a instância do Oracle é iniciada:

para Windows:

START-> Painel de Configuração-> Administração Touls-> Services-> OracleServiceorCl (minha instância a caminho)-> Iniciar

Forneça a string de conexão como esta:

Nome do servidor: porta/serviceName; nome de usuário; senha

Add connection image

Eu também estava enfrentando o mesmo erro, tente este código:

SQL> conn  hr/hr  @pdborcl;

E se você encontrar o mesmo erro, isso significa que você tem um nome de banco de dados conectável diferente. Verifique o nome do banco de dados flugable apenas escrevendo o seguinte comando em sqlplus

sql> SELECT  name,  con_id  FROM  v$pdbs;

Corrigi esse problema usando essas etapas.

Primeiro de tudo, ocorreu esse erro, se você não instalou o mesmo diretório ou unidade.

Mas a resposta está aqui.

  1. Login o Windows como um administrador.
  2. Vá para o painel de controle.
  3. Propriedades do sistema e clique em ambientes
  4. Encontre a variável do sistema operacional e altere o nome como um "tns_admin"

    enter image description here

  5. E altere o valor como um "endereço de diretório da TNSNames"enter image description here

  6. Reinicie o sistema.

  7. Parabéns.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top