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

时间:2014-02-13 09:54:21

标签: 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 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

我通过java UI提供数据库详细信息。通过java在UNIX shell中正确地实现了详细信息。

但是当我从shell执行时,同样的命令正常工作并连接到数据库。他们可以通过任何方式在不使用任何客户端(如sqlplus)的情况下连接到数据库,或者是他们以任何其他方式执行此操作。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

终于解决了。

实际上当我通过java运行我的shell脚本时,它无法识别sqlplus命令。 sqlplus命令的定义存在于UNIX实例的环境文件中,但它无法自行执行。 所以我在我的脚本中通过shell脚本命令从外部执行环境文件:

  

cd~

     

。 〜/ .bash_profile中

现在执行后它工作正常。 感谢您的建议朋友