Oracle 定时任务只执行了一次

时间:2022-08-24 23:22:43
创建了一个定时任务,想让它按时执行,但是只执行了一次就不动了。麻烦大家给看看怎么回事

declare
  job1 number;
begin
    dbms_job.submit(job1, 'pro_mzj_data1;', sysdate, 'sysdate+10/86400');
end;

begin
dbms_job.run(185);
end;



Oracle 定时任务只执行了一次

29 个解决方案

#1


begin
  sys.dbms_job.submit(job => :job,
                      what => 'insert into test
select 1,sysdate from dual;',
                      next_date => to_date('07-12-2016 10:27:07', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+5/24/60');
  commit;
end;
/


SQL> select id,to_char(dd,'yyyy-mm-dd hh24:mi:ss') from test;

        ID TO_CHAR(DD,'YYYY-MM
---------- -------------------
         1 2016-12-07 10:22:07
         1 2016-12-07 10:27:08

#2


引用 1 楼 sych888 的回复:
begin
  sys.dbms_job.submit(job => :job,
                      what => 'insert into test
select 1,sysdate from dual;',
                      next_date => to_date('07-12-2016 10:27:07', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+5/24/60');
  commit;
end;
/


SQL> select id,to_char(dd,'yyyy-mm-dd hh24:mi:ss') from test;

        ID TO_CHAR(DD,'YYYY-MM
---------- -------------------
         1 2016-12-07 10:22:07
         1 2016-12-07 10:27:08


你这个是用pl/sql软件 新建的job吗?  我添加的时候报错,不知道哪儿不对。
Oracle 定时任务只执行了一次

#3


引用 2 楼 h670816026 的回复:
Quote: 引用 1 楼 sych888 的回复:

begin
  sys.dbms_job.submit(job => :job,
                      what => 'insert into test
select 1,sysdate from dual;',
                      next_date => to_date('07-12-2016 10:27:07', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+5/24/60');
  commit;
end;



SQL> select id,to_char(dd,'yyyy-mm-dd hh24:mi:ss') from test;

        ID TO_CHAR(DD,'YYYY-MM
---------- -------------------
         1 2016-12-07 10:22:07
         1 2016-12-07 10:27:08


你这个是用pl/sql软件 新建的job吗?  我添加的时候报错,不知道哪儿不对。
Oracle 定时任务只执行了一次


引用 2 楼 h670816026 的回复:
Quote: 引用 1 楼 sych888 的回复:

begin
  sys.dbms_job.submit(job => :job,
                      what => 'insert into test
select 1,sysdate from dual;',
                      next_date => to_date('07-12-2016 10:27:07', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+5/24/60');
  commit;
end;
/


SQL> select id,to_char(dd,'yyyy-mm-dd hh24:mi:ss') from test;

        ID TO_CHAR(DD,'YYYY-MM
---------- -------------------
         1 2016-12-07 10:22:07
         1 2016-12-07 10:27:08


你这个是用pl/sql软件 新建的job吗?  我添加的时候报错,不知道哪儿不对。
Oracle 定时任务只执行了一次


存储过程名后加上 分号  ;

#4


加了分号可以应用了。但是这次更惨,查询user_jobs 表  last_date字段是空的,一次都没有执行,这怎么办? 
Oracle 定时任务只执行了一次


你能给我一个你的截图吗?类似这个的截图
Oracle 定时任务只执行了一次

#5


先手动执行一下,右键 RUN
然后看看

#6


我RUN了这个job,然后多次查询user_jobs表,它的NEXT_DATE的值是不变的,这是不是意味着只执行了一次? 

#7


我写了一个类似你那样的定时任务,每一分钟,向一个表插入一条时间。还是只执行了一次。是不是权限之类的问题? 就是当前我这个登录的用户没有权限创建或者启动这个定时任务?

#8


引用 7 楼 h670816026 的回复:
我写了一个类似你那样的定时任务,每一分钟,向一个表插入一条时间。还是只执行了一次。是不是权限之类的问题? 就是当前我这个登录的用户没有权限创建或者启动这个定时任务?

你先按照这个设置看看能否自动执行
interval => 'sysdate+5/24/60'

#9


我右击运行的时候就会出一个提示,“任务1%正在运行”,这是什么鬼。。。。。。。。。

#10


引用 9 楼 h670816026 的回复:
我右击运行的时候就会出一个提示,“任务1%正在运行”,这是什么鬼。。。。。。。。。

提示不是很明显吗?
正在运行
可能你的存储过程运行时间比较久
你可以用个简单的语句来测试

#11


我有个问题,我select user_job那个表,查询到的job的信息,就是当前正在运行的定时任务对吧? 那我每查询一次,如果我有一个定时任务是每一秒执行一次,那它的next_date应该是不断变化的对吧?  现在的问题是这个字段的值是不变的,这是不是意味着定时任务没有重复执行? 

#12


引用 11 楼 h670816026 的回复:
我有个问题,我select user_job那个表,查询到的job的信息,就是当前正在运行的定时任务对吧? 那我每查询一次,如果我有一个定时任务是每一秒执行一次,那它的next_date应该是不断变化的对吧?  现在的问题是这个字段的值是不变的,这是不是意味着定时任务没有重复执行? 

user_jobs 是该用户下的JOB
DBA_JOBS_RUNNING 是正在运行的JOB

#13


那,这个next_date一直不变,是不是说job没有重复执行?

#14


引用 13 楼 h670816026 的回复:
那,这个next_date一直不变,是不是说job没有重复执行?

你把JOB内容贴出来看看

#15


恩,明天给你贴出来

#16


这三都是只执行了一次就不动了。 一次截图放不下,截了两张
Oracle 定时任务只执行了一次

Oracle 定时任务只执行了一次

#17


引用 16 楼 h670816026 的回复:
这三都是只执行了一次就不动了。 一次截图放不下,截了两张
Oracle 定时任务只执行了一次

Oracle 定时任务只执行了一次


你的服务器日期是不是有问题
看看sysdate

#18


这样算是有问题还是没问题?

Oracle 定时任务只执行了一次

#19


引用 18 楼 h670816026 的回复:
这样算是有问题还是没问题?

Oracle 定时任务只执行了一次



没问题。看看show parameter job_queue_processes
看看值是多少0的话是不会自动执行的,修改
alert system set job queue_processes=100;

#20


引用 19 楼 sxq129601 的回复:
Quote: 引用 18 楼 h670816026 的回复:

这样算是有问题还是没问题?

Oracle 定时任务只执行了一次



没问题。看看show parameter job_queue_processes
看看值是多少0的话是不会自动执行的,修改
alert system set job queue_processes=100;


你说的这个show parameter 是不是在dos窗口执行的?   受条件限制,我只能用pl/sql软件操作数据库。 
能告诉我怎么查吗?

#21


引用 20 楼 h670816026 的回复:
Quote: 引用 19 楼 sxq129601 的回复:

Quote: 引用 18 楼 h670816026 的回复:

这样算是有问题还是没问题?

Oracle 定时任务只执行了一次



没问题。看看show parameter job_queue_processes
看看值是多少0的话是不会自动执行的,修改
alert system set job queue_processes=100;


你说的这个show parameter 是不是在dos窗口执行的?   受条件限制,我只能用pl/sql软件操作数据库。 
能告诉我怎么查吗?


命令窗口,不是SQL窗口

#22


引用 21 楼 sxq129601 的回复:
Quote: 引用 20 楼 h670816026 的回复:

Quote: 引用 19 楼 sxq129601 的回复:

Quote: 引用 18 楼 h670816026 的回复:

这样算是有问题还是没问题?

Oracle 定时任务只执行了一次



没问题。看看show parameter job_queue_processes
看看值是多少0的话是不会自动执行的,修改
alert system set job queue_processes=100;


你说的这个show parameter 是不是在dos窗口执行的?   受条件限制,我只能用pl/sql软件操作数据库。 
能告诉我怎么查吗?


命令窗口,不是SQL窗口[/quot

我只能在pl/sql 软件中操作,是不是这样就行了?

#23


说错了。 我只有一个pl/sql软件连接数据库,是不是这样就没办法查看那个 parameter job_queue_processes 了?

#24


不好意思。看错了。  我查了一下。 下面是截图
Oracle 定时任务只执行了一次

#25


引用 24 楼 h670816026 的回复:
不好意思。看错了。  我查了一下。 下面是截图
Oracle 定时任务只执行了一次


。。。  job_queue_processes  不是job queue_processes

#26


厕所蹲坑中,待会儿回去研究,谢谢大神的支援! Oracle 定时任务只执行了一次

#27


老大。我发现哪儿不对了。那个是alter 不是 alert    你手一打滑,我可费了劲了。 Oracle 定时任务只执行了一次

#28


不见水果版主, Oracle 定时任务只执行了一次

#29


水果版主在之前的帖子里回复过了。 Oracle 定时任务只执行了一次

#1


begin
  sys.dbms_job.submit(job => :job,
                      what => 'insert into test
select 1,sysdate from dual;',
                      next_date => to_date('07-12-2016 10:27:07', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+5/24/60');
  commit;
end;
/


SQL> select id,to_char(dd,'yyyy-mm-dd hh24:mi:ss') from test;

        ID TO_CHAR(DD,'YYYY-MM
---------- -------------------
         1 2016-12-07 10:22:07
         1 2016-12-07 10:27:08

#2


引用 1 楼 sych888 的回复:
begin
  sys.dbms_job.submit(job => :job,
                      what => 'insert into test
select 1,sysdate from dual;',
                      next_date => to_date('07-12-2016 10:27:07', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+5/24/60');
  commit;
end;
/


SQL> select id,to_char(dd,'yyyy-mm-dd hh24:mi:ss') from test;

        ID TO_CHAR(DD,'YYYY-MM
---------- -------------------
         1 2016-12-07 10:22:07
         1 2016-12-07 10:27:08


你这个是用pl/sql软件 新建的job吗?  我添加的时候报错,不知道哪儿不对。
Oracle 定时任务只执行了一次

#3


引用 2 楼 h670816026 的回复:
Quote: 引用 1 楼 sych888 的回复:

begin
  sys.dbms_job.submit(job => :job,
                      what => 'insert into test
select 1,sysdate from dual;',
                      next_date => to_date('07-12-2016 10:27:07', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+5/24/60');
  commit;
end;



SQL> select id,to_char(dd,'yyyy-mm-dd hh24:mi:ss') from test;

        ID TO_CHAR(DD,'YYYY-MM
---------- -------------------
         1 2016-12-07 10:22:07
         1 2016-12-07 10:27:08


你这个是用pl/sql软件 新建的job吗?  我添加的时候报错,不知道哪儿不对。
Oracle 定时任务只执行了一次


引用 2 楼 h670816026 的回复:
Quote: 引用 1 楼 sych888 的回复:

begin
  sys.dbms_job.submit(job => :job,
                      what => 'insert into test
select 1,sysdate from dual;',
                      next_date => to_date('07-12-2016 10:27:07', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+5/24/60');
  commit;
end;
/


SQL> select id,to_char(dd,'yyyy-mm-dd hh24:mi:ss') from test;

        ID TO_CHAR(DD,'YYYY-MM
---------- -------------------
         1 2016-12-07 10:22:07
         1 2016-12-07 10:27:08


你这个是用pl/sql软件 新建的job吗?  我添加的时候报错,不知道哪儿不对。
Oracle 定时任务只执行了一次


存储过程名后加上 分号  ;

#4


加了分号可以应用了。但是这次更惨,查询user_jobs 表  last_date字段是空的,一次都没有执行,这怎么办? 
Oracle 定时任务只执行了一次


你能给我一个你的截图吗?类似这个的截图
Oracle 定时任务只执行了一次

#5


先手动执行一下,右键 RUN
然后看看

#6


我RUN了这个job,然后多次查询user_jobs表,它的NEXT_DATE的值是不变的,这是不是意味着只执行了一次? 

#7


我写了一个类似你那样的定时任务,每一分钟,向一个表插入一条时间。还是只执行了一次。是不是权限之类的问题? 就是当前我这个登录的用户没有权限创建或者启动这个定时任务?

#8


引用 7 楼 h670816026 的回复:
我写了一个类似你那样的定时任务,每一分钟,向一个表插入一条时间。还是只执行了一次。是不是权限之类的问题? 就是当前我这个登录的用户没有权限创建或者启动这个定时任务?

你先按照这个设置看看能否自动执行
interval => 'sysdate+5/24/60'

#9


我右击运行的时候就会出一个提示,“任务1%正在运行”,这是什么鬼。。。。。。。。。

#10


引用 9 楼 h670816026 的回复:
我右击运行的时候就会出一个提示,“任务1%正在运行”,这是什么鬼。。。。。。。。。

提示不是很明显吗?
正在运行
可能你的存储过程运行时间比较久
你可以用个简单的语句来测试

#11


我有个问题,我select user_job那个表,查询到的job的信息,就是当前正在运行的定时任务对吧? 那我每查询一次,如果我有一个定时任务是每一秒执行一次,那它的next_date应该是不断变化的对吧?  现在的问题是这个字段的值是不变的,这是不是意味着定时任务没有重复执行? 

#12


引用 11 楼 h670816026 的回复:
我有个问题,我select user_job那个表,查询到的job的信息,就是当前正在运行的定时任务对吧? 那我每查询一次,如果我有一个定时任务是每一秒执行一次,那它的next_date应该是不断变化的对吧?  现在的问题是这个字段的值是不变的,这是不是意味着定时任务没有重复执行? 

user_jobs 是该用户下的JOB
DBA_JOBS_RUNNING 是正在运行的JOB

#13


那,这个next_date一直不变,是不是说job没有重复执行?

#14


引用 13 楼 h670816026 的回复:
那,这个next_date一直不变,是不是说job没有重复执行?

你把JOB内容贴出来看看

#15


恩,明天给你贴出来

#16


这三都是只执行了一次就不动了。 一次截图放不下,截了两张
Oracle 定时任务只执行了一次

Oracle 定时任务只执行了一次

#17


引用 16 楼 h670816026 的回复:
这三都是只执行了一次就不动了。 一次截图放不下,截了两张
Oracle 定时任务只执行了一次

Oracle 定时任务只执行了一次


你的服务器日期是不是有问题
看看sysdate

#18


这样算是有问题还是没问题?

Oracle 定时任务只执行了一次

#19


引用 18 楼 h670816026 的回复:
这样算是有问题还是没问题?

Oracle 定时任务只执行了一次



没问题。看看show parameter job_queue_processes
看看值是多少0的话是不会自动执行的,修改
alert system set job queue_processes=100;

#20


引用 19 楼 sxq129601 的回复:
Quote: 引用 18 楼 h670816026 的回复:

这样算是有问题还是没问题?

Oracle 定时任务只执行了一次



没问题。看看show parameter job_queue_processes
看看值是多少0的话是不会自动执行的,修改
alert system set job queue_processes=100;


你说的这个show parameter 是不是在dos窗口执行的?   受条件限制,我只能用pl/sql软件操作数据库。 
能告诉我怎么查吗?

#21


引用 20 楼 h670816026 的回复:
Quote: 引用 19 楼 sxq129601 的回复:

Quote: 引用 18 楼 h670816026 的回复:

这样算是有问题还是没问题?

Oracle 定时任务只执行了一次



没问题。看看show parameter job_queue_processes
看看值是多少0的话是不会自动执行的,修改
alert system set job queue_processes=100;


你说的这个show parameter 是不是在dos窗口执行的?   受条件限制,我只能用pl/sql软件操作数据库。 
能告诉我怎么查吗?


命令窗口,不是SQL窗口

#22


引用 21 楼 sxq129601 的回复:
Quote: 引用 20 楼 h670816026 的回复:

Quote: 引用 19 楼 sxq129601 的回复:

Quote: 引用 18 楼 h670816026 的回复:

这样算是有问题还是没问题?

Oracle 定时任务只执行了一次



没问题。看看show parameter job_queue_processes
看看值是多少0的话是不会自动执行的,修改
alert system set job queue_processes=100;


你说的这个show parameter 是不是在dos窗口执行的?   受条件限制,我只能用pl/sql软件操作数据库。 
能告诉我怎么查吗?


命令窗口,不是SQL窗口[/quot

我只能在pl/sql 软件中操作,是不是这样就行了?

#23


说错了。 我只有一个pl/sql软件连接数据库,是不是这样就没办法查看那个 parameter job_queue_processes 了?

#24


不好意思。看错了。  我查了一下。 下面是截图
Oracle 定时任务只执行了一次

#25


引用 24 楼 h670816026 的回复:
不好意思。看错了。  我查了一下。 下面是截图
Oracle 定时任务只执行了一次


。。。  job_queue_processes  不是job queue_processes

#26


厕所蹲坑中,待会儿回去研究,谢谢大神的支援! Oracle 定时任务只执行了一次

#27


老大。我发现哪儿不对了。那个是alter 不是 alert    你手一打滑,我可费了劲了。 Oracle 定时任务只执行了一次

#28


不见水果版主, Oracle 定时任务只执行了一次

#29


水果版主在之前的帖子里回复过了。 Oracle 定时任务只执行了一次