Ошибка ORA-12514: невозможно установить соединение с базой данных Oracle

Ошибка "ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect descriptor" возникает, когда клиент не может подключиться к базе данных Oracle, потому что TNS listener не может определить сервисное имя, указанное в дескрипторе подключения.

Для решения этой проблемы необходимо проверить следующее:

1. Сервисное имя должно быть указано правильно в файле tnsnames.ora на стороне клиента. Например:


ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myserver)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

2. Сервисное имя и listener должны быть настроены правильно на стороне сервера. Например, если сервисное имя ORCL, то должен быть запущен listener, который слушает порт 1521 и настроен для обработки этого сервиса:


LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myserver)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = ORCL)
      (ORACLE_HOME = C:\oracle\product\12.1.0\dbhome_1)
      (GLOBAL_DBNAME = ORCL)
    )
  )

3. Проверьте наличие сетевой связи между клиентом и сервером.

Пример кода на языке Java для подключения к базе данных Oracle в случае использования сервисного имени:


public class OracleConnection {
  public static void main(String[] args) {
    Connection connection = null;
    try {
      Class.forName("oracle.jdbc.driver.OracleDriver");
      String url = "jdbc:oracle:thin:@//myserver:1521/ORCL";
      String username = "myusername";
      String password = "mypassword";
      connection = DriverManager.getConnection(url, username, password);
      System.out.println("Connected to Oracle database...");
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      try {
        if (connection != null) {
          connection.close();
          System.out.println("Connection closed...");
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

В данном примере мы используем драйвер Oracle JDBC и указываем сервисное имя ORCL в URL подключения. Если сервисное имя или другой параметр подключения указаны неверно, будет выброшено исключение SQLException с сообщением об ошибке ORA-12514.

Похожие вопросы на: "ora 12514 "

Python Pop - креативность и инновационность в разработке проектов на Python
Ошибка: cannot read property createobjectasync of undefined
Require: управление зависимостями для вашего приложения
Intent: Мощный инструмент для достижения целей
VSCodium - бесплатный и открытый аналог Visual Studio Code
Как использовать Console.WriteLine() для вывода данных в консоль
Что такое var и как его использовать
Как преобразовать массив в объект в JavaScript
Решите все свои проблемы и вопросы с помощью osticket
<h1>Bat to Exe - преобразование BAT файлов в исполняемые EXE файлы