【问题标题】:Script to disable all jobs in Oracle (DBMS_JOB package)?禁用 Oracle 中所有作业的脚本(DBMS_JOB 包)?
【发布时间】:2011-07-31 23:01:08
【问题描述】:

我正在寻找一个禁用所有作业的脚本。现在我在 Toad 中突出显示它们,单击脱机按钮,然后提交更改。在 PL/SQL 中必须有办法做到这一点。

【问题讨论】:

    标签: oracle plsql oracle10g dbms-job


    【解决方案1】:

    如果要阻止所有作业运行,可以更改初始化参数JOB_QUEUE_PROCESSES。如果将其设置为 0,Oracle 将不会运行使用 DBMS_JOB 安排的任何作业。

    您还可以将作业标记为中断

    BEGIN
      FOR x IN (SELECT * FROM user_jobs)
      LOOP
        dbms_job.broken( x.job, true );
      END LOOP;
    END;
    

    这将导致它们无法运行(但将允许在该点之后创建的任何作业正常运行)。解散工作

    BEGIN
      FOR x IN (SELECT * FROM user_jobs)
      LOOP
        dbms_job.broken( x.job, false, SYSDATE + interval '1' minute);
      END LOOP;
    END;
    

    将所有作业设置为在 1 分钟内运行。

    【讨论】:

    • 只是一个优点,使用 dbms_job 仅限于自己用户的作业...如果您想禁用所有用户的作业,您必须以管理员身份登录并使用dbms_ijob
    • 请注意,dbms_job 现已过时,dbms_scheduler 是它的替代品。
    • 有没有办法保留原来的时间表,而不是像雪崩一样开始所有工作?
    【解决方案2】:

    == 对于 dbms_job 作业:

    alter system set job_queue_processes=0 scope=both;
    

    对于某些维护可能会更好/您通常可能希望一些工作离线 并且不想在您完成维护后将它们上线。

    == 对于 dbms_scheduler 作业:

    exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','TRUE');
    

    维护完成后:

    exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','FALSE');
    

    【讨论】:

      【解决方案3】:

      请运行以下查询。

      set head off
      spool job_disable.sql
      select 'execute dbms_scheduler.disable('||''''||owner||'.'||job_name||''''||');' from dba_scheduler_jobs where enabled='TRUE';
      spool off;
      @job_disable.sql
      

      这将禁用所有已启用的 dbms 作业。

      您也可以修改查询以启用所有禁用的。

      【讨论】:

        【解决方案4】:
        DECLARE
            CURSOR selection
            IS SELECT job_name FROM dba_scheduler_jobs WHERE owner = '[username]';
            --or make your own selection here
            
        BEGIN
            FOR record IN selection
            LOOP
                dbms_scheduler.disable(record.job_name); 
            END LOOP;
        END;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 2022-11-23
          • 2014-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多