Использование чистых TNSNAMES вместо подключений к базе данных на основе хоста в Oracle JDeveloper

#oracle #jdeveloper #tnsnames

#Oracle #jdeveloper #tnsnames

Вопрос:

Я использую Oracle JDeveloper 11.1.1.4.0, и я могу создавать подключения к базе данных (с типом Oracle (JDBC) ) с помощью thin драйвера без каких-либо проблем, если я указываю хост.

Например, я могу подключиться к локальной базе данных Oracle XE, указав:

 Driver: thin
Host Name: localhost
JDBC Port: 1521
Service Name: XE
  

Для подключения к удаленным базам данных я использую TNS, и мой tnsnames.ora файл настроен следующим образом, где MYDATABASE.EXAMPLE.COM указан идентификатор службы Oracle, который я хочу использовать.

 MYDATABASE.EXAMPLE.COM=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=testdb.example.com)
      (PORT=1234)
    )
    (CONNECT_DATA=
      (SERVICE_NAME=MYDATABASE.example.com)
    )
  )
  

Подключения к MYDATABASE.EXAMPLE.COM службе работают с SQL Developer, SQL Plus, TNSPING и т.д. С этого компьютера, Но я не могу найти способ указать это в подключении к базе данных JDeveloper без принудительного указания хоста.

Причина, по которой я не хочу указывать хост, та же, по которой мы используем TNS в первую очередь — testdb.example.com хост будет меняться со временем, но MYDATABASE.EXAMPLE.COM идентификатор службы TNS — нет.

Если я укажу хост testdb.example.com вместе с правильным псевдонимом TNS, соединение сработает. Если я укажу неправильный идентификатор, произойдет сбой — он определенно осведомлен о содержимом моего файла tnsnames.ora.

Сообщения, подобные этому, похоже, предполагают, что если JDeveloper знает о TNS_ADMIN, он будет использовать tnsnames.ora , но даже использование «Введите пользовательский URL JDBC» не работает, используя строку типа:

 jdbc:oracle:thin:MYDATABASE.EXAMPLE.COM
  

По-прежнему выдает ошибку «Пожалуйста, введите допустимое значение для имени хоста».

Кто-нибудь знает, как создать подключение к базе данных в JDeveloper без указания хоста?

Ответ №1:

Согласно руководству разработчика Oracle JDBC, вам необходимо указать местоположение файла tnsnames.ora через системное свойство (JVM), чтобы иметь возможность использовать tnsnames с драйвером thin:

http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/urls.htm#BEIDIJCE

Вам нужно будет запустить SQL Developer таким образом, чтобы было определено системное свойство oracle.net.tns_admin .

Добавление

AddVMOption -Doracle.net.tns_admin=/path/to/tnsnames.ora

для ide.conf должно сработать (хотя я этого не пробовал).