JOB_QUEUE_PROCESSES パラメータ
http://download.oracle.com/docs/cd/E16338_01/server.112/b56310/changes.htm#BGBFEAFC
Oracle Database 11gリリース1(11.1)以上では、JOB_QUEUE_PROCESSES
初期化パラメータは基本パラメータから基本パラメータ以外に変更になりました。データベースを正しく効率的に実行するためにほとんどのデータベースで必要とされているのは、基本パラメータの設定のみです。デフォルト値も、0
から1000
に変更されます。
Oracle Database 11gリリース2(11.2)以上では、JOB_QUEUE_PROCESSES
を0
に設定すると、DBMS_SCHEDULER
およびDBMS_JOB
ジョブが実行されません。以前は、JOB_QUEUE_PROCESSES
を0
に設定すると、DBMS_JOB
ジョブは実行されませんでしたが、DBMS_SCHEDULER
ジョブは影響を受けることなく実行されました。
クラスタ内の単一のノードを指定して、DBMS_JOBのジョブを実行することにしている方にとっては大きな変更点かと思われます。11gR1以前では、こうしたDBMS_JOBのジョブを実行したくない全てのノードで、job_queue_processesをゼロに設定すればよかったのです(10.2.0.4では問題なく動作していました)が、11gR2からは、
すべての DBMS_SCHEDULER ジョブは1つのノード上でしか実行せず、ジョブを他ノードのキューに入れると、それらのジョブは実行しない、という振る舞いに変わりました。
これは、アップグレード後にプロセスを再コンパイルするためにutlrp.sqlが作成するパラレルスレーブを含みます。
解決策は、JOB_QUEUE_PROCESSESがクラスタ内のすべてのノード上で非ゼロ値に設定されていることを確認することです。これでスケジューラは動くようになり、ジョブが正しく実行されます。
この話の教訓は、アップグレードガイドの動作の変更のセクションを読んで確認することです!おそらくこれは、イソップの寓話の道徳ほどのものではありませんが、アップグレード時には覚えておいて損はしないでしょう。
原文はこちら。
http://blogs.oracle.com/UPGRADE/entry/dbms_scheduler_jobs_stuck_after
0 件のコメント:
コメントを投稿