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:
- o banco de dados não foi iniciado,
- o banco de dados não foi registrado com o ouvinte, por exemplo, porque o banco de dados foi iniciado antes do ouvinte. (Quando o banco de dados é iniciado, ele se registra com um ouvinte, se já estiver em execução. Se o ouvinte não estiver em execução, o banco de dados não se registrará e, se o ouvinte iniciar, ele não procurará bancos de dados que possam registre-se.)
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.)
sistema sqlplus / senha do sistema @XE
sistema sqlplus / senha do sistema
sqlplus / as sysdba
(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
sistema sqlplus / senha do sistema @XE
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.)