2

Oracle を使用してスケジュールされた外部ジョブを設定し、バッチ ファイルを呼び出そうとしています。これについて話しているネット上で多くの資料を見つけましたが、何かが欠けています。

PL/SQL を SQL Developer で実行しています (ただし、SQLPlus でも試しました)。出力ウィンドウに表示されるエラーは次のとおりです。

Error starting at line 7 in command:
exec dbms_scheduler.run_job('my_job')
Error report:
ORA-27369: job of type EXECUTABLE failed with exit code: The storage control blocks were destroyed.
ORA-06512: at "SYS.DBMS_ISCHED", line 185
ORA-06512: at "SYS.DBMS_SCHEDULER", line 486
ORA-06512: at line 1
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.

dba_scheduler_job_run_details で発生するエラーは次のとおりです。

"EXTERNAL_LOG_ID="job_167045_46155",
ORA-27369: job of type EXECUTABLE failed with exit code: The storage control blocks were destroyed.
STANDARD_ERROR="Launching external job failed: Invalid username or password""

私のバッチファイルがどこにあるかなど、何らかの許可の問題だと思います。メンテナンス アカウントとしてジョブを実行しようとしています。Windows コマンド ラインの「runas」コマンドを使用してバッチ ファイルを直接実行すると、すべて問題ありません。Oracle を介して実行すると、そうではありません。管理者アカウントなど、別のアカウントを試してみましたが、違いはありませんでした。

資格情報/ジョブを作成するために使用したコードは次のとおりです。

exec dbms_scheduler.create_credential( credential_name => 'oracle_cred', username => 'user', password => 'password', windows_domain => 'domain' );

DBMS_SCHEDULER.create_job ('my_job',
                          job_action => 'C:\WINDOWS\SYSTEM32\CMD.EXE',
                          number_of_arguments => 2,
                          start_date=> sysdate+1,
                          auto_drop=>FALSE,
                          job_type => 'executable',
                          enabled => FALSE
);   

DBMS_SCHEDULER.set_job_argument_value ('my_job', 1, '/C');
DBMS_SCHEDULER.set_job_argument_value ('my_job', 2, 'C:\maintenance\audit.bat');
dbms_scheduler.set_attribute('my_job', 'credential_name', 'oracle_cred');
DBMS_SCHEDULER.enable('my_job'); 

任意の提案をいただければ幸いです。

mj

4

0 に答える 0