スケジュールされたジョブを手動で実行しようとしています。ジョブは次のようになります
_ DBMS_SCHEDULER.CREATE_JOB (
job_name => 'UPDATE_PLAYER_STATES',
job_type => 'STORED_PROCEDURE',
job_action => 'PLAYER_STATE_UPDATER',
repeat_interval => 'FREQ=DAILY;BYHOUR=0', /* every day at Midnight */
job_class => 'DEFAULT_JOB_CLASS',
enabled => true,
auto_drop => false);
_
_execute PLAYER_STATE_UPDATER
_を使用してプロシージャを実行すると、目的の結果が表示されますが、次のようにジョブが実行に失敗しています
_select log_date, job_name, status, run_duration
from dba_scheduler_job_run_details where job_name='UPDATE_PLAYER_STATES' or status='FAILED';
LOG_DATE JOB_NAME STATUS RUN_DURATION
------------- -----------------------------------------------------------------
23-AUG-11 00.20.24.288887000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
22-AUG-11 10.27.24.537659000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
22-AUG-11 10.28.50.447042000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
22-AUG-11 10.30.30.018891000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
25-AUG-11 10.59.02.332579000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
25-AUG-11 10.59.15.980730000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
25-AUG-11 10.59.27.823131000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
25-AUG-11 11.01.04.798364000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
24-AUG-11 00.20.24.419251000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
25-AUG-11 00.20.24.299180000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
25-AUG-11 09.35.24.798535000 +01:00 UPDATE_PLAYER_STATES FAILED 0 0:0:0.0
_
そして、手動でジョブを実行すると、dbms_scheduler.run_job('UPDATE_PLAYER_STATES');
もエラーで失敗します
_Error starting at line 1 in command:
dbms_scheduler.run_job('UPDATE_PLAYER_STATES')
Error report:
Unknown Command
_
私は何が欠けていますか。
ジョブを手動で実行しようとすると、SQL Developerで正しい構文を使用していないように見えます。 execute dbms_scheduler.run_job('UPDATE_PLAYER_STATES')
を使用する必要があります。もちろん、それはジョブが失敗している理由を説明していません。
私の推測では、ジョブの構成に問題があり、開始することさえできないようです。しかし、それが何であるかはわかりません。 job_action
にスキーマ名を含めて、スキーマが間違って検索されないようにしてみてください。
dba_scheduler_job_run_details
の他の列、特にerror#
やadditional_info
に関心のあるものはありますか?
次のように、JOBを手動で実行しています。
dbms_scheduler.run_job('UPDATE_PLAYER_STATES')
Oracleはこれをコマンドだと考えていますが、そうではないため、「不明なコマンド」というエラーメッセージが表示されます。
正しい方法それを実行するには:
BEGIN
dbms_scheduler.run_job('UPDATE_PLAYER_STATES');
END;
実行すると、スキーマ十分な権限がない場合の場合、「オブジェクトが存在しないか、権限がない」などのメッセージが表示されます問題の根本的な原因。
宜しくお願いします :)