Oracle查询定时器、触发器相关操作
--查看定时任务
字段含义:--查看定时任务 total_time 是次数 broken N表示未中断
what执行任务(只能是存储过程 ,存储过程在Oracle中的Procedures下) interval 间隔
select * from user_jobs
--查看正在执行的定时任务
select * from dba_jobs_running;
--声明变量
variable job2017 number;
begin
dbms_job.submit(:job2017,'PKG_NRMS_OPERATION.CLEAN_DIRTY_DATA;',sysdate,'TRUNC(sysdate)+1+1/(24)');
end;
--启用作业
begin
dbms_job.run(:job2017);
end;
--删除作业
begin
dbms_job.remove(103);
end;
--停止一个已启动的定时任务
begin
dbms_job.broken(64, true, sysdate);
end;
--查看进程数 命令语句 并不是sql
show parameter job_queue_processes;
--停止正在运行的job
SELECT SID,SERIAL# FROM V$SESSION WHERE SID='&SID';
ALTER SYSTEM KILL SESSION '&SID,&SERIAL';
--用于修改interval参数值
dbms_job.interval(103, 'TRUNC(SYSDATE + 1)'); --修改为每隔一天运行一次
--用于修改next_date参数值
dbms_job.next_date(jobno, trunc(sysdate + 1)); --修改最近一次待执行的时间至明天凌晨
--Packages里只有存储过程和函数,(视图相当于虚拟表) package bodies 包体相当于包的内容
--触发器
CREATE OR REPLACE TRIGGER change_task
BEFORE INSERT OR UPDATE OR DELETE ON tsm_check_task FOR EACH ROW
declare
restag varchar2(128);
BEGIN
IF INSERTing OR updating THEN
SELECT fldrestag INTO restag FROM TSM_CHECK_RULE WHERE fldid = :NEW.FLDCHECKRULE;
:new.fldrestag := restag;
END IF;
EXCEPTION WHEN OTHERS THEN NULL;
END;
大白话:
当tsm_check_task进行插入、修改、删除时
TSM_CHECK_RULE 里fldrestag 字段进行同步替换