此文章主要向大家講述的是用戶利用 crontab 定時執行DB2 sql的示例,今天在RHEL 5.3測試了一下,普通用戶利用crontab定時執行DB2 sql實際操作情況,走了一些彎路,因為用./可以執行得到正確結果。
而crontab卻執行得不到,很是郁悶,在網上查了半天,有好多說是/usr/bin /crontab的權限問題
可是我在RHEL 5.3查看並一下
- -rwsr-sr-x 1 root root 309K 2007-06-22 /usr/bin/crontab
我的權限是沒有問題,後來查了很多資料才知道是DB2環境變量的問題,主要是水平不夠,意識不高,寫下備用
以db2inst1用戶登陸linux系統
- 1.vi db2inst1cron
- * * * * * /home/db2inst1/tongji.sh >>/home/db2inst1/b.txt
- 2.crontab db2inst1cron
- 3.vi tongji.sh (777)
- #!/bin/bash
- #tongji auto
- top="20"
- qiantian=$top`date -d '2 day ago' +"%y%m%d"`
- yesterday=$top`date -d '1 day ago' +"%y%m%d"`
- echo "----------------------------------------------"
- echo $(date +"%y-%m-%d %H:%M:%S")
- echo "-----------------setp1:date--------------------"
- echo "qiantian:" $qiantian
- echo "yesterday:" $yesterday
- echo "-----------------setp2:char---------------------"
- #sed -i "s/$qiantian/$yesterday/g" `grep $qiantian -rl /home/db2inst1/tongji_sec`
- echo "----------------step3:dbconnect-----------------"
- db2 "connect to toolsdb "
- echo "1232312312"
- db2 -tf /home/db2inst1/tongji_sec/sql_sec.sql
- 4.vi sql_sec.sql
- insert into liuchao values(10);
- a.
- [db2inst1@localhost ~]$ ./tongji.sh 正確,是想要結果)
- 10-03-09 15:37:27
- -----------------setp1:date--------------------
- qiantian: 20100307
- yesterday: 20100308
- -----------------setp2:char---------------------
- ----------------step3:dbconnect-----------------
- Database Connection Information
- Database server = DB2/LINUXX8664 9.5.3
- SQL authorization ID = DB2INST1
- Local database alias = TOOLSDB
- 1232312312
- DB20000I The SQL command completed successfully.
- [db2inst1@localhost ~]$
- b.crontab 執行錯誤,無數據庫操作,不是想要結果)
- 10-03-09 15:38:01
- -----------------setp1:date--------------------
- qiantian: 20100307
- yesterday: 20100308
- -----------------setp2:char---------------------
- ----------------step3:dbconnect-----------------
- 1232312312
解決方法
- #!/bin/bash
- #tongji auto
- . /home/db2inst1/sqllib/db2profile #引入db2的環境變量.後面有空格)
- top="20"
以上的相關內容就是對普通用戶利用 crontab定時執行DB2 sql示例的介紹,望你能有所收獲。