ORA-12154: TNS: não foi possível resolver o identificador de conexão especificado
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
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
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.