Доступ или изменение tnsnames.ora на AWS Oracle RDS - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь получить доступ к экземпляру Oracle RDS, работающему на AWS, через приложение Scala Play, используя драйвер ojdbc8. Мне нужно получить доступ к файлу tnsnames.ora и проверить его конфигурацию, поскольку я получаю эту ошибку:

Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

, которая напрямую связана с этими двумя следующими разрешениями

проблема в том, что AWS НЕ разрешает удаленный доступ к Oracle RDS , и я не могу найти в консоли AWS ничего, что могло бы помочь мне изменить или даже получить доступ к содержимому tnsnames.ora.

Могу ли я сделать это, используя SQL? Эта ошибка даже не выглядит согласованной, поскольку, например, некоторые запросы работают ....

/// Дополнительная информация:

Запросы, подобные приведенным ниже, успешно выполняются:

SELECT COUNT(*) FROM (

SELECT
  DISTINCT tab.column_a, tab.column_a AS L0, tab.column_a AS L1, tab.column_a AS L2
FROM
  ADMIN.table_something tab
WHERE
  tab.column_a IS NOT NULL 

)

те, которые потерпели неудачу, выглядят так

SELECT
  DISTINCT tab.column_a, tab.column_a AS L0, tab.column_a AS L1, tab.column_a AS L2
FROM
  ADMIN.table_something tab
WHERE
  tab.column_a IS NOT NULL 

и под ошибкой я имею в виду ошибку, о которой я упоминал выше. Выполнение их из командной строки SQL не приводит к ошибкам.

Я использую этот jdb c URL:

jdbc:oracle:thin:@<host_URL>:1521:SID

Я также пытался использовать этот формат

jdbc:oracle:thin:@<host_URL>:1521/ServiceNames

Но, по-видимому, экземпляр AWS RDS не настроен с именами служб, поскольку при его использовании возникает синтаксическая ошибка. Большинство ответов, которые я нашел, относятся к tnsnames.ora как месту, где настраиваются имена служб и SID, и, следовательно, содержат информацию о том, как на самом деле формировать строку подключения. Вот почему я хочу получить к нему доступ, и если я найду что-то подозрительное, измените его.

1 Ответ

0 голосов
/ 21 февраля 2020

В этом случае ошибка была queryString. Где-то в коде следующий параметр запроса был добавлен к строке запроса: useCursorFetch=true. Первоначально он был добавлен для поддержки баз данных MySQL, но остался там и для всех остальных. Для Oracle затем URL-адрес соединения был преобразован в следующее:

  • jdbc:oracle:thin:@<host_URL>:1521:SID?useCursorFetch=true

, что, конечно, было интерпретировано как недействительный SID из Oracle.

Я все же думаю, что должен быть простой способ проверки файла tnsnames.ora.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...