使用pl/sql developer建的一个job,可以手动运行它,但是自动运行有问题,在其属性里可以看到:
------------------------------
LAST_DATE 2003-6-28 1:15:56
LAST_SEC 01:15:56
NEXT_DATE 2003-6-28 1:30:56
NEXT_SEC 01:30:56
TOTAL_TIME 839
BROKEN N
INTERVAL SYSDATE +1/96
FAILURES 0
WHAT P_CBFX_cbdata_auto('11');
NLS_ENV NLS_LANGUAGE='SIMPLIFIED CHINESE' NLS_TERRITORY='CHINA' NLS_CURRENCY='RMB' NLS_ISO_CURRENCY='CHINA' NLS_NUMERIC_CHARACTERS='.,' NLS_DATE_FORMAT='DD-MON-YY' NLS_DATE_LANGUAGE='SIMPLIFIED CHINESE' NLS_SORT='BINARY'
----------------------------
但是到点了却没有执行,以下是该job的SQLbegin
sys.dbms_job.submit(job => :job,
what => 'P_CBFX_cbdata_auto(''11'');',
next_date => to_date('28-06-2003 01:27:22', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE +1/96');
commit;
end;
/无法自动运行是否跟'P_CBFX_cbdata_auto()运行的时间有关?P_CBFX_cbdata_auto()执行了一次有839秒。麻烦高手给出一些可能会导致无法自动运行的原因。
另:如何让job整点运行,每隔15分钟一次。
------------------------------
LAST_DATE 2003-6-28 1:15:56
LAST_SEC 01:15:56
NEXT_DATE 2003-6-28 1:30:56
NEXT_SEC 01:30:56
TOTAL_TIME 839
BROKEN N
INTERVAL SYSDATE +1/96
FAILURES 0
WHAT P_CBFX_cbdata_auto('11');
NLS_ENV NLS_LANGUAGE='SIMPLIFIED CHINESE' NLS_TERRITORY='CHINA' NLS_CURRENCY='RMB' NLS_ISO_CURRENCY='CHINA' NLS_NUMERIC_CHARACTERS='.,' NLS_DATE_FORMAT='DD-MON-YY' NLS_DATE_LANGUAGE='SIMPLIFIED CHINESE' NLS_SORT='BINARY'
----------------------------
但是到点了却没有执行,以下是该job的SQLbegin
sys.dbms_job.submit(job => :job,
what => 'P_CBFX_cbdata_auto(''11'');',
next_date => to_date('28-06-2003 01:27:22', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE +1/96');
commit;
end;
/无法自动运行是否跟'P_CBFX_cbdata_auto()运行的时间有关?P_CBFX_cbdata_auto()执行了一次有839秒。麻烦高手给出一些可能会导致无法自动运行的原因。
另:如何让job整点运行,每隔15分钟一次。
解决方案 »
- 各位大哥,小弟有一个安装问题卡了两天了,那位能帮帮忙,急!
- 大家好,我想问大家一个ORACLE9i中merge into 的问题
- sql语句like'%0.%'查询不到数据的问题
- DATA格式问题
- 请教一个两结构基本相同的表的组合查询
- 请帮我看一个存储过程
- 为什么登录不了Console?(oracle8.1.6)
- 在ORACLE中查找XML数据(在线等待)
- sql*plus连接远程数据库,主机字符串怎么写?
- 今天操作ORACLE的时候遇到了ORA-01115这个错误
- 求救!!!怎样MOUNT DATABASE IN A COMPATIBLE MODE??
- 如何取消oracle与系统的认证关联??
主题: 如何写根据时间执行JOB?
假设有一个存储过程p_test,每20分钟执行一次
1、把init<sid>.ora中如下两个参数打开
JOB_QUEUE_INTERVAL=60
JOB_QUEUE_PROCESSES=4
然后重启一个库,如果原来已经打开了则不用这步了
2、示例,以下由sqlplus 来执行,具体参照一下相关的文档
VARIABLE jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno,
'p_test;'
SYSDATE,'SYSDATE + 1/72');
commit;
END;
是否是时间设定的问题。
1)检查一下INIT中文件的那两个参数。
2)检查一下当前ORACLE的DB时间,select to_char(sysdate,'yyyymmdd hh23:mi:ss') from dual;是否正常
3) 修改一下当前的执行时间点execute dbms_job.submit(:no1,'xxx',sysdate,'sysdate+1/96); commit;
SCHEMA_USER LGSC
LAST_DATE 2003-6-28 10:23:51
LAST_SEC 10:23:51
NEXT_DATE 2003-6-29 2:00:00
NEXT_SEC 02:00:00
TOTAL_TIME 3820
BROKEN N
INTERVAL TRUNC(SYSDATE+1)+1/12
FAILURES 0
WHAT P_ONE_DAY_RUN(SYSDATE);
NLS_ENV NLS_LANGUAGE='SIMPLIFIED CHINESE' NLS_TERRITORY='CHINA' NLS_CURRENCY='RMB' NLS_ISO_CURRENCY='CHINA' NLS_NUMERIC_CHARACTERS='.,' NLS_DATE_FORMAT='DD-MON-RR' NLS_DATE_LANGUAGE='SIMPLIFIED CHINESE' NLS_SORT='BINARY'
MISC_ENV 0102000200000000
---------------------------begin
sys.dbms_job.submit(job => :job,
what => 'P_ONE_DAY_RUN(SYSDATE);',
next_date => to_date('29-06-2003 02:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'TRUNC(SYSDATE+1)+1/12');
commit;
end;
/
.............................................
系统时间是正常的
select value from v$parameter where name='job_queue_processes';
2 最好用execute dbms_job.run(job);手动运行一下