クレデンシャルを追加する場合と追加しない場合の両方で、Oracle 11 でスケジュールされたジョブとしてシェル スクリプトを追加する際に問題が発生しています。
資格情報なしで取得
ORA-27369: job of type EXECUTABLE failed with exit code: 274662
ORA-06512: at "SYS.DBMS_ISCHED", line 154
ORA-06512: at "SYS.DBMS_SCHEDULER", line 450
ORA-06512: at line 17
27369. 00000 - "job of type EXECUTABLE failed with exit code: %s"
*Cause: A problem was encountered while running a job of type EXECUTABLE.
The cause of the actual problem is identified by the exit code.
*Action: Correct the cause of the exit code and reschedule the job.
このエラーは明らかに、externaljob.ora ファイルが root によって所有されていないか、グループによって書き込み可能ではないことに関連しています。それはそのどちらでもありません。
取得した資格情報の使用
Error report:
No more data to read from socket
これはあまり役に立ちません。私が実行している Oracle のバージョンは、Linux で 11.1.0.6.0 です。私が使用しているサンプルスクリプトは以下です。そのバージョンを試すために資格情報をコメントアウトします。資格情報は、標準的なユーザー名とパスワードにすぎません。
declare
namea varchar2(1000) := 'unix_command_job2';
BEGIN
DBMS_SCHEDULER.drop_job(namea, force=>true);
-- UNIX
DBMS_SCHEDULER.create_job(
job_name => namea,
job_type => 'EXECUTABLE',
number_of_arguments => 1,
job_action => '/bin/ls',
auto_drop => FALSE,
enabled => FALSE);
DBMS_SCHEDULER.set_job_argument_value(namea,1,'/tmp');
--DBMS_SCHEDULER.set_attribute(namea, 'credential_name', 'DCSCRED');
DBMS_SCHEDULER.run_job(namea);
DBMS_SCHEDULER.drop_job(namea);
END;
/