Hay algunas cosas que pueden causar este problema, pero antes de comenzar con JDBC, debe asegurarse de que puede conectarse a la base de datos utilizando SQL * Plus. Si no está familiarizado con SQL * Plus, es una herramienta de línea de comandos para conectarse a bases de datos Oracle que ha sido una parte estándar de Oracle durante mucho tiempo y se incluye con Oracle XE.
Cuando se conecta a una base de datos Oracle utilizando JDBC, no se conecta directamente a la base de datos. En cambio, te conectas a un oyente TNS, que luego te conecta a la base de datos. El error ORA-12505
significa que el oyente estaba activo y usted podía conectarse a él, pero no pudo conectarse a la base de datos porque no sabe que esa base de datos está activa. Hay dos razones para esto:
- la base de datos no se ha iniciado,
- la base de datos no se ha registrado con el oyente, por ejemplo, porque la base de datos se inició antes que el oyente. (Cuando se inicia la base de datos, se registra con un oyente si ya se está ejecutando. Si el oyente no se está ejecutando, la base de datos no se registra sola, y si se inicia el oyente, no busca bases de datos que puedan registrarse con él)
ORA-12505 significa que el oyente conoce esa base de datos, pero no ha recibido una notificación de la base de datos de que la base de datos está activa. (Si intentaba conectarse a la base de datos incorrecta, utilizando el SID incorrecto, obtendría un error ORA-12154 "TNS: no se pudo resolver el identificador de conexión especificado").
¿Qué servicios de Oracle se ejecutan en el complemento Servicios? (Abra esto desde el Panel de control> Herramientas administrativas> Servicios, o simplemente Inicio> Ejecutar> services.msc
.) Necesita los servicios OracleServiceXE y OracleXETNSListener para ejecutarse.
Si ambos servicios se han iniciado, ¿puede conectarse a la base de datos en SQL * Plus utilizando cualquiera de los siguientes en el símbolo del sistema? (Supongo que está ejecutando estos en la máquina en la que ha instalado Oracle XE)
sqlplus system / system-password @XE
sqlplus system / system-password
sqlplus / as sysdba
(Reemplace system-password
con la contraseña que configuró para los usuarios de SYS y SYSTEM durante la instalación de Oracle XE).
El primero de estos tres se conecta a través del oyente TNS, pero los segundos dos se conectan directamente a la base de datos sin pasar por el oyente, y solo funcionan si está en la misma máquina que la base de datos. Si el primero falla pero los otros dos tienen éxito, entonces las conexiones JDBC también fallarán. Si es así, conéctese a la base de datos utilizando cualquiera de los otros dos y ejecute ALTER SYSTEM REGISTER
. Luego salga de SQL * Plus e intente el primer formulario nuevamente.
Si el tercero falla pero el segundo funciona, agregue su cuenta de usuario al grupo ora_dba. Haga esto en Panel de control> Administración de equipos> Usuarios y grupos locales.
Una vez que pueda obtener conexiones del formulario
sqlplus system / system-password @XE
para trabajar, debe poder conectarse a Oracle XE a través de JDBC. (Por cierto, no nos ha mostrado el código JDBC que está utilizando para conectarse a la base de datos, pero sospecho que probablemente sea correcto; habría otros errores si algunas partes de la cadena de conexión estuvieran mal).