前一段时间,为了早大批量的测试数据,就利用jop每天调用存储过程来实现,主要是对SqlServer和oracle二个数据库的job进行一个简单的总结:
一、SQLSERVER
1、使用“SQL Server Management Studio”工具登录数据库;
2、鼠标右击“SQL Server 代理”,选择“启动(S)”;
3、在“SQL Server 代理”列表下,右击”作业”-->“新建作业…”;
i)在“常规”选项卡中的“名称”输入框输入计划的名称,如“My Job”;
ii) 在“步骤”选项卡中,点击“新建”按钮,打开新建作业步骤对话框:
A)在“步骤名称”输入框输入步骤名称,如“步骤1”,
B)在“类型”一栏默认:T-SQL脚本,也可以选择SSIS包等;
C)在“数据库”一栏选择数据库;
D)在“命令”的右边空白编辑栏输入要执行的SQL代码,如:
EXEC pro_Name,也可以点击命令下面的“打开”,添加.sql脚本;
E)点击“分析”按钮,确保脚本语法正确;
F)点击“确定”按钮;
iii) 在“计划”选项卡中,点击“新建”按钮,打开新建作业计划对话框:
A)在“名称”输入框中输入计划名称,如“计划1”;
B)在“计划类型”一栏默认:重复执行,也可以选择执行一次等;
C)在“频率”-->“执行”处选择“每天”、 “每周”或“每月”;
D)在“每天频率”-->“执行间隔”输入间隔多久执行一次;
E)在“持续时间”-->“开始日期”和“结束日期”输入开始或结束的日期,也可以选择“无结束日期”;
F)点击“确定”按钮;
PS:将“SQL Server 代理”服务设置为自动启动。启动代理服务的方法:开始-->运行-->输入services.msc-->找到“SQL Server 代理”的服务并双击-->“启动类型”选择“自动”-->“确定”。
(可以通过找到之前的新建的存储过程,右击执行,获取对应的SQL。文中给出的方法不能带参数
)
二、ORACLE
利用SSMS客户端:
第一步:通过PL/SQL登录数据库;
第二步:在DBMS_Jobs右键并点击“新建…”;
第三步:在“what 值”框中输入:Pro_InsertData;(存储过程并加“;”);
第四步:在“下一个日期”框中输入:2014/11/18 12:00:00(日期,注意格式);
第五步:在“间隔”框中输入:sysdate+1/24(每小时执行一次);
(sysdate+1/24(每小时执行一次)
sysdate+1/24/60(每分钟执行一次)
sysdate+5/24/60(每5分钟执行一次)
sysdate+1/24/60/60(每秒执行一次))
第六步:点击“应用”按钮,开始执行计划;
(假如不执行的情况下,重启job进程。
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0
等待5-10s
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 10)
第七步:选择“已断掉”勾选框,并点击“应用”按钮,停止执行计划;
第八步:在新建的计划上邮件并点击“删除”选项,删除该执行计划;
利用脚本的方式也可以(我比较喜欢脚本的方式,比较灵活)
Declare
i Integer;
Begin
dbms_job.submit(i,'Pro_InsertData;',Sysdate,'sysdate+1/24');
commit;
end;
利用脚本,可以灵活的控制JOB的一些执行情况:
Declare
job_num Integer;
Begin
-- 查找计划号
Select t.JOB Into job_num From User_Jobs t where rownum=1 order by t.JOB;
-- 运行制定的执行计划
dbms_job.run(job_num);
-- 停止计划,不在执行
--dbms_job.broken(job_num,True);
-- 停止计划,并在两分钟后继续执行
--dbms_job.broken(job_num,True,Sysdate+(2/24/60));
-- 移除计划
-- dbms_job.remove(job_num);
end;