Содержание

Это вызвано тем, что запрошенный SID не существует в {ORACLE_HOME}/network/admin/tnsnames.ora
PS Протестировано с базой данных 19c Oracle с ojdbc8.jar
1. JDBC
try (Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe", "system", "password")) {
// ...
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Выход:
SQL State: 66000
Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
СИД xe не существует в ORACLE_HOME/network/admin/tnsnames.ora
2. tnsnames.ora
Образец.
C: / {ORACLE_HOME} /NETWORK/ADMIN/tnsnames.ora
# tnsnames.ora Network Configuration File: C:{ORACLE_HOME}NETWORKADMINtnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
В выше tnsnames.ora образец, SID ORCL
Чтобы исправить это , обновите код:
try (Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "system", "password")) {
// ...
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Рекомендации
0.00 (0%) 0 votes









