web-dev-qa-db-ja.com

ポリシー管理のRACでDBMS_Schedulerジョブのサーバーを指定する

単体テストでは、単体テストの実行元と同じRACノードでdbms_schedulerジョブを実行する必要があります。これは、管理されたデータベースを使用して、使用可能なインスタンスを制限するサービスを作成し、ジョブが使用するジョブクラスでそのサービスを使用することで実行できることを知っています。私の質問は、11.2でこれをポリシー管理を使用してどのように実行できるかです。

サーバーを1つだけ持つプールを作成し、データベースを複数のプールに割り当てることができますが、私が理解しているように、サーバーは単一のプールにしか割り当てることができません。したがって、単一のサーバーを使用するサービスを作成することはできませんが、そのサーバーを含む複数のサーバーで定義されたプールを使用する他のサービスは引き続き存在します。

サービスはSINGLETONまたはUNIFORMのいずれかとして作成できることも知っていますが、SIGNLETONは許可されたサーバーまたは優先サーバーさえ提供していないため、これがどのように役立つかわかりません。

確かに、これを可能にする何かが欠けています。

4
Leigh Riffel

dbms_scheduler.set_attributeはあなたが探しているものです-特定のノードでジョブを強制的に実行します(instance_idで指定):

begin
dbms_scheduler.create_job (
job_name=>'PHIL',
job_type=>'plsql_block',
job_action=>'NULL;',
repeat_interval=>'freq=minutely;interval=2');

end;
/

begin
dbms_scheduler.set_attribute('PHIL','instance_id',1);
end;
/

dba_scheduler_jobs.instance_idで明示的に設定しない限り、set_attributeNULLになります。

これはあなたが求めたものではないことを理解していますが、プールをいじるより簡単です!

4
Philᵀᴹ