web-dev-qa-db-ja.com

PL / SQLからのシェル(bash)の実行

PL/SQLのプロシージャまたは関数からシェルスクリプトを実行する方法を知っている人はいますか?シェルスクリプトが「/usr/bin/bash/convert.sh」であるとしましょう。

1
user159486

そのための外部ジョブを作成する必要があります。

外部ジョブのテクニック

まず、ジョブを実行するOSユーザーとパスワードを使用して、認証情報を作成する必要があります。

begin
  dbms_scheduler.create_credential
  (
    credential_name => 'my_credential',
    username        => 'Oracle',
    password        => 'Oracle123'
  );
end;
/

その後、外部ジョブを作成するときにこの資格情報を使用できます。たとえば、2つの引数を使用して変換スクリプトを呼び出す(入力ファイルと出力ファイル)

begin
  dbms_scheduler.create_job
  (
    job_name             => 'convert_job',
    job_type             => 'executable',
    number_of_arguments  => 2,
    job_action           => '/usr/bin/bash/convert.sh',
    auto_drop            => true,
    credential_name      => 'my_credential'
  );

  dbms_scheduler.set_job_argument_value('convert_job', 1, '/home/Oracle/file.in');
  dbms_scheduler.set_job_argument_value('convert_job', 2, '/home/Oracle/file.out');

  dbms_scheduler.enable('convert_job');
end;
/
3
Balazs Papp