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 получает меньше переменных среды, чем при запуске вручную?