有没有办法在 RAC 中强制执行 oracle 调度程序链作业上的实例

is there a way to force the instance on oracle scheduler chain job in RAC

我们需要在 RAC 环境中创建 Oracle 调度程序链作业。有没有办法强制链中的所有步骤在一个实例中为 运行?

我们尝试将实例 ID 等属性设置为 1,但这对实例 1 上的链 运行 中的第 1 步和实例 2 上的其余步骤 运行 没有帮助。

提前致谢。

您可以使用 v$Instance 来识别您当前的实例

DECLARE
  pCurInstance varchar2(20);
BEGIN
  SELECT INSTANCE_NAME into pCurInstance FROM V$INSTANCE;
  IF (pCurInstance != "myInstance") THEN
    RETURN;
  END;

  --EXECUTE YOUR SCRIPT / FUNCTION / PROCEDURE HERE
END;

或者,更优雅的方式

svrctl add service -d <db_unique_name> -s AQ_01 -r <preferredinstance> -a <availableinstances>
dbms_scheduler.create_job_class(job_class_name=> 'AQ01', service=> 'AQ_01');
dbms_scheduler_create_job (job_name => v_jobname. . .
   job_class => 'AQ_01')