Oracle
 sql >> база данни >  >> RDS >> Oracle

Извикване на shell скрипт от PL/SQL, но shell се изпълнява като потребител на мрежата, а не като oracle

Проблемът, както е посочено в коментарите, е, че Runtime.getRuntime().exec работи през EXTPROC и по този начин през Grid Listener. Тъй като имаме изолация на потребителите на ОС между DB и GRID в нашата нова конфигурация, това повдигна проблем с разрешението на FS.

Решението за това е едно от следните:

  • Коригирайте разрешението на FS, за да позволите на потребителя на мрежата да пише файловете и да промените umask на нещо като 774 или 664, така че потребителите на мрежата и оракул да могат да променят файловете по-късно;

  • променете sudoers файла и позволете на мрежата да изпълнява командите, необходими като оракул без парола и променете shell скрипта, за да включи sudo;

  • създайте нов слушател на DB Home на друг порт и променете записа в TNSNAMES.ORA, за да сочи към новия порт. След това extproc ще се изпълни като OS user oracle. Ще трябва ръчно да редактирате LISTENER.ORA на $OH и да го стартирате с lsnrctl, тъй като слушателите, регистрирани с srvctl, винаги ще бъдат стартирани от мрежа;

  • променете основния слушател на db home. Не препоръчвам това (вижте елемента по-горе).

[EDIT]Както беше посочено от @AlexPoole и @jonearles, има две други опции, които не бяха подходящи за моя случай, но може да са за други:

  • ако стартирате скрипта локално на sqlplus, като зададете ORACLE_SID, достъпът до FS ще бъде направен от потребителя на ОС, работещ с sqlplus. Така че можете да стартирате като oracle или друг потребител и да коригирате разрешенията на FS;
  • ако планирате задание на dbms_job Scheduler като SYS, задачата ще бъде изпълнена от Oracle (това поведение може да зависи от версията, така че е необходимо допълнително тестване).

Поздрави,

Даниел Столф



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Наклонена черта или без наклонена черта?

  2. Как да добавя персонализирана колона в таблична форма?

  3. Как да комбинирам две таблици в една и съща колона?

  4. ORA-12170:TNS:Възникна изчакване на връзката

  5. Извличане и групово събиране от REF CURSOR, върнат от процедура