有没有办法在RAC

时间:2018-12-21 21:10:07

标签: oracle scheduler oracle12c

我们需要在RAC环境中创建Oracle Scheduler-chain作业。有没有一种方法可以强制链中的所有步骤在一个实例上运行?

我们尝试将实例ID之类的属性设置为1,但这无济于事,因为链中的步骤1在实例1上运行,其余步骤在2上运行。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用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')