SQLPLUS-Wert in Variable - funktioniert nicht von Crontab

SQLPLUS-Wert in Variable - funktioniert nicht von Crontab

Ich versuche, einen SQLPlus-Wert in einer Variablen in Linux zu speichern.

Das Skript funktioniert einwandfrei, wenn es manuell ausgelöst wird. Der Wert in der Variable wird jedoch nicht gespeichert, wenn das Skript von Crontab aufgerufen wird.

Code:

#!/bin/ksh
~/.profile
v=`sqlplus -s <<!
<<DB details>>
select sysdate from dual;
!
`
echo "$v"

Antwort1

Das Ausführen sqlplusvon einem Crontab-Eintrag aus kann frustrierend sein. Sie erhalten eine sehr spärliche PATH-Variable, da die Shell, die crondsich abspaltet, die „rc“-Datei nicht liest.

Legen Sie in Ihrer „.profile“-Datei ORACLE_HOME fest? Schließen Sie $ORACLE_HOME/bin in den PATH ein und exportieren Sie ORACLE_HOME und PATH? Überprüfen Sie das zuerst. Außerdem muss ich feststellen, dass Ihr Code das kshfraglicheAusführennichtBeschaffungdie ~/.profileDatei. Ihr Skript sollte diese Datei als „Quelle“ verwenden. Ich scheine auch einen Aberglauben zu haben, was das Einstellen und Exportieren von TNS_ADMIN angeht, und zwar so:

export TNS_ADMIN=$ORACLE_HOME/network/admin

Sie können die Datenbank-Benutzer-ID und das Kennwort in das „hier-Dokument“ aufnehmen, indem Sie die /nologOption verwenden sqlplus, um zu verhindern, dass diese Details jedem angezeigt werden, der Folgendes ausführt ps:

sqlplus -s /nolog 2>&1 << END_ZERO_ROW_CHECK
connect $USER_NAME/$PASSWORD@$SID_INSTANCE
whenever oserror exit failure
whenever sqlerror exit failure
...
END_ZERO_ROW_CHECK

verwandte Informationen