分享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.存储过程名(); 检查下存储过程是否有效