Se connecter à sqlplus dans un script shell et exécuter des scripts SQL
j'en ai un .fichier sql, qui est un tas de oracle pl/sql commandes et je veux créer un script shell pour exécuter ces commandes.
Supposons que user/pass@server
mes informations d'identification. Quel sera le script shell pour accomplir une telle tâche?
29
demandé sur
codeforester
2012-04-23 13:31:36
4 réponses
Par exemple:
sqlplus -s admin/password << EOF
whenever sqlerror exit sql.sqlcode;
set echo off
set heading off
@pl_script_1.sql
@pl_script_2.sql
exit;
EOF
32
répondu
NetBear
2012-04-23 09:40:04
est-ce que quelque chose de semblable à cela ne serait pas mieux, du point de vue de la sécurité?:
sqlplus -s /nolog << EOF
CONNECT admin/password;
whenever sqlerror exit sql.sqlcode;
set echo off
set heading off
@pl_script_1.sql
@pl_script_2.sql
exit;
EOF
17
répondu
Blaine DeLancey
2013-04-19 15:39:53
Si vous souhaitez rediriger la sortie vers un fichier journal pour rechercher des erreurs ou quelque chose. Vous pouvez faire quelque chose comme cela.
sqlplus -s <<EOF>> LOG_FILE_NAME user/passwd@host/db
#Your SQL code
EOF
4
répondu
darwinbaisa
2012-11-01 08:48:46
Ce doit gérer le problème:
- WHENEVER SQLERROR EXIT SQL.SQLCODE
- SPOOL ${SPOOL_FILE}
- $ RC retourne le code de sortie d'oracle
- chat à partir de $SPOOL_FILE explique l'erreur
SPOOL_FILE=${LOG_DIR}/${LOG_FILE_NAME}.spool
SQLPLUS_OUTPUT=`sqlplus -s "$SFDC_WE_CORE" <<EOF
SET HEAD OFF
SET AUTOPRINT OFF
SET TERMOUT OFF
SET SERVEROUTPUT ON
SPOOL ${SPOOL_FILE}
WHENEVER SQLERROR EXIT SQL.SQLCODE
DECLARE
BEGIN
foooo
--rollback;
END;
/
EOF`
RC=$?
if [[ $RC != 0 ]] ; then
echo " RDBMS exit code : $RC " | tee -a ${LOG_FILE}
cat ${SPOOL_FILE} | tee -a ${LOG_FILE}
cat ${LOG_FILE} | mail -s "Script ${INIT_EXE} failed on $SFDC_ENV" $SUPPORT_LIST
exit 3
fi
2
répondu
Rafał Sardaw
2014-12-23 18:29:21