Oracle定时任务用来执行重复的计划包括存储过程、函数等,oracle10g以前用的是DBMS_JOB包,后面引入了DBMS_SCHEDULER包,首先要确定计划并发数不为0,默认1000,可用如下命令查看:
show parameter job_queue_processes;或者 select value from v$parameter where name='job_queue_processes';
一般设置为10;
alter system set job_queue_processes=10;
sql创建测试表:
create table job_test(outtime date,content varchar2(20));
sql创建一个判断数据库连接网络通道是否通畅的function:
CREATE OR REPLACE FUNCTION DbLinkIsOk(i_DblinkName VARCHAR2) RETURN BOOLEAN IS BEGIN EXECUTE IMMEDIATE 'SELECT * FROM DUAL@' || i_DblinkName; RETURN TRUE; EXCEPTION WHEN OTHERS THEN RETURN FALSE; END;
sql创建一个调用函数并写入结果到表中的存储过程:
CREATE OR REPLACE PROCEDURE "TESTDBLINK" AS BEGIN IF dblinkisok('TEST') THEN DBMS_OUTPUT.PUT_LINE('dblink连接正常'); insert into job_test(outtime,