2012-04-23 30 views

risposta

31

Ad esempio:

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 
+5

Questo è terribilmente insicuro, come chiunque può vedere la password mentre "sqlplus" è in esecuzione con il comando "ps". – JPaget

+0

Ciao @ NetBear, penso che tu debba fare 'sqlplus -s admin/password @ server' (la parte' @ server' è stata l'interruzione delle offerte nel mio caso). – sturmer

4

Se si desidera reindirizzare l'output in un file di log per cercare gli errori o qualcosa del genere. Puoi fare qualcosa di simile.

sqlplus -s <<EOF>> LOG_FILE_NAME user/[email protected]/db 
#Your SQL code 
EOF 
14

Non sarebbe qualcosa di simile a questo essere migliore, la sicurezza-saggio ?:

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 
+1

Che cos'è questo più sicuro di? Cosa lo rende più sicuro? Prova a modificare il tuo post e aggiungere queste informazioni. O stai facendo una domanda? –

+7

È più sicuro perché nome utente/password non vengono visualizzati in 'ps -ea' – Chaos

+0

Caos, grazie per aver aggiunto che - sì, quello era il mio intento, e non ho visto la risposta di keith, quindi grazie per averlo preso! –

1

Questo dovrebbe gestire problema:

  1. OGNI VOLTA SQLERROR EXIT SQL.SQLCODE
  2. SPOOL $ {SPOOL_FILE}
  3. $ RC restituisce il codice di uscita di Oracle
  4. gatto da $ SPOOL_FILE spiega errore
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 
Problemi correlati