Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法运行shell脚本从Java启动SQL*Plus_Java_Oracle_Unix_Sqlplus - Fatal编程技术网

无法运行shell脚本从Java启动SQL*Plus

无法运行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

我需要运行一个通过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 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库