Не удалось создать Eclipse Data Source для Oracle 12c с использованием 12c jar. Однако 11g работает

Когда я открываю окно "Проводник источника данных" и пытаюсь создать новый профиль подключения, я выбираю "Oracle", Oracle Thin Driver, а затем указываю на следующий JAR файл на своем ПК:

C:\oracle_12101_64bit\product\12101_64bit\CLIENT_1\jdbc\lib\ojdbc7.jar

После предоставления параметров подключения он получает URL-адрес соединения в следующем формате с помощью

jdbc:oracle:thin:@host:PORT:SID

Однако то, что я хочу получить, это это (обратите внимание на двоеточие вместо прямой косой черты)

jdbc:oracle:thin:@host:PORT/SID

Кажется, я могу подключиться к 11-граммовым базам данных, используя сгенерированный URL-адрес, но не 12c, я не знаю, случайно ли это, или у меня другая проблема.

В моей программе я использую JPA, и она считывает URL-адрес соединения из моего файла конфигурации в желаемом формате слэша в обратном направлении, и программа может подключаться и соединение терпит неудачу, если я изменяю URL-адрес, чтобы вместо этого использовать двоеточие.

Как создать профиль подключения в представлении проводника источника данных Eclipse, если я не могу управлять производным URL-адресом соединения для создания URL-адреса с косой чертой вместо двоеточия? Ошибка, которую я получаю:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

Обновление 1

Одна вещь, которую я заметил, состоит в том, что даже если я связываю файл jdbc7.jar, который поставляется с Oracle 12c, драйвер все еще отображается так, как будто это "Oracle 11".

enter image description here

Обновление 2:

Вот пример того, что находится в файле tnsnames.ora:

AFDEDEV.MYCO.COM =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = servername.sys.MYCO.com)(PORT = 2))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = afdedev.MYCO.com)
    )
  )

enter image description here

Похоже, что построитель строк подключения ожидает только SID. что бы мой SID был или как я могу узнать? Я пробовал как AFDEDEV, так и AFDEDEV.MYCO.COM. В случае 11g, который работал, я использовал эквивалент AFDEDEV. Извините, я не очень хорошо разбираюсь в SIDs и SERVICE NAMES. Есть ли запрос, который я мог бы выполнить против db, чтобы сообщить мне SID?

Ответ 1

Это похоже на ограничение шаблона Eclipse "Oracle Thin Driver". Он позволяет указывать только SID для соединения, а не имя службы; и либо вы не знаете SID, либо он не зарегистрирован у слушателя (который ваш администратор базы данных должен будет решить).

Если вы создаете новый драйвер из шаблона "Драйвер Oracle Database 11g", а не "Шаблон Oracle Thin Driver" и указываете его на файл 12c ojdbc7.jar, тогда вы сможете выбрать имя службы. Затем будет создан URL-адрес, например jdbc:oracle:thin:@//servername.sys.MYCO.com:2/afdedev.MYCO.com.

Он по-прежнему тот же тонкий драйвер, Eclipse просто, кажется, понимает его лучше,

Ответ 2

Вы также можете создать профиль из шаблона "Другой драйвер", добавить ojdbc7.jar в разделе "Добавить баннеры".

Теперь вы можете указать строку URL и другие параметры самостоятельно, и шаблон не будет автоматически заполнять что-либо для вас. Таким образом, вы можете предоставить имя службы с предыдущим "/"./P >