免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5379 | 回复: 6
打印 上一主题 下一主题

shell sqlplus crontab [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-30 10:49 |只看该作者 |倒序浏览
写了一个shell,单独执行没有问题,正常执行。
但是使用crontab定时执行的时候除了问题,在调用sqlplus的时候报错
Print ORACLE_HOME start......
/home/ora/oracle/product/10.1.0/Db_1
Print ORACLE_HOME end  ......
/home/nicolaus/shell/executeSQL.sh: line 20: sqlplus: command not found

其中前面三行是我打印的环境变量的信息,我在网上查了一下,有人说是我环境变量的问题,shell在执行的时候找不到环境变量,于是我把环境变量打印出来
似乎我的环境变量是好的。

本人没有写过shell

凭感觉貌似,问题处在crontab上。

添付文件如下:
crontab.txt
00 08 * * * /home/nicolaus/shell/insertT_TEKIYOURATE_JOUHOU.sh 1
00 10 * * * /home/nicolaus/shell/insertT_TEKIYOURATE_JOUHOU.sh 2
00 15 * * * /home/nicolaus/shell/insertT_TEKIYOURATE_JOUHOU.sh 3

executeSQL.sh

#!/bin/bash

#Environmental parameters for Oracle Client
/home/ora/oracle/product/10.1.0/Db_1
cd /home/ora/oracle/product/10.1.0/Db_1/bin
ORACLE_HOME=/home/ora/oracle/product/10.1.0/Db_1;export ORACLE_HOME

echo "SQL=$1"

if [ $# -eq 0  ]
then
    echo "USAGE:executeSQL.sh [SQL]"
    exit 1
fi

echo "Print ORACLE_HOME start......"
echo $ORACLE_HOME
echo "Print ORACLE_HOME end  ......"

sqlplus yizq/yizq@orcl <<_EOF_
$1
commit;
quit
_EOF_

exit 0


insertT_TEKIYOURATE_JOUHOU.sh

#!/bin/bash

SYSTEMDATE=`date +%Y%m%d`

case $1 in
    '1')
        SQL_FILE=$(dirname $0)/T_TEKIYOURATE_JOUHOU_1.sql
        ;;
    '2')
        SQL_FILE=$(dirname $0)/T_TEKIYOURATE_JOUHOU_2.sql
        ;;
    '3')
        SQL_FILE=$(dirname $0)/T_TEKIYOURATE_JOUHOU_3.sql
        ;;
    *)
        echo "USAGE: insertT_TEKIYOURATE_JOUHOU.sh [1(8:00)|2(10:00)|3(15:00)]"
        exit 1
        ;;
esac


cat ${SQL_FILE} |sed "s/SYSTEMDATE/${SYSTEMDATE}/g" |while read SQL
do
   $(dirname $0)/executeSQL.sh "${SQL}"
done

exit 0

论坛徽章:
0
2 [报告]
发表于 2007-09-30 14:29 |只看该作者

错误信息

From nicolaus@localhost.localdomain  Sun Sep 30 08:00:01 2007
Return-Path: <nicolaus@localhost.localdomain>
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
        by localhost.localdomain (8.13.1/8.13.1) with ESMTP id l8U001TL003940
        for <nicolaus@localhost.localdomain>; Sun, 30 Sep 2007 08:00:01 +0800
Received: (from nicolaus@localhost)
        by localhost.localdomain (8.13.1/8.13.1/Submit) id l8U001WT003798;
        Sun, 30 Sep 2007 08:00:01 +0800
Date: Sun, 30 Sep 2007 08:00:01 +0800
Message-Id: <200709300000.l8U001WT003798@localhost.localdomain>
From: root@localhost.localdomain (Cron Daemon)
To: nicolaus@localhost.localdomain
Subject: Cron <nicolaus@localhost> /home/nicolaus/shell/insertT_TEKIYOURATE_JOUHOU.sh 1
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/nicolaus>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=nicolaus>
X-Cron-Env: <USER=nicolaus>

/home/nicolaus/shell/executeSQL.sh: line 7: /home/ora/oracle/product/10.1.0/Db_1: is a directory
SQL=Insert into T_TEKIYOURATE_JOUHOU ( TSUKA_KBN,TEKIYOU_KAISHI_YMDHMS,RATE_SHURUI_CD,TTM,TTS,TTB,USD_NAKANE )  VALUES ('001','20070930074056','1','118.48','119.48','117.48','118.48');
/home/nicolaus/shell/executeSQL.sh: line 17: sqlplus: command not found
/home/nicolaus/shell/executeSQL.sh: line 7: /home/ora/oracle/product/10.1.0/Db_1: is a directory
SQL=Insert into T_TEKIYOURATE_JOUHOU ( TSUKA_KBN,TEKIYOU_KAISHI_YMDHMS,RATE_SHURUI_CD,TTM,TTS,TTB,USD_NAKANE )  VALUES ('002','20070930074056','1','237.07','241.07','233.07','118.48');
/home/nicolaus/shell/executeSQL.sh: line 17: sqlplus: command not found
/home/nicolaus/shell/executeSQL.sh: line 7: /home/ora/oracle/product/10.1.0/Db_1: is a directory
SQL=Insert into T_TEKIYOURATE_JOUHOU ( TSUKA_KBN,TEKIYOU_KAISHI_YMDHMS,RATE_SHURUI_CD,TTM,TTS,TTB,USD_NAKANE )  VALUES ('004','20070930074056','1','104.4','106','102.8','118.48');
/home/nicolaus/shell/executeSQL.sh: line 17: sqlplus: command not found
/home/nicolaus/shell/executeSQL.sh: line 7: /home/ora/oracle/product/10.1.0/Db_1: is a directory
SQL=Insert into T_TEKIYOURATE_JOUHOU ( TSUKA_KBN,TEKIYOU_KAISHI_YMDHMS,RATE_SHURUI_CD,TTM,TTS,TTB,USD_NAKANE )  VALUES ('005','20070930074056','1','98.23','99.13','97.33','118.48');
/home/nicolaus/shell/executeSQL.sh: line 17: sqlplus: command not found
/home/nicolaus/shell/executeSQL.sh: line 7: /home/ora/oracle/product/10.1.0/Db_1: is a directory
SQL=Insert into T_TEKIYOURATE_JOUHOU ( TSUKA_KBN,TEKIYOU_KAISHI_YMDHMS,RATE_SHURUI_CD,TTM,TTS,TTB,USD_NAKANE )  VALUES ('020','20070930074056','1','161.32','162.82','159.82','118.48');
/home/nicolaus/shell/executeSQL.sh: line 17: sqlplus: command not found
/home/nicolaus/shell/executeSQL.sh: line 7: /home/ora/oracle/product/10.1.0/Db_1: is a directory
SQL=Insert into T_TEKIYOURATE_JOUHOU ( TSUKA_KBN,TEKIYOU_KAISHI_YMDHMS,RATE_SHURUI_CD,TTM,TTS,TTB,USD_NAKANE )  VALUES('061','20070930074056','1','98.46','100.46','96.46','118.48');
/home/nicolaus/shell/executeSQL.sh: line 17: sqlplus: command not found
/home/nicolaus/shell/executeSQL.sh: line 7: /home/ora/oracle/product/10.1.0/Db_1: is a directory
SQL=Insert into T_TEKIYOURATE_JOUHOU ( TSUKA_KBN,TEKIYOU_KAISHI_YMDHMS,RATE_SHURUI_CD,TTM,TTS,TTB,USD_NAKANE )  VALUES ('062','20070930074056','1','15.23','15.66','14.8','118.48');
/home/nicolaus/shell/executeSQL.sh: line 17: sqlplus: command not found
/home/nicolaus/shell/executeSQL.sh: line 7: /home/ora/oracle/product/10.1.0/Db_1: is a directory
SQL=Insert into T_TEKIYOURATE_JOUHOU ( TSUKA_KBN,TEKIYOU_KAISHI_YMDHMS,RATE_SHURUI_CD,TTM,TTS,TTB,USD_NAKANE )  VALUES ('074','20070930074056','1','87.21','89.21','85.21','118.48');
/home/nicolaus/shell/executeSQL.sh: line 17: sqlplus: command not found

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
3 [报告]
发表于 2007-09-30 14:34 |只看该作者
用原来的shell
crontab改为

00 08 * * * su - <用户> -c  "/home/nicolaus/shell/insertT_TEKIYOURATE_JOUHOU.sh 1"  >/dev/null 2>&1
00 10 * * * su - <用户> -c  "/home/nicolaus/shell/insertT_TEKIYOURATE_JOUHOU.sh 2"  >/dev/null 2>&1
00 15 * * * su - <用户> -c "/home/nicolaus/shell/insertT_TEKIYOURATE_JOUHOU.sh 3"  >/dev/null 2>&1

[ 本帖最后由 liaosnet 于 2007-9-30 14:36 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-10-01 00:08 |只看该作者
#!/bin/bash

#Environmental parameters for Oracle Client
. /home/oracle/.profile

论坛徽章:
0
5 [报告]
发表于 2007-10-04 15:43 |只看该作者
#!/bin/bash

. /home/nicolaus/.profile

论坛徽章:
0
6 [报告]
发表于 2007-10-05 23:52 |只看该作者
3楼的方法也是可行的,root的crontab

论坛徽章:
0
7 [报告]
发表于 2007-10-06 09:38 |只看该作者
在脚本中设置一下PATH这个环境变量,上面的错误信息是说sqlplus没有找到
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP