ORACLE的job相关
一。查看数据库job
--查询全部job(需要管理员权限)
select * from dba_jobs;
--查询当前用户下的job
select * from user_jobs;
--按照job执行的内容关键字查询
select * from dba_jobs WHERE WHAT LIKE '%SP_CALL_PROCEDURE_INTER%'
--查看存储过程内容
select text from all_source@db207 where owner='ECC_CMP' and name=upper('SP_CALL_PROCEDURE_INTER');
二。创建、运行、中断、删除job
--创建job
declare
job1 number;
begin
dbms_job.submit(job1, 'SP_CALL_PROCEDURE_INTER_TEST;',sysdate, 'SYSDATE+5/(24*60)');
end;
注意:存储过程名中没有用户名表示执行当前用户下的存储过程,否则需要有执行相关存储过程的权限(赋予权限)
--运行job
begin dbms_job.run(1936); end;
--中断job
begin DBMS_JOB.BROKEN(1936, TRUE); end;
begin DBMS_JOB.BROKEN(1936, FALSE); end;
--删除job
begin dbms_job.remove(1936); end;
三。job调用其他用户的存储过程
--A用户的job想调用B用户下的存储过程P,B账户下授权P权限给B
grant all on P to A
备注:这样P中调用其他存储过程或B下的表都会有权限,相当于级联向下赋予存储过程P相关联需要的所有权限。
--A用户创建的job中调用B的存储过程需要加上用户名
declare
job1 number;
begin
dbms_job.submit(job1, 'B.P;',sysdate, 'SYSDATE+5/(24*60)');
end;