English Sentence Loading...
ӢӼ...

Linux的定时任务crontab

在Oracle用户下定时执行SQL任务,在shell脚本里通过sqlplus命令连到oracle然后执行insert,错误提示sqlplus这个命令找不到,原因是环境变量不能完全传递,定时任务时的环境变量:
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/oracle>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=oracle>
X-Cron-Env: <USER=oracle>

明显PATH没完全传递,解决办法:
在shell脚本里定义ORACLE_HOME、ORACLE_SID,然后指定sqlplus的路径,

#!/bin/sh
#File Name SQL_Test.sh
#This file test a SQL script
ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1
ORACLE_SID=ora10g
export orACLE_HOME orACLE_SID
echo "Start.........."
$ORACLE_HOME/bin/sqlplus -s  scott/zhang <<eof
insert into test values(to_number(to_char(sysdate,'MI')),sysdate);
exit 0
eof
echo "Finish....."

cron用法:
创建cron文件,然后通过crontab命令提交:

[oracle@localhost ~]$ cat oracle.cron
* * * * * /home/oracle/SQL_Test.sh

crontab文件记录格式:分 时 日 月 星期 要运行的命令(脚本)
星期用0 ~ 6表示(0表示星期天),小时用0 ~ 23(0表示子夜),各个时间域之间用空格隔开。
时间域中,用横杠"-"表示一个时间范围,用逗号","表示时间值列表,用星号"*"表示没限制。

[oracle@localhost ~]$crontab oracle.cron




[本日志由 admin 于 2008-10-15 10:58 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: Linux crontab o&#114;acle sqlplus
评论: 1 | 引用: 0 | 查看次数: 1326
回复回复9881522.cn[2008-10-18 02:13 AM | del]
crontab使用大概有两种,另一种是修改全局配置文件/etc/crontab
 admin admin 2008-10-23 10:47 AM ظ
呵呵,也是一种办法,不过/etc/crontab一般是root用的,普通用户还是创建自己的crontab文件好
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: Check
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 500 字 | UBB代码 开启 | [img]标签 开启