关于PLSQL中JOB定时任务的问题

关于PLSQL中JOB定时任务的问题,第1张

给你一个我自己写的完整的(用PLSQL->文件->新建->测试窗口)

DECLARE

jobno BINARY_INTEGER;

instno number;

p_job_queue_processes VARCHAR2(512);

p_interval VARCHAR2(200);

p_next_date DATE;

s_next_date VARCHAR2(50);

begin

select instance_number into instno from v$instance;

-- jobno := 1512; 手工指定jobno

p_interval := 'trunc(sysdate,''HH24'')+(SELECT TRUNC(TO_CHAR(sysdate,''MI'')/30)/48 FROM DUAL)'; -- 间隔

p_next_date := TO_DATE('20080910 13:45:00','RRRRMMDD HH24:MI:SS');--trunc(sysdate,'HH24') + 1/4/24; -- 下次执行时间,date类型

s_next_date := to_char(p_next_date,'RRRR-MM-DD HH24:MI:SS'); -- 下次执行时间,字符串类型

/ -- 创建新job

dbms_jobsubmit(jobno

, 'statspacksnap(7);'

, p_next_date -- trunc(sysdate,'HH24') + 1/24

, p_interval -- 'trunc(sysdate,''HH24'')+(SELECT TRUNC(TO_CHAR(sysdate,''MI'')/30)/48 FROM DUAL)';

, TRUE, instno);

/

dbms_jobchange(jobno, '要执行的程序名称;' -- 比如statspacksnap; -- 收集统计信息

, p_next_date

, p_interval

);--, TRUE, instno);

-- dbms_jobremove(jobno); --jobno -- 移除job

-- commit;

end;

--- 完成后,可以用select from dba_jobs dj where djjobno=xxx 检查状态

当然是用schedule更好, schedule的功能强大的多, 你如果是第一次用这个, 建议装个pl/sql developer, 在这里面新建schedule, 会让你很快上手, 一开始就直接写语句, 容易让人发晕, 而且pl/sql developer里面新建, 修改, 删除等 *** 作都可以看到对应的语句, 这样学习起来效果很好

等基本玩熟之后, 再云找些理论知识来看, 这样就OK了

把job放到一个线程中,用一个成员变量控制线程的运行

public class MyThead implements Runnable{

private boolean flag = false;

public void run() {

//while(){ 反复执行的程序

if(flag) //flag是开关,更改flag状态控制线程是否运行

return;

// }

}

1 首先确定要停止的JOB号

SQL>select sid from dba_jobs_running;

2查找到正在运行的JOB的spid:

SQL>select aspid from v$process a ,v$session b where aaddr=bpaddr and bsid in (select sid from dba_jobs_running);

3 Broken确认的JOB

SQL> EXEC DBMS_JOBBROKEN(job#,TRUE);

注意:当执行完该命令选择的这个JOB还是在运行着的。

4 Kill 对应的job。

SQL>ALTER SYSTEM KILL SESSION 'sid,serial#';

dbms_jobsubmit(:job1,'MYPROC;',sysdate,'sysdate+5/1440');--每天1440分钟,即一分钟运行test过程一次,分子为5则为每分钟执行一次

具体可以参考我的百度云笔记:

>

以上就是关于关于PLSQL中JOB定时任务的问题全部的内容,包括:关于PLSQL中JOB定时任务的问题、oracle里的job和schedule有什么区别,优先考虑哪一个、用java代码 道怎样停止一个运行的job,我发现没法停掉它.只能把整个进程退出才行.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10217165.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存