Рубрики
Без рубрики

ОРА-12505, TNS: прослушиватель в настоящее время не знает SID, указанного в дескрипторе подключения

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

Это вызвано тем, что запрошенный идентификатор безопасности не существует в {ORACLE_HOME}/network/admin/tnsnames.ora

P.S Протестировано с базой данных Oracle 19c с 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/сеть/администратор/tnsnames.ora

2. xe||не существует в ||ORACLE_HOME/сеть/администратор/tnsnames.ora

Образец.

# tnsnames.ora Network Configuration File: C:\{ORACLE_HOME}\NETWORK\ADMIN\tnsnames.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();
	}

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

Оригинал: “https://mkyong.com/jdbc/ora-12505-tnslistener-does-not-currently-know-of-sid-given-in-connect-descriptor/”