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

Я использую 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 без указания хоста?


person Simon    schedule 12.04.2011    source источник


Ответы (1)


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

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 должно помочь (хотя я не пробовал).

person a_horse_with_no_name    schedule 12.04.2011