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