Использование чистых TNSNAMES вместо соединений с базами данных на основе хоста в Oracle JDeveloper - PullRequest
2 голосов
/ 12 апреля 2011

Я использую 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 Ответ

2 голосов
/ 12 апреля 2011

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

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

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

...