I'm trying to connect a Java program with a database made in SQLPlus Oracle 11g, at first the connection worked but then I got the following error:
java.sql.SQLRecoverableException: Error de E/S: The Network Adapter could not establish the connection
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:489)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:678)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
at connection.ConexionOracle.conectar(ConexionOracle.java:31)
at connection.ConexionOracle.consult(ConexionOracle.java:73)
at connection.ConexionOracle.getColumn(ConexionOracle.java:60)
at view.JpanelCreate.<init>(JpanelCreate.java:35)
at view.JpanelCRUD.<init>(JpanelCRUD.java:28)
at view.JFrameMainWindow.<init>(JFrameMainWindow.java:18)
at controller.Controller.<init>(Controller.java:13)
at test.Runner.main(Runner.java:7)
The code where I connect the program with the database is the following:
public ConexionOracle() {
user = "usuario";
pass = "123";
}
public ConexionOracle conectar() {
try {
Class.forName("oracle.jdbc.OracleDriver");
String BaseDeDatos = "jdbc:oracle:thin:@localhost:1521:xe";
conexion = DriverManager.getConnection(BaseDeDatos, user,pass);
if (conexion != null) {
System.out.println("Conexion exitosa!");
} else {
System.out.println("Conexion fallida!");
}
} catch (Exception e) {
e.printStackTrace();
}
return this;
}
What could be failing? Is the flaw in the program, in Oracle or in another external thing?
When reviewing the files listener.ora and tnsnames.ora this appears:
tnsnames.ora
# tnsnames.ora Network Configuration File:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
(SID = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
listener.ora
# listener.ora Network Configuration File:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
update
After reviewing several forums and trying several things, the problem became the following:
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:489)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:678)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229