Sqlplus命令不能通过plink工作

问题描述:

我有一个shell脚本,我使用sqlplus命令从数据库中获取数据(安装在Linux上)。相同的脚本在Linux环境下工作正常。当我通过使用下面的批处理文件在窗口环境中执行脚本时。Sqlplus命令不能通过plink工作

set ORACLE_TERM=xterm 
set ORACLE_BASE=/home/pwcadm/app/pwcadm 
set ORACLE_HOME=/home/pwcadm/app/pwcadm/product/11.2.0/client_1 
set ORACLE_HOSTNAME=kyora02.kymab.local 
set ORACLE_SID=orcl 
set ORA_NLS11=$ORACLE_HOME/nls/data 
set LANG=en_US.UTF-8 
set PATH=/opt/CollabNet_Subversion/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/home/pwcadm/app/pwcadm/product/11.2.0/client_1/bin:/home/pwcadm/app/pwcadm/product/11.2.0/client_1/bin:/home/pwcadm/app/pwcadm/product/11.2.0/client_1/lib/site_perl/5.8.3/i686-linux-thread-multi:/home/pwcadm/app/pwcadm/product/11.2.0/client_1/perl/lib/5.10.0/x86_64-linux-thread-multi:/home/pwcadm/app/pwcadm/product/11.2.0/client_1/perl/bin:/home/pwcadm/Informatica/PowerCenter9.1.0.3/server/bin 
set LD_LIBRARY_PATH=/home/pwcadm/app/pwcadm/product/11.2.0/client_1/lib:/home/pwcadm/app/pwcadm/product/11.2.0/client_1/lib32:/home/pwcadm/Informatica/PowerCenter9.1.0.3/server/bin 
cd C:\Program Files\PuTTY 
plink [email protected] -pw csaadm /app/csa/REG_AUTOMATION/scripts/CHECK_GAN_INSERT.sh 

批处理文件提示下面的错误消息。即使我已经设定了所有的路径。

C:\Program Files\PuTTY>plink [email protected] -pw csaadm /app/csa/REG_AUTOMA 
TION/scripts/CHECK_GAN_INSERT.sh 
Error 6 initializing SQL*Plus 
SP2-0667: Message file sp1<lang>.msb not found 
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory 
FAIL 
/app/csa/REG_AUTOMATION/scripts/CHECK_GAN_INSERT.sh: line 27: [: -ne: unary oper 
ator expected 

CHECK_GAN_INSERT.sh

ACCOUNT_GLOBAL_COUNT=$(echo " 
     set heading off 
     set feedback off 
     set verify off 
     set trimspool on 
     set trimout off 
     set pagesize 0 
     set space 0 
     whenever sqlerror exit 2; 
SELECT COUNT(*) FROM ACCOUNT_GLOBAL WHERE NAME='test'; 
"|/home/pwcadm/app/pwcadm/product/11.2.0/client_1/bin/sqlplus -S ${DB_USERNAME}/${DB_PASSWORD}@${CONNECTING_STRING}) 

EROR_MSG=$(echo ${ACCOUNT_GLOBAL_COUNT} |grep ORA|wc -l) 

if [ ${EROR_MSG} -ne 0 ] 
then 
     echo "${ACCOUNT_GLOBAL_COUNT}" 
     exit; 
fi 

if [ ${ACCOUNT_GLOBAL_COUNT} -ne 0 ] 
then 
     echo "PASS" 
else 
     echo "FAIL" 
fi 

请帮助。

我们对您的问题没有足够的信息,但这里是我的猜测:

    你必须设置 ORACLE_HOME ENV
  • 。 VAR每次登录(或自动执行脚本添加它),
  • 必须扩展PATH太(使用export PATH=$PATH:$ORACLE_HOME/bin),
  • 也可能是你需要启动Oracle实例。

检查这三点并更新您的问题,如果您的问题仍未解决。

+0

嗨Llya ...我编辑了这个问题..请看看。 – user3725145

+0

太棒了!请添加CHECK_GAN_INSERT.sh的内容(第27行的问题是什么?)另外,现在看起来您还没有设置'ORACLE_HOME' env。 var在CHECK_GAN_INSERT.sh中。 – Ilya

+0

我粘贴了CHECK_GAN_INSERT.sh .....但是我已经在批处理文件中设置了ORACLE_HOME路径。 – user3725145