shell脚本 定时执行 存储过程

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;

你可能感兴趣的:(oracle,sql,应用服务器,unix,脚本)