Кто-нибудь получил Oracle Pro * C для работы на OS X 10.6, используя учетную запись не-Oracle? - PullRequest
0 голосов
/ 10 августа 2010

Я успешно установил собственный Oracle на 10.6 и могу успешно скомпилировать и выполнить пример кода Pro * C с использованием учетной записи 'oracle' (то есть того же пользователя ОС, под которым было установлено программное обеспечение). Это была веселая работа. Это даже работает с лязгом.

Однако в нашей обычной среде разработки исходный код, сценарии сборки, файлы создания и т. Д. Принадлежат другой группе и пользователю Unix - с доступом к ограниченному набору инструментов Oracle (sqlplus, exp, proc и т. Д.) .

Попытка использовать sqlplus из oracle install дала (известную проблему)

dyld: Library not loaded: /b/227/sqlplus/lib/libsqlplus.dylib

Это несмотря на то, что DYLD_LIBRARY_PATH определенно настроен правильно. Кто-то, кто провел дополнительное расследование, подумал, что где-то на этом пути путь к библиотеке был не задан до начала процесса.

Я сдался и просто использовал вместо этого InstantClient.

К сожалению, InstantClient SDK предназначен только для OCCI - он не включает в себя компилятор pro * c.

Итак, я вернулся к попытке заставить пользователя 'dev' выполнять 'proc' в каталоге oracle bin. Я уже решил одну проблему с dylib (с помощью символической ссылки) и различные проблемы с правами доступа к файлам (необходимо предоставить -r для файлов в иерархии каталогов / precomp).

Теперь я получаю дамп ядра (который не выполняется при работе под пользователем oracle)

System default option values taken from:    
/Users/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg

INTERNAL ERROR: Failed assertion [PGE Code=90105]

Segmentation fault

Есть предложения? Кто-нибудь на самом деле успешно это сделал?

1 Ответ

1 голос
/ 10 августа 2010

Первая проблема, с которой я столкнулся, была разрешена путем предоставления доступа на чтение к каталогу / precomp и подкаталогам в рамках установки oracle (затем вопрос был отредактирован для моей следующей проблемы).

По умолчанию компилятор procзаписывает в каталог, в котором находится файл исходного кода, а не локальныйПростое исправление - укажите целевое имя файла по пути.Это успешно привело к созданию файла .c.

Получение этого для компиляции - это случай предоставления доступа и указания правильных библиотек для связи (здесь будут работать 64-битные библиотеки InstantClient).

Наконец-то взломайте пример, приведенный в форму.

...