无法运行shell脚本从Java启动SQL*Plus
我需要运行一个通过java执行的shell脚本。但当我从java运行时,它无法识别sqlplus命令,并将sqlplus的错误抛出为没有这样的文件或目录 下面是我的shell脚本代码无法运行shell脚本从Java启动SQL*Plus,java,oracle,unix,sqlplus,Java,Oracle,Unix,Sqlplus,我需要运行一个通过java执行的shell脚本。但当我从java运行时,它无法识别sqlplus命令,并将sqlplus的错误抛出为没有这样的文件或目录 下面是我的shell脚本代码 function CHECK_CONNECTION { PATH=/data01/u03/TestABC/apps/tech_st/10.1.2/bin:${PATH} ---> Path for Sqlplus WRITE_MESSAGE "Checking database con
function CHECK_CONNECTION {
PATH=/data01/u03/TestABC/apps/tech_st/10.1.2/bin:${PATH} ---> Path for Sqlplus
WRITE_MESSAGE "Checking database connection details"
UNAME_PASSWD=${1}
count=0
while [ $count -lt 3 ];do
sqlplus -s ${UNAME_PASSWD}@${DBSID} <<-SQL >> $LOG_FILENAME
WHENEVER OSERROR EXIT 9;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
prompt Connected to the database;
quit; SQL
conn_code=$?
if [ $conn_code -ne 0 ]; then
count=`expr $count + 1`
WRITE_MESSAGE " Trying to connect $count time..\n"
else
WRITE_MESSAGE "Database connectivity is working fine.................\n"
break
fi
done
if [ $count -eq 3 ]; then
WRITE_MESSAGE "Database connectivity is not working fine!!!!!check the username/password\n"
exit 1
fi
功能检查\u连接{
PATH=/data01/u03/TestABC/apps/tech_st/10.1.2/bin:${PATH}->Sqlplus的路径
写入消息“检查数据库连接详细信息”
UNAME_PASSWD=${1}
计数=0
而[$count-lt 3];执行
sqlplus-s${UNAME\u PASSWD}@${DBSID}$LOG\u文件名
当OSERROR退出9时;
每当SQLERROR退出SQL.SQLCODE时;
提示连接到数据库;
退出;SQL
连接代码=$?
如果[$conn_代码-ne 0];则
count=`expr$count+1`
写入消息“正在尝试连接$count time..\n”
其他的
写入消息“数据库连接工作正常……”
打破
fi
完成
如果[$count-等式3];则
写入消息“数据库连接不正常!!!!!请检查用户名/密码\n”
出口1
fi
我通过JavaUI提供DB详细信息。详细信息通过java在UNIX shell中正确到达
但当我在shell中执行同一个命令时,该命令运行良好,并且可以连接到数据库。他们的任何方式都可以连接到DB,而无需使用任何客户端(如sqlplus),或者他们的任何其他方式都可以这样做
任何帮助都将不胜感激。最终问题得到解决
实际上,当我通过java运行shell脚本时,它无法识别sqlplus命令。
UNIX实例的环境文件中存在sqlplus命令的定义,但无法自行执行。
因此,我通过脚本中的shell脚本命令在外部执行环境文件:
光盘~
.~/.bash\u配置文件
现在,在执行之后,它工作得很好。
感谢您的建议,朋友们可能值得展示一些设置和调用sqlplus的代码。此外,您是否可以显示命令行执行和错误。另外,如果您将sqlplus的完整路径放在命令中会发生什么情况。我怀疑它没有使用$path(但可能在您的环境中使用$ORACLE\U HOME)顺便问一句,你在使用吗?@wmorrison365:我已经附上了代码,请检查真正的问题是:你为什么不从Java程序内部(使用JDBC)进行连接,而不是启动外部应用程序?最好使用JDBC驱动程序瘦驱动程序不使用Oracle OLI,它是一个常规的Java库