Oracle 11g: пакет osutil;нет пути на CentOS 7? - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь вызывать внешние программы через PL / SQL в Oracle 11g. Этот является кодом C общей библиотеки, а этот является соответствующей оболочкой PL / SQL для него.

Давайте предположим, что я хочу выполнить команду ps -A Unix,Вот что я получил:

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
Connected as sys@orcl AS SYSDBA

SQL> set serveroutput on;
SQL> exec osutil.RunOsCmd('ps -A');

ERROR, bad command or no output returned...
ERROR, bad command or no output returned...

PL/SQL procedure successfully completed

Что мне показалось странным, так это то, что, если я вместо этого exec osutil.RunOsCmd('echo This works, but ps does not?!?');, она выдаст мне вывод команды, как и должно быть:

This works, but ps does not?!?

PL/SQL procedure successfully completed

Давайте попробуем повторить $ ORACLE_HOME ...

SQL> exec osutil.RunOsCmd('echo $ORACLE_HOME');

/home/oracle/app/oracle/product/11.2.0/dbhome_1

PL/SQL procedure successfully completed

Теперь давайте попробуем повторить $ PATH ...

SQL> exec osutil.RunOsCmd('echo $PATH');



PL/SQL procedure successfully completed

Мне кажется, что команда библиотеки popen при ее выполнениичерез Oracle extproc вызывает оболочку sh без чего-либо в ее переменной $ PATH.

Есть идеи, почему это происходит?Я хотел бы выполнить ps -A из Oracle без указания полного пути к команде, то есть /bin/ps -A.

1 Ответ

0 голосов
/ 06 декабря 2018

Мне удалось решить мою проблему, добавив следующую строку в мой файл extproc.ora, который, в моем случае, находится под /home/oracle/app/oracle/product/11.2.0/dbhome_1/hs/admin:

SET PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

Казалось бы, Oracle 11g extproc действительно сбрасывает переменную окружения PATH;на самом деле, кажется, extproc имеет свою собственную среду, которую можно настроить только через файл extproc.ora, упомянутый выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...