sqlplus через SSH не удалось разрешить TNS

Я настраиваю экземпляр EC2 и экземпляр RDS. Затем установил клиент экземпляра Oracle на экземпляр EC2. После этого мне удалось сделать sqlplus и подключиться к базе данных из экземпляра EC2. Для этого я создал файл tnsnames.ora и введите служебные данные базы данных.

Я могу сделать,

sqlplus user/password@db_alias

Но я не могу сделать, (Это дает ОШИБКУ: ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения)

ssh username@ip sqlplus user/password@db_alias

Пароль менее ssh также настроен. И я делаю SSH к текущей машине. Любая мысль будет полезна.

Дополнение к деталям. Поскольку я установил клиентский экземпляр oracle, команда tnsping недоступна. Я добился этого, добавив следующую функцию в файл.profile.

whence tnsping >/dev/null 2>&1 ||
  tnsping() {
    sqlplus -L -s x/x@$1 </dev/null |
      grep ORA- |
        (grep -v ORA-01017 || echo OK)
  }

1 ответ

Эта проблема может быть в состоянии сузить проблему загрузки переменных среды (в частности, $TNS_ADMIN). Так как .bashrc имеет проверку, чтобы проверить, является ли оболочка входа в систему интерактивной или неинтерактивной, переменные, которые определены внизу, не были загружены.

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Причиной, по которой tns не может быть разрешена с помощью ssh, является отсутствие $TNS_ADMIN переменная. Определив эти переменные в начале .bashrcЯ мог бы это исправить.

См. Также Почему удаленная команда SSH получает меньше переменных среды, чем при запуске вручную?

Другие вопросы по тегам