Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:bash_sql_plus_error_handling

Error Handling von SQL*Plus Aufrufen in Bash Skripten

Mit den beiden SQL*Plus Anweisungen kann ein Fehlercode zurück geben werden:

  • WHENEVER SQLERROR EXIT SQL.SQLCODE
  • WHENEVER OSERROR EXIT 9

Einfacher Fall - direkter Aufruf von SQL*Plus

SQLPlus wird direkt aufgerufen:

...
DBVIEW=global_name
${ORACLE_HOME}/bin/sqlplus -s / as sysdba << EOScipt
WHENEVER SQLERROR EXIT SQL.SQLCODE
WHENEVER OSERROR  EXIT 9
set pagesize 0
set heading  off
set feedback off
select global_name from ${DBVIEW};
exit;
EOScipt
 
if [[ "$?" != "0" ]]; then
     DB_STATUS=DOWN
fi
...

Mit „WHENEVER OSERROR EXIT SQL.SQLCODE“ kann ein Code != 0 zurückgeben werden, aber da der SQL Errorcode eine negative Zahl ist, kann es passieren das nicht die erwartete Zahl auch wirklich im Rückgabe Ergebnis steht!


Aufruf von SQL*Plus über `` über eine Subshell

Um das Ergebniss eines SQL*Plus Aufrufes zu verwenden kann das so aufgerufen werden:

...
             # check for plugable dB
             DBVIEW=\$database
             PLUG_DB=`${ORACLE_HOME}/bin/sqlplus -s / as sysdba << EOScipt
WHENEVER OSERROR EXIT 9
WHENEVER SQLERROR EXIT 9
set pagesize 0
set heading  off
set feedback off
select cdb from v_${DBVIEW};
exit;
EOScipt`
 
DB_ERROR=$?
 
             if [[ "${DB_ERROR}" -ne "0" ]]; then
               PLUG_DB=DOWN
            fi
..

D.h. am besten Return Code von SQL*Plus gleich nach dem Aufruf in eine Variable zu schreiben, mit dieser Arbeiten, schnell ist $? von einem folgende Call überschrieben, ohne das der Fehler sofort ins Auge fällt.


Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
linux/bash_sql_plus_error_handling.txt · Zuletzt geändert: 2022/07/01 09:54 von gpipperr