- 论坛徽章:
- 0
|
---------
本人写了一个shell,shell文件名为execbat.sh,保存路径为:/export/home/stsuser
sehll文件内容如下:
-------------------------------------------
#!/bin/sh
cd /export/home/stsuser/nas/dts
./data_bat
------------------------------------------
shell的目的,我想先进入目录/export/home/stsuser/nas/dts
然后执行此目录下的程序data_bat
现在用手工执行,使用用户stsu,telnet登录系统,先进入目录/export/home/stsuser
直接运行shell文件./execbat.sh
data_bat程序可以可以正常执行,
现在改用crontab定时执行,使用用户stsu,telnet登录系统,crontab中加入如下任务:
25 18 * * * /export/home/stsuser/execbat.sh
说明一下,程序data_bat是pro*c程序,由data_bat.pc文件编译而成的可执行文件,
文件内容如下的形式:
------------------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
.....
#include <sqlca.h>
main()
{
char db_username[10];
char db_passwd[10];
memset(db_username,0,sizeof(db_username));
memset(db_passwd,0,sizeof(db_passwd));
/*读配置文件得到数据库用户名及密码*/
ReadCfgFile("scfgfile.cfg","dbusername",db_username);
ReadCfgFile("scfgfile.cfg","dbpaswd",db_passwd);
EXEC SQL CONNECT :db_username IDENTIFIED by :db_passwd;
if ( sqlca.sqlcode != 0 )
{
printf("connect database error. errcode[%d]",sqlca.sqlcode);
return -1;
}
/*其他处理语句*/
.......
EXEC SQL COMMIT WORK RELEASE;
return 0;
}
------------------------------------------------------------------------------------------
当用定时任务时,在连接数据库时,出现如下错误信息:
connect database error. errcode[-12545]
本人查询了错误:
ORA-12545: Connect failed because target host or object does not exist
Cause: The address specified is not valid, or the program being connected to does not exist.
看了错误,本人改了data_bat.pc代码,数据库连接处改成如下:
-------------------------------------------------------------------------------
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR uid[200];
EXEC SQL END DECLARE SECTION;
main()
{
char cnnstr[128];
memset(cnnstr,0,sizeof(cnnstr));
strcpy(cnnstr,"admin/nas4321@nasdat");
strcpy ((char *)uid.arr,cnnstr);
uid.len=(unsigned short)strlen((char *)uid.arr);
EXEC SQL CONNECT :uid;
if ( sqlca.sqlcode != 0 )
{
printf("connect database error. errcode[%d]",sqlca.sqlcode);
return -1;
}
/*其他处理语句*/
...
-------------------------------------------------------------------------------
可用crontab定时执行还是有错:
connect database error. errcode[-12154]
本人百思不得其解,相同的用户,为何使用手工直接执行就没有任务问题,换成
crontab就会出问题,恳请高人指点,这是怎么了,如何解决?谢谢!
对了,系统为:
SunOS nas.sz.gmcc.net 5.8 Generic_117350-25 sun4u sparc SUNW,Sun-Fire
-- |
|