Ocierror на «требовании»; Проблема разрешений?
Вопрос
Я только недавно начал учиться / использовать Ruby на работе. У меня есть Super-Simple Test Script, который просто подключается к нашей базе данных Oracle 10G, запускает выбор, и «ставит» результаты на экран. Это на сервере Solaris 10. Если я запускаю скрипт как пользователь «Apps» (пользователь системы, который запускает наши автоматические скрипты), скрипт запускает штрафы. Если я бегу как сам, он бросает ошибку:
oci8lib.c:98:in oci8lib.so: OCI Library Initialization Error (OCIError)
from /usr/local/lib/ruby/site_ruby/1.8/oci8.rb:25
from ./dbTest.rb:3:in `require'
from ./dbTest.rb:3
My Env vars соответствует пользователю «Приложений». Я предполагаю, что это проблема разрешений на некотором файле / каталоге или другом, но я не знаю, с чего начать смотреть. Линия 25 в файле OCI8.RB является директивой «требуется» OCI8LIB_18 '«». Я прочитал и выполняет разрешения на файл OCI8LIB_18.SO и дирижера, ведущие к нему, но я не знаю, какой Это нужно получить доступ.
У кого-нибудь есть какие-либо предложения по каким файлам / порядам, я должен проверить разрешения? Или любые другие мысли о том, что может быть проблема?
ОБНОВИТЬ Я отправился по электронной почте с парнем, который поддерживает OCI8, и оказывается, что несколько каталогов Oracle имеют разрешения, которые предотвращают доступ для моего логина доступа к необходимой информации. Простой тест должен был попытаться запустить SQLPLUS, который также не удалось.
Дейв
Решение 2
Я отправился по электронной почте с парнем, который поддерживает OCI8, и оказывается, что несколько каталогов Oracle имеют разрешения, которые предотвращают доступ для моего логина доступа к необходимой информации. Простой тест должен был попытаться запустить SQLPLUS, который также не удалось.
Другие советы
Априори, я понятия не имею. Запустит другие приложения Ruby, используя OCI? Обычно библиотеки и вспомогательные библиотеки все установлены RWX-R-XR-X. Вы никогда не должны видеть ошибки разрешений на правильно установленные библиотеки. Так что я делаю дикую дикую догадаю, вы не хватаете что-то в своей среде, вероятно, как запись в LD_LIBRARY_PATH
LDD открывает общие библиотеки почти так же, как делает изображение времени выполнения.
Посмотрите, первым ли это работает:
cd /path/to/library # where oci8lib.so lives.
ldd oci8lib.so
Это должно отображать все внешне связанные библиотеки без ошибок. Если LDD работает, проверьте свой LD_LIBRARY_PATH, чтобы убедиться, что путь, который вы сейчас находитесь, объявлен там. Если он не работает, у вас есть какой-то проблема установки, например отсутствующие библиотеки или нестандартные пути к библиотекам.
Вернись к нам здесь с вашими результатами.