客户希望能定期自动执行一些处理,大概是1分钟执行一次。我已经写好了一个存储过程,我想问问,怎么才能让这存储过程定期的自动执行呢?最好那位能提供一个脚本,只要客户自己执行一下,就可以完成定期自动执行的功能。补充一点,如果实现这样的功能,会对数据库的性能带来什么影响么?
解决方案 »
- DBMS_LOB.CREATETEMPORARY(strsql, TRUE); 什么意思?
- 大家好,请教个SQL的update问题,谢谢了。
- oracle连接问题
- 大数据量查询,3种sql语句,为什么执行结果跟书上以及网上说的不一样呢?
- SQL plus启动时遇到的问题
- 在 oracle 网站下载的 Oracle 10g 与购买正版的有什么区别呢?
- Oracle US7ASCII字符集在C#中对应的Encoding编码名称是什么?
- 这个select语句怎么写呢?大家帮我想一想
- 一条分页的SQL语句
- 如何得到某操作影响到的数据库记录行数?
- 如何覆盖oracle的oci.dll
- oracle用户登录问题
2 定时影响不大,主要看你的存储过程的影响
sys.dbms_job.submit(job => :job,
what => 'up_jobpptn;',
next_date => to_date('29-12-2007 17:33:14', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE+1/720');
commit;
end;
/720=(24*60)/2也就是说两分钟运行一次比如1/24就是说一小时运行一次。。
sys.dbms_scheduler.create_job(
job_name => '"SYS"."MY_JOB"',
job_type => 'EXECUTABLE',
job_action => '/home/oracle/my_exec.sh',
repeat_interval => 'FREQ=MINUTELY',
start_date => systimestamp at time zone '+8:00',
job_class => 'DEFAULT_JOB_CLASS',
auto_drop => FALSE,
enabled => FALSE);
sys.dbms_scheduler.set_attribute( name => '"SYS"."MY_JOB"', attribute => 'job_priority', value => 2);
sys.dbms_scheduler.enable( '"SYS"."MY_JOB"' );
END;这个是用户SYS的调度作业。
MY_JOB是调度作业名称,你自己定义的。
/home/oracle/my_exec.sh 是要运行的脚本。你也可以用OEM操作,也很简单:
数据库实例-》管理-》作业(数据库调度程序)-》创建
在命令类型选项里选择“可执行文件”,然后定义调度,保存就可以了。