用于部署 plsql 包的 shell 脚本 ||Sqlplus:找不到命令错误



我创建了以下 shell 脚本,用于部署下面提到的所有包和表脚本。我首先进入直接

cd /home/test

然后我称我的 shell 脚本为 sh XXHCM_OBJECT.sh

#!/usr/bin/sh 
# Parameters to be accepted from command prompt
# Parameter 1 = Apps username/Password
# Parameter 2 = BOLINF username/Password
# Parameter 3 = Host name for the instance
# Parameter 4 = Port Number for the instance
# Parameter 5 = DB Name for the instance

#APPS_USER="$1"
#BOLINF_USER="$2"
#HOST_NAME="$3"
#PORT_NUMBER="$4"
#DB_NAME="$5"
LOGFILE="$CUST_TOP/XXHCM_OBJECTS.log"
#APPS_USERNAME=$(echo $APPS_USER|cut -f "1" -d /)
#APPS_PWD=$(echo $APPS_USER|cut -f "2" -d /)
#-
#-  reading program parameters
#-
echo "Enter APPS User: "
read APPS
echo "Enter APPS Password: "
stty -echo
read APPS_PWD
stty echo

echo "Enter Custom User: "
read CUSTOM
echo "Enter Custom Password: "
stty -echo
read CUSTOM_PWD
stty echo
echo "Enter Install Server (SID): "
read SID

APPS_USER="$APPS/$APPS_PWD@$SID"
CUSTOM_USER="$CUSTOM/$CUSTOM_PWD@$SID"

APPS_USERNAME=$(echo $APPS_USER|cut -f "1" -d /)
APPS_PWD=$(echo $APPS_USER|cut -f "2" -d /)
echo "" > $LOGFILE

echo "" > $LOGFILE
echo "Starting installation of XXHCM_OBJECTS - XXHCM_OBJECTS ..."
echo "Starting installation of XXHCM_OBJECTS - XXHCM_OBJECTS ..." >>$LOGFILE
echo "" >>$LOGFILE
echo "" >>$LOGFILE
echo "Copying Files To Appropriate Directories ..."
echo "Copying Files To Appropriate Directories ..." >>$LOGFILE
echo "" >>$LOGFILE

echo "Changing permissions ... " >> $LOGFILE
chmod 777 *.*
echo "Changed permissions ... " >> $LOGFILE
echo "">>$LOGFILE
echo "Creating Custom Package, Synonyms and Grants...">>$LOGFILE
echo "Creating Custom Package, Synonyms and Grants..."
echo "">>$LOGFILE

if sqlplus $APPS_USER @XXHCM_MAPPING_STG.sql
then
    echo "Insert data into entities table in APPS schema" >> $LOGFILE
    echo "Insert data into entities table in APPS schema"
else
    echo "Error in Insert data into entities table in APPS schema" >> $LOGFILE
    echo "Error in Insert data into entities table in APPS schema" 
fi
if sqlplus $APPS_USER @XXdiv_ASSIGNMENT_SUPERVISOR_STG.sql
then
    echo "Insert data into entities table in APPS schema" >> $LOGFILE
    echo "Insert data into entities table in APPS schema"
else
    echo "Error in Insert data into entities table in APPS schema" >> $LOGFILE
    echo "Error in Insert data into entities table in APPS schema" 
fi
if sqlplus $APPS_USER @XXHCM_STAGING_TO_I.pks
then
    echo "Package specification for package XXHCM_STAGING_TO_I created in APPS schema" >> $LOGFILE
    echo "Package specification for package XXHCM_STAGING_TO_I created in APPS schema"
else
    echo "Error in creating Package specification" >> $LOGFILE
    echo "Error in creating Package specification" 
fi
if sqlplus $APPS_USER @XXHCM_STAGING_TO_I.pkb
then
    echo "Package body created for package XXHCM_STAGING_TO_I in APPS schema" >> $LOGFILE
    echo "Package body created for package XXHCM_STAGING_TO_I in APPS schema"
else
    echo "Error in creating Package body" >> $LOGFILE
    echo "Error in creating Package body" 
fi
echo "">>$LOGFILE
echo "Package, Synonyms,grants and Tables created successfully">>$LOGFILE
echo "Package, Synonyms,grants and Tables created successfully"
echo "">>$LOGFILE

echo "Installation completed for XXHCM_OBJECTS - XXHCM_OBJECTS"
echo "Installation completed for XXHCM_OBJECTS - XXHCM_OBJECTS" >> $LOGFILE
# *****************************************************************************
# End of Script
# *****************************************************************************

但是在输出时它给了我一个错误:

sqlplus: command not found

看起来您在 PATH 中缺少 sqlplus 安装位置。假设你的 Oracle 安装在 /opt/oracle/product/12.1.0/db_1 上,sqlplus 应该在 /opt/oracle/product/12.1.0/db_1/bin 上,你需要做的就是在你的脚本中添加类似的东西:

export PATH=/opt/oracle/product/12.1.0/db_1/bin:$PATH

或者像通常所做的那样,导出一个ORACLE_HOME变量并将其添加到 PATH 中,例如

export ORACLE_HOME=/opt/oracle/product/12.1.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH

最新更新