2017-12-20 8 views
0

複数のジョブを並行して実行しようとすると、次の例外が発生します。断続的に発生します。SQL例外ORA-27478:DBMS_SCHEDULER.run_job中にジョブ「JOB_MIG_17602」が実行中

ジョブテーブルを更新するストアドプロシージャを呼び出す:

故障の点は、ジョブのDBMS_SCHEDULER.run_job

SQL Exception ORA-27478: job "JOB_MIG_17602" is running 
"ORA-06512: at "SYS.DBMS_ISCHED", line 196 
ORA-06512: at "SYS.DBMS_SCHEDULER", line 48 

説明です。固有のジョブ名を使用して作成されたジョブの異なるインスタンスによって、同じストアドプロシージャが呼び出されます。仕事を有効にすると、それは実行の対象であることを意味し

DBMS_SCHEDULER.create_job(
    job_name      => l_job_name, 
    job_type      => 'STORED_PROCEDURE', 
    job_action     => i_chunk_processor_name, 
    number_of_arguments   => 2, 
    enabled      => FALSE, 
    auto_drop     => FALSE 
); 

DBMS_SCHEDULER.set_job_argument_value(job_name => l_job_name, argument_position => 1, argument_value => i_user_id); 

DBMS_SCHEDULER.set_job_argument_value(job_name => l_job_name, argument_position => 2, argument_value => i_chunk_id); 


DBMS_SCHEDULER.enable(l_job_name); 

COMMIT; 

DBMS_SCHEDULER.run_job(job_name => l_job_name, use_current_session => FALSE); 
+0

あなたのdbバージョンは何ですか? 11.2未満? –

+0

DBのバージョンは11.2.0.4.0 –

+0

です。これはあなたのケースとは関係ありません。この問題にはバグ(M.O.S.-Doc ID 784664.1)がありますが、11.2より前のバージョンに関連するdbではありません。それは11.2で解決されました。 –

答えて

0

は、以下のジョブを実行するための手順です。だから、スケジューラコーディネーターがそれを拾って、それをあなたが「RUN_JOB」コマンドを取得前を開始した場合、その後、あなたがエラーを取得します、例えば

SQL> begin 
    2 DBMS_SCHEDULER.create_job(
    3  job_name      => 'XXX', 
    4  job_type      => 'PLSQL_BLOCK', 
    5  job_action     => 'begin dbms_lock.sleep(60); end;', 
    6  enabled      => FALSE, 
    7  auto_drop     => FALSE 
    8 ); 
    9 end; 
10/

PL/SQL procedure successfully completed. 

SQL> exec DBMS_SCHEDULER.enable('XXX'); 

PL/SQL procedure successfully completed. 

-- I wait for a few seconds 
-- 
SQL> exec DBMS_SCHEDULER.run_job(job_name => 'XXX', use_current_session => FALSE); 
BEGIN DBMS_SCHEDULER.run_job(job_name => 'XXX', use_current_session => FALSE); END; 

* 
ERROR at line 1: 
ORA-27478: job "MCDONAC"."XXX" is running 
ORA-06512: at "SYS.DBMS_ISCHED", line 238 
ORA-06512: at "SYS.DBMS_SCHEDULER", line 568 
ORA-06512: at line 1 

あなたがそれを可能にしている場合は、必要はありません明示的なrun_job要求。

関連する問題