2012-04-23 6 views

Odpowiedz

31

Na przykład:

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

To jest strasznie niepewny, jak każdy może zobaczyć hasło podczas „SQLPLUS” jest uruchomiony za pomocą polecenia „PS”. – JPaget

+0

Hi @NetBear, myślę, że powinieneś zrobić 'sqlplus -s admin/password @ server' (część' @ server' była w moim przypadku wyłącznikiem umowy). – sturmer

4

Jeśli chcesz przekierować dane wyjściowe do pliku dziennika w poszukiwaniu błędów lub coś. Możesz zrobić coś takiego.

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

Czy coś podobnego do tego nie może być lepiej, bezpieczeństwo mądry ?:

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

Co to jest bardziej bezpieczne niż? Co sprawia, że ​​jest bezpieczniejszy? Spróbuj edytować swój post i dodać te informacje. A może zadajesz pytanie? –

+7

To jest bardziej bezpieczne, ponieważ nazwa użytkownika/hasło nie pojawiają się w 'ps -ea' – Chaos

+0

Chaos, dzięki za dodanie - tak, to było moim zamiarem, a ja nie widziałem odpowiedzi Keitha, więc dzięki za złapanie tego! –

1

ten powinien obsługiwać problem:

  1. ilekroć SQLERROR EXIT SQL.SQLCODE
  2. SZPULI $ {SPOOL_FILE}
  3. $ RC zwraca kod wyjścia oracle
  4. kot z $ SPOOL_FILE wyjaśnia 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 
Powiązane problemy