2012-04-23 26 views

Respuesta

31

Por ejemplo:

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

Esto es terriblemente inseguro, como cualquiera puede ver la contraseña mientras que "sqlplus" se está ejecutando mediante el comando "ps". – JPaget

+0

Hola, @NetBear, creo que debes hacer 'sqlplus -s admin/password @ server' (la parte' @ server' fue el factor decisivo en mi caso). – sturmer

4

Si desea redirigir la salida a un archivo de registro para buscar errores o algo así. Puedes hacer algo como esto.

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

¿No sería algo parecido a este ser mejor, en cuanto a la seguridad ?:

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

¿Qué es esto más seguro que? ¿Qué lo hace más seguro? Intenta editar tu publicación y agregar esta información. ¿O estás haciendo una pregunta? –

+7

Es más seguro porque el nombre de usuario/contraseña no aparece en 'ps -ea' – Chaos

+0

Caos, gracias por agregar que - sí, esa fue mi intención, y no vi la respuesta de Keith, ¡gracias por captar esto! –

1

Esta cuestión debe manejar:

  1. SIEMPRE SQLERROR SALIDA SQL.SQLCODE
  2. CARRETE $ {SPOOL_FILE}
  3. $ RC devuelve el código de salida de Oracle
  4. gato de $ SPOOL_FILE explica el error
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 
Cuestiones relacionadas