Mit den beiden SQL*Plus Anweisungen kann ein Fehlercode zurück geben werden:
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!
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.