Eu instalei o Oracle 11g Express Edition Release 2 no meu sistema operacional Windows 7 de 64 bits e tentei executar o programa JDBC, e obtive o seguinte erro:
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.jlcindia.jdbc.JDBCUtil.geOracleConnection(JDBCUtil.java:28)
at Lab3O.main(Lab3O.java:15)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
... 8 more
Respostas:
Corrigi esse problema corrigindo minha string jdbc.
Por exemplo, a cadeia jdbc correta deve ser ...
Mas a string jdbs que eu estava usando é ...
(Nota: entre
1521
eXE
deve ser a/
)Essa string jdbc incorreta também me deu um erro ORA-12505.
fonte
Existem algumas coisas que podem causar esse problema, mas antes de iniciar o JDBC, você precisa se conectar ao banco de dados usando o SQL * Plus. Se você não está familiarizado com o SQL * Plus, é uma ferramenta de linha de comando para conectar-se aos bancos de dados Oracle que faz parte do Oracle há muito tempo e está incluída no Oracle XE.
Ao conectar-se a um banco de dados Oracle usando JDBC, você não se conecta diretamente ao banco de dados. Em vez disso, você se conecta a um ouvinte do TNS, que o conecta ao banco de dados. O erro
ORA-12505
significa que o ouvinte estava ativo e você pode se conectar a ele, mas não foi possível conectá-lo ao banco de dados porque não sabe que esse banco de dados está ativo. Há duas razões para isso:ORA-12505 significa que o ouvinte conhece esse banco de dados, mas o ouvinte não recebeu uma notificação do banco de dados de que o banco de dados está ativo. (Se você estivesse tentando se conectar ao banco de dados errado, usando o SID errado, obteria o erro ORA-12154 "TNS: não foi possível resolver o identificador de conexão especificado".)
Quais serviços Oracle estão sendo executados no snap-in Serviços? (Abra isso no Painel de controle> Ferramentas administrativas> Serviços, ou apenas Iniciar> Executar>
services.msc
.) Você precisa que os serviços OracleServiceXE e OracleXETNSListener estejam em execução.Se os serviços foram iniciados, você pode se conectar ao banco de dados no SQL * Plus usando qualquer um dos seguintes itens em um prompt de comando? (Presumo que você os esteja executando na máquina em que instalou o Oracle XE.)
(Substitua
system-password
pela senha que você definiu para os usuários SYS e SYSTEM durante a instalação do Oracle XE.)O primeiro desses três se conecta pelo ouvinte TNS, mas os dois se conectam diretamente ao banco de dados sem passar pelo ouvinte e só funcionam se você estiver na mesma máquina que o banco de dados. Se o primeiro falhar, mas os outros dois forem bem-sucedidos, as conexões JDBC também falharão. Nesse caso, conecte-se ao banco de dados usando um dos outros dois e execute
ALTER SYSTEM REGISTER
. Em seguida, saia do SQL * Plus e tente o primeiro formulário novamente.Se o terceiro falhar, mas o segundo funcionar, adicione sua conta de usuário ao grupo ora_dba. Faça isso no Painel de controle> Gerenciamento do computador> Usuários e grupos locais.
Depois de obter as conexões do formulário
Para funcionar, você deve conseguir se conectar ao Oracle XE via JDBC. (Aliás, você não nos mostrou o código JDBC que está usando para se conectar ao banco de dados, mas eu suspeito que provavelmente esteja correto; haveria outros erros se partes da cadeia de conexão estivessem erradas.)
fonte
SP2-0734: unknown command beginning "system/ora..." - rest of line ignored.
em todos os 3 #system/ora...
(ou o SQL * Plus leu essa linha em um arquivo que você pediu para ler). As linhas de comando que forneci acima devem ser usadas em uma janela de prompt de comando / shell / Terminal. Se você já estiver executando o SQL * Plus, substituasqlplus
porconnect
.Eu também recebi o mesmo erro, mas quando tentado, todos os três falharam. Se os três acima falharem, tente o status LSNRCTL se encontrar o serviço (XE no meu caso) ausente, tente isso
Agora você pode ver o serviço
Mesmo que não veja, experimente este
Provavelmente isso deve funcionar ...
fonte
local_listener
, o ouvinte orcl agora está sendo mostrado emlsnrctl
. Graças um milhão!ORA-65040: operation not allowed from within a pluggable database
o que isso significa? Não é possível configurar o JDBC: /alter system set local_listener = ...
trabalhou para mim.Quando você está recebendo este erro "ORA-12505, TNS: o ouvinte não conhece o SID fornecido no descritor de conexão"
Solução: abra Serviços e inicie
OracleServiceXE
, depois tente conectar ...fonte
Encontrei alguns motivos para essa exceção.
1) O nome do banco de dados XE por padrão.so o URL será " jdbc: oracle: thin: @localhost: 1521: XE ".
2) Verifique se o OracleServiceXE, OracleXETNSListener está em execução. Ele estará no Painel de Controle \ Todos os Itens do Painel de Controle \ Ferramentas Administrativas \ Serviços
fonte
Resolvi esse problema corrigindo meu código JDBC.
a sequência JDBC correta deve ser ...
Mas a string JDBC que eu estava usando era ...
Portanto, o erro de especificar orcl em vez de xe mostrou esse erro, pois o nome do SID estava errado.
fonte
conection = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:orcl","system","ishantyagi");
funcionou.Meu problema foi resolvido quando eu uso o código abaixo:
fonte
Diante de um erro semelhante, qualquer uma das soluções acima não ajudou. Houve um problema no arquivo listner.ora. Por engano, eu adicionei
SID
o textoSID_LIST
abaixo (seção entre as estrelas *).Corrigido este erro como abaixo:
Parado e o banco de dados
Parou os listeners OracleServiceXE e OracleXETNSListener manualmente, pois não parava automaticamente, indo para Painel de Controle \ Todos os Itens do Painel de Controle \ Ferramentas Administrativas \ Serviços. Reiniciou o banco de dados e funcionou como um encanto.
fonte
Eu inicialmente vim aqui com o mesmo problema. Eu já tinha instalado o Oracle 12c no Windows 8 (64 bits), mas já o resolvi com 'TNSPING xe' na linha de comando ... Se a conexão não for estabelecida ou o nome não for encontrado, tente o nome do banco de dados, no meu caso, era 'orcl' ... 'TNSPING orcl' novamente e se ele pingar com êxito, então você precisará alterar o SID para 'orcl' nesse caso (ou qualquer nome de banco de dados usado) ...
fonte
Uma possibilidade que eu não vi amplamente discutida é que pode haver um problema ao resolver o nome do host na própria máquina host. Se não houver entrada para $ (nome do host) em / etc / hosts, o ouvinte do Oracle ficará confuso e não será exibido.
Esse foi o meu problema, e adicionar o nome do host e o endereço IP em / etc / hosts resolveu o problema.
fonte
Oracle: sintaxe de nome de serviço em estilo fino
Os nomes de serviço em estilo thin são suportados apenas pelo driver JDBC Thin. A sintaxe é:
@ // host_name: port_number / service_name
http://docs.oracle.com/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA
fonte
Se você possui uma conexão operacional no Oracle SQL Developer, use as informações no menu de conexão para criar seu URL, conforme descrito na imagem a seguir:
No exemplo acima, o URL seria:
jdbc:oracle:thin:@ORADEV.myserver.com:1521/myservice
Observe que, se você estiver usando um SID, haverá dois pontos (":") em vez de uma barra ("/") após o nome do host.
fonte
Eu também enfrentei o mesmo problema. Instalei o Oracle Express edição 10g no Windows XP OS usando o VMware e estava funcionando bem. Como era muito difícil digitar consultas SQL no utilitário SQL fornecido pela 10g e como eu estava acostumado a trabalhar com o desenvolvedor SQL, instalei o desenvolvedor SQL de 32 bits no XP e tentei conectar-me ao meu DB SID "XE". Mas a conexão falhou com o ouvinte de erro-ORA-12505 TNS atualmente não conhece o SID fornecido no descritor de conexão. Eu estava no mar sobre como esse problema ocorreu, pois estava funcionando bem com o utilitário SQL e também criei alguns mapeamentos da Informatica usando o mesmo. Pesquisei bastante sobre esse assunto aqui e apliquei as sugestões oferecidas depois de executar o ping do status de "lsnrctl" em fóruns públicos, mas sem sucesso. No entanto, nesta manhã, tentei criar uma nova conexão novamente, e Voila, funcionou sem problemas. Acho que, depois de ler em algumas postagens, às vezes o ouvinte ouve antes do banco de dados se conectar ou algo assim (perdoe-me por minha referência grosseira como sou novato aqui), mas sugiro que reinicie a máquina e verifique novamente.
fonte
Eu tive o mesmo problema, portanto, para resolvê-lo, reconfigurei meu ouvinte primeiro,
netca
depois excluí meu banco de dados antigo que era ORCL usandodbca
e, em seguida, criei o novo banco de dados novamente usandodbca
fonte
Eu enfrentei o mesmo problema e resolvi reiniciando o serviço OracleServiceXE. Vá para Services.msc e verifique se o serviço 'OracleServiceXE' está ativo e em execução
fonte
Corrigi esse problema alterando " SID " para " SERVICE_NAME " no meu arquivo TNSNAMES.ora.
Veja se seu banco de dados solicita SID ou SERVICE_NAME.
Felicidades
fonte
Se você usa o Oracle Express Edition, deve ter este URL
Eu tive um problema semelhante com o plugin de configuração liquibase no pom.xml. E eu mudei minha configuração:
fonte
Conexão con = DriverManager.getConnection ("jdbc: oracle: thin: @localhost: 1521: xe", "scott", "tigre");
Erro que recebi:
java.sql.SQLException: o ouvinte recusou a conexão com o seguinte erro: ORA-12505, TNS: o ouvinte atualmente não conhece o SID fornecido no descritor de conexão O descritor de conexão usado pelo cliente era: localhost: 1521: xe
Como eu resolvi isso:
Conexão con = DriverManager.getConnection ("jdbc: oracle: thin: localhost: 1521: xe", "scott", "tigre");
(Remover @)
Não sei por que, mas está funcionando agora ...
fonte
Verifique executando tnsping e nome da instância na máquina host. Ele fornecerá a descrição do tns e, na maioria das vezes, o nome do host é diferente, o que não corresponde.
Resolvo meu problema da mesma forma
Na máquina Unix, $ tnsping (Enter)
Dá-me uma descrição completa do tns onde descobri que o nome do host é diferente .. :)
fonte
Verifique os dois
OracleServiceXE
eOracleXETNSListener
inicie o status ao navegarstart->run->services.msc
.Para o meu caso, apenas
OracleXETNSListener
foi iniciado, masOracleServiceXE
não foi iniciado, quando inicieiright clicking -> start
e verifiquei a conexão que está funcionando para mimfonte
Eu tive um problema semelhante no SQL Workbench.
URL:
jdbc: oracle: thin: @ 111.111.111.111: 1111: xe
não funciona
URL:
jdbc: oracle: thin: @ 111.111.111.111: 1111: asdb
trabalho.
Isso me ajuda na minha situação concreta. Receio, que poderia existir muitas outras razões com diferentes soluções.
fonte
Teve um problema semelhante. O problema começou a ocorrer repentinamente - estamos tendo um URL de conexão de banco de dados com balanceamento de carga, mas nas conexões jdbc eu estava apontando diretamente para um único banco de dados.
Mudou para carregar url db balanceado e funcionou.
fonte
No meu caso não estava dando certo, finalmente reiniciei meu oracle e TNS ouvinte e tudo funcionou. Estava lutando por 2 dias.
fonte
Eu recebi esse erro ORA-12505, TNS: o ouvinte atualmente não conhece o SID fornecido no descritor de conexão quando tentei conectar-me ao oracle DB usando o desenvolvedor do SQL.
A cadeia JDBC usada foi jdbc: oracle: thin: @myserver: 1521 / XE , obviamente a correta e os dois serviços obrigatórios do Oracle OracleServiceXE, OracleXETNSListener estavam funcionando .
A maneira como resolvi esse problema (no Windows 10)
fonte
Além da execução de serviços (OracleServiceXE, OracleXETNSListener), existe a chance de o seu software / firewall antivírus ainda poder bloqueá-los. Apenas verifique se eles não estão bloqueados.
fonte
Eu apenas consertei isso reiniciando / iniciando o oracleService nos serviços
fonte
Meu oracle parou de funcionar e eu estava recebendo esse erro. Eu reiniciei minha máquina e também tentei as soluções acima. Por fim, abri os serviços de componentes e reiniciei os serviços da Oracle e tudo começou a funcionar. Espero que isso ajude alguém.
fonte
Eu estava apenas criando o link do banco de dados incorretamente.
A solução simples para mim foi simplesmente alterar 'SID' para SERVICE_NAME
Mudando
para
resolveu meu problema.
fonte