OCIError относительно 'require';проблема с разрешениями? - PullRequest
0 голосов
/ 23 июня 2010

Я только недавно начал изучать / использовать Ruby на работе.У меня есть очень простой тестовый скрипт, который просто подключается к нашей базе данных 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

Мои значения env соответствуют пользователю 'apps'.Я предполагаю, что это проблема с разрешениями для какого-либо файла / каталога или другого, но я не знаю, с чего начать поиск.Строка 25 в файле oci8.rb - это директива require 'oci8lib_18'.Я прочитал и выполнил разрешения для файла oci8lib_18.so и каталогов, ведущих к нему, но я не знаю, к каким каталогам ему нужно получить доступ.

Есть ли у кого-нибудь какие-либо предложения покакие файлы / каталоги я должен проверить разрешения на?Или есть еще какие-нибудь мысли о том, в чем может быть проблема?

ОБНОВЛЕНИЕ Я переписывался с парнем, который поддерживает OCI8, и выясняется, что некоторые из каталогов Oracle имеют разрешения, которые препятствуют моемувойти от доступа к необходимой информации.Простой тест состоял в том, чтобы попытаться запустить sqlplus, который также не удался.

Dave

Ответы [ 2 ]

2 голосов
/ 27 июня 2010

Априори понятия не имею. Другие приложения 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, чтобы убедиться, что путь, по которому вы сейчас находитесь, там объявлен. Если это не работает, у вас возникла какая-то проблема с установкой, например, отсутствующие библиотеки или нестандартные пути к библиотекам.

Вернитесь к нам с вашими результатами.

0 голосов
/ 29 октября 2010

Я переписывался с парнем, который поддерживает OCI8, и выясняется, что некоторые каталоги Oracle имеют разрешения, которые не позволяют моему логину получить доступ к необходимой информации.Простым тестом была попытка запустить sqlplus, который также не удался.

...