最近在工作中遇到了要在oracle里面创建一个定时job,从远程数据库里面定时把某张表里面的数据更新到本地服务器上某个表里,具体操作:
1、在自己数据库里面先创建一张表test
create table TEST
(
ID NUMBER(12),
C_DATE DATE
)
2、创建一个序列 sequence
create sequence G_SEQ
minvalue 1 --最小值是1
maxvalue 999999999999999999999999999
start with 1 --------从1开始
increment by 1 ---------每次加1
cache 20;
3、创建一个存储过程
create or replace procedure prc_g_test is
begin
insert into g_test values(g_seq.nextval,sysdate);
end prc_g_test;
如:insert into FINANCEINFO(FINANCEID,FINANCENAME,OTHERS) select g_seq.nextval,m.NAME,u.PWD from USERS u,MENU m where u.KEYID=m.ID
4、创建一个job
declare
job number;
begin
sys.dbms_job.submit(job,'prc_g_test;',sysdate,'sysdate+1/1440'); //每分钟执行一次
end;
4. 查看作业
select * from dba_jobs;
select job,THIS_DATE, NEXT_DATE, WHAT from dba_jobs;
5.启动定时任务
begin
dbms_job.run(25);
commit;
end;
6.停止定时任务
begin
dbms_job.remove(25); //25就是该job的唯一编号
end;
7.查看编号(jobno)
select job from dba_jobs;
8.定时器常用的时间格式:
每天运行一次 'SYSDATE + 1'
每小时运行一次 'SYSDATE + 1/24'
每10分钟运行一次 'SYSDATE + 10/(60*24)'
每30秒运行一次 'SYSDATE + 30/(60*24*60)'
每隔一星期运行一次 'SYSDATE + 7'