単体テストでは、単体テストの実行元と同じRACノードでdbms_schedulerジョブを実行する必要があります。これは、管理されたデータベースを使用して、使用可能なインスタンスを制限するサービスを作成し、ジョブが使用するジョブクラスでそのサービスを使用することで実行できることを知っています。私の質問は、11.2でこれをポリシー管理を使用してどのように実行できるかです。
サーバーを1つだけ持つプールを作成し、データベースを複数のプールに割り当てることができますが、私が理解しているように、サーバーは単一のプールにしか割り当てることができません。したがって、単一のサーバーを使用するサービスを作成することはできませんが、そのサーバーを含む複数のサーバーで定義されたプールを使用する他のサービスは引き続き存在します。
サービスはSINGLETONまたはUNIFORMのいずれかとして作成できることも知っていますが、SIGNLETONは許可されたサーバーまたは優先サーバーさえ提供していないため、これがどのように役立つかわかりません。
確かに、これを可能にする何かが欠けています。
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_attribute
はNULL
になります。
これはあなたが求めたものではないことを理解していますが、プールをいじるより簡単です!