分享oracle之crontab
之前通过数据库job 有一定时任务,中间数据库宕机后,该任务就不再执行,后来尝试通过crontab来定时执行该任务调度。
    通过telnet连接至数据库,执行export,查看系统环境,编写shell脚本test.sh,内容如下:
    #!/bin/sh
    ORACLE_BASE=/opt/oracle/products
    ORACLE_HOME=/opt/oracle/products/11.2.0.1/db
    NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/home/oracle/bin:/usr/bin/X11:/sbin:.:/home/oracle/bin:
/opt/oracle/products/11.2.0.1/db/bin
    export ORACLE_BASE  ORACLE_HOME NLS_LANG PATH
    sqlplus -s 用户名/密码@服务名<< EOF
     set serveroutput on;
     exec package.存储过程名();
     set serveroutput off;
    exit;
    EOF
   编写cron脚本,test.cron,内容如下:
   30 10 * * * /opt/oracle/test.sh    
   执行命令:crontab test.cron  
   执行命令:crontab -l 可以查看到刚设置的任务执行信息:
   30 10 * * * /opt/oracle/test.sh      
------解决方案--------------------建议在sql语句中加入log信息。
这样如果出现问题的话,也可以查询log。
------解决方案--------------------不错不错,不过如果企业中用的话要注意控制这个SHELL的权限,里面有数据库密码别给不相关的人看到了~
------解决方案--------------------其实这个调度最终执行的存储过程 exec package.存储过程名(); 检查下存储过程是否有效