我正在尝试通过 dbms_scheduler 运行一个过程,但它刚刚被创建但没有运行。数据库版本使用 Oracle 11.2.x
程序
create or replace procedure count_comp
as
Total_count number;
begin
select count(*) into Total_count from user_tables;
dbms_output.put_line('Number '|| Total_count);
end;
Run Code Online (Sandbox Code Playgroud)
创建工作
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'My_Count_Job',
job_type => 'STORED_PROCEDURE',
job_action => 'count_comp',
start_date => '28-APR-08 07.00.00 PM Asia/Calcutta',
repeat_interval => 'FREQ=DAILY;INTERVAL=2', /* every other day */
auto_drop => FALSE,
enabled =>TRUE,
comments => 'My new job');
END;
/
Run Code Online (Sandbox Code Playgroud)
小智 6
一些可能的原因如下所述。job_queue_processes 可能太低要检查 Execute 下面的查询 select value from v$parameter where name='job_queue_processes';
然后检查正在运行的作业数
select count(*) from dba_scheduler_running_jobs;
select count(*) from dba_jobs_running;
Run Code Online (Sandbox Code Playgroud)
如果这是问题,您可以使用增加参数
alter system set job_queue_processes=1000;
Run Code Online (Sandbox Code Playgroud)
2) max_job_slave_processes 可能太低如果此参数不为NULL,则它限制了一次可以运行的dbms_scheduler 作业的数量。检查 w
select value from dba_scheduler_global_attribute
where attribute_name='MAX_JOB_SLAVE_PROCESSES';
Run Code Online (Sandbox Code Playgroud)
然后检查正在运行的作业数
select count(*) from dba_scheduler_running_jobs;
Run Code Online (Sandbox Code Playgroud)
如果这是问题,您可以增加数字或使用
exec dbms_scheduler.set_scheduler_attribute('max_job_slave_processes',null)
Run Code Online (Sandbox Code Playgroud)
3)会话可能太低
4) 检查调度器是否被禁用
select value from dba_scheduler_global_attribute where attribute_name='SCHEDULER_DISABLED'
Run Code Online (Sandbox Code Playgroud)
如果此查询返回 TRUE,则您可以使用 SQL> 解决此问题 exec dbms_scheduler.set_scheduler_attribute('scheduler_disabled','false');
| 归档时间: |
|
| 查看次数: |
3906 次 |
| 最近记录: |