Домой java ORA-12505, TNS: слушатель в настоящее время не знает SID, указанный в дескрипторе...

ORA-12505, TNS: слушатель в настоящее время не знает SID, указанный в дескрипторе соединения

2001

Это вызвано тем, что запрошенный 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();
}

Рекомендации

ЧИТАТЬ ТАКЖЕ:  Как преобразовать длинный массив в длинный массив, длинный [] в длинный []

JDBC оракул

ORA-12505, TNS: слушатель в настоящее время не знает SID, указанный в дескрипторе соединения

0.00 (0%) 0 votes