我创建了以下 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