linux:bash_sql_plus_error_handling
Inhaltsverzeichnis
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
linux/bash_sql_plus_error_handling.txt · Zuletzt geändert: 2022/07/01 09:54 von gpipperr