分类: Oracle
2010-07-06 15:26:17
1、编写shell脚本,使用Unix下crontab在后台定时执行
第一步: shell脚本(如test.sh)
#!/bin/sh
#定义oracle环境变量
ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/app/oracle/product/9.2.0.1 //指oracle在服务器上安装目录
NLS_LANG=american_america.ZHS16GBK //NLS_LANG=_.
//LANGUAGE指定: -Oracle消息使用的语言 -日期中月份和日显示
//TERRITORY指定: -货币和数字格式 -地区和计算星期及日期的习惯
//CHARACTERSET指定: -控制客户端应用程序使用的字符集
//Unix使用: env|grep NLS_LANG (来查询NLS_LANG)
PATH=/usr/ccs/bin: //PATH的值是一系列目录(用":"分隔)
/u01/oracle/app/oracle/product/9.2.0.1/bin: //Unix使用: echo $PATH (来查询PATH路径下目录)
/usr/bin:/etc:/usr/sbin:
/usr/ucb:$HOME/plat/bin:/usr/bin/X11:/sbin:.
export ORACLE_BASE ORACLE_HOME NLS_LANG PATH
sqlplus -s username/password@数据库服务名 > test.log //调用数据库sqlplus
exec test(调用参数); //调用存储过程
exit;
第二步: 利用crontab执行定时调度
Unix下使用crontab –e编辑
30 13 * * * /home/test/test.sh //时间格式:分 小时 日 月 星期
2、添加job任务
使用pl/sql developer 工具的Jobs可以很容易添加定时执行的存储过程
begin
sys.dbms_job.change(job => 16, //job号
what => 'test;', //要执行的过程
next_date => to_date('16-11-2009 19:28:03', 'dd-mm-yyyy hh24:mi:ss'), //下次执行时间
interval => 'sysdate+1/24/12'); //每次间隔时间
commit;
end;