Oracle 11g的任务调度优化实践(oracle11g 调度)

Oracle 11g的任务调度优化实践

Oracle 11g的任务调度功能允许用户安排和管理周期性和非周期性的任务。这对于企业应用程序非常有用,因为它可以使任务的执行更加自动化和稳定。但是,当任务量变得很大时,任务调度器可能会变得不稳定,导致任务无法按时执行。因此,优化任务调度是有效利用Oracle 11g的关键。

以下是Oracle 11g的任务调度优化实践:

1. 使用DBMS_SCHEDULER GATHER_STATISTICS过程

GATHER_STATISTICS过程有助于收集与任务有关的统计信息,如任务的持续时间,开始时间和完成时间等。这些统计信息可用于调优任务调度器。使用以下SQL命令调用GATHER_STATISTICS过程:

BEGIN

DBMS_SCHEDULER.GATHER_STATISTICS;

END;

2. 设置资源限制

当任务调度器变得不稳定时,必须检查资源限制。资源限制为所有Oracle 11g数据库中可用的资源设置了最大值。在OPS$SQLDBA模式下运行以下SQL命令以设置资源限制:

EXEC DBMS_RESOURCE_MANAGER.CREATE_PLAN(‘SCHEDULER_PLAN’,’SCHEDULER_PLAN’);

EXEC DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(‘SCHEDULER_PLAN’,’SCHEDULER_DIRECTIVE’,ALLOCATE_PERCENT=>10);

EXEC DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(‘SCHEDULER_PLAN’,’SCHEDULER_DIRECTIVE’,’SCHEDULER_GROUP’);

3. 调整并发性

并发性是指在任何给定时间执行多少任务。调整并发性可以通过以下SQL命令实现:

ALTER SYSTEM SET PARALLEL_EXECUTION_MESSAGE_SIZE=16384;

ALTER SYSTEM SET PARALLEL_EXECUTION_SERVERS=10;

ALTER SYSTEM SET PARALLEL_DEGREE_POLICY=AUTO;

4. 基于事件调度任务

在Oracle 11g中,用户可以基于特定事件自动调度任务。例如,在启动或关闭过程中,用户可以自动运行任务。可以使用以下SQL命令创建事件:

BEGIN

DBMS_SCHEDULER.CREATE_EVENT(‘STARTUP_EVENT’,

EVENT_QUEUE=>’STARTUP_QUEUE’,

EVENT_TYPE=>’SYS.STARTUP’,

ENABLE_DBMS_SCHEDULER_AGENT=>TRUE);

END;

5. 启用并配置JOB_CHNS

JOB_CHNS是由多个任务组成的工作流程。在Oracle 11g中,可以使用JOB_CHNS来避免任务之间的循环依赖。要设置JOB_CHNS,请使用以下SQL命令:

BEGIN

DBMS_SCHEDULER.CREATE_CHN(‘SCHEDULER_CHN’,’SCHEDULER_CHN_RULES’);

DBMS_SCHEDULER.DEFINE_CHN_STEP(‘SCHEDULER_CHN’, ‘SCHEDULER_STEP_ONE’, ‘SCHEDULER_STEP_TWO’);

DBMS_SCHEDULER.DEFINE_CHN_RULE(‘SCHEDULER_CHN_RULES’,’TRUE’, ‘SCHEDULER_STEP_ONE’, ‘SCHEDULER_STEP_TWO’);

END;

综上所述,防止任务调度器变得不稳定的最好方法是优化任务调度功能。上述几种方案是Oracle 11g任务调度优化实践的基础,用户可以根据具体情况进行调整。


数据运维技术 » Oracle 11g的任务调度优化实践(oracle11g 调度)