【发布时间】:2021-05-18 12:49:30
【问题描述】:
创建一个资源,并将作业限制为 1 个
begin dbms_scheduler.create_resource(resource_name=>'SO_TEST_RESOURCE',units=>'1'); END;
虽然我可以创建作业、分配资源甚至优先级,但排队的后续作业(分配给相同资源和各种优先级)以随机顺序运行,而不是按 FIFO 顺序运行,也不是按优先级顺序运行。寻找一种方法来强制排队的下一个作业(分配给同一资源)成为运行下一个的作业。
DBMS_SCHEDULER.create_job (
job_name => 'SO_JOB1_TEST_RESOURCE',
job_type => 'PLSQL_BLOCK',
job_action => 'begin DBMS_SESSION.sleep(40); end;',
auto_drop => true,
start_date => systimestamp,
enabled => false);
DBMS_SCHEDULER.set_resource_constraint (
object_name => 'SO_JOB1_TEST_RESOURCE',
resource_name => 'SO_TEST_RESOURCE',
units => 1);
DBMS_SCHEDULER.SET_ATTRIBUTE(
NAME => 'SO_JOB1_TEST_RESOURCE',
ATTRIBUTE => 'job_priority',
VALUE =>1 );
DBMS_SCHEDULER.enable('SO_JOB1_TEST_RESOURCE');
.... adding more jobs 2, 3, 4 run in random order
【问题讨论】:
-
我假设这些工作不是幂等的?你能让它们幂等吗?
-
我必须查找该术语。不确定这个概念是否适用。我只是想形成一个单一的文件行并确保没有人削减。 :) 不过谢谢。
标签: oracle dbms-scheduler