Ich möchte die folgenden SQL-Anweisungen in ein Shell-Skript mit nur einer Variablen, die ich als Teil meiner täglichen Gesundheits-Checks auf unserer Client-Seite an 3 Personen senden können. Bitte helfen Sie mir mit den Ideen hier. Ich möchte auch 2 Befehle hinzufügen, um das Diaglog und den Raum zu überprüfen.Linux DB2 Shell Script
!df -h;
!db2diag -f;
SELECT DB_STATUS as "DB Status",
LAST_BACKUP as "Last Backup",
APPLS_CUR_CONS "No. of Current Connections"
FROM TABLE(MON_GET_DATABASE(-2));
select
NUM_INDOUBT_TRANS as "Indoubt Transactions"
from table(mon_get_transaction_log(-2));
SELECT lock_name,
hld_member,
lock_status,
hld_application_handle
FROM TABLE (MON_GET_APPL_LOCKWAIT(NULL, -2));
select
varchar(tbsp_name, 30) as tbsp_name,
varchar(tbsp_state, 40) as tbsp_state
from table(mon_get_tablespace('',-2));
Bisher habe ich folgendes:
connect to DBNAME
Health=`db2 -x "SELECT DB_STATUS as "DB Status",
LAST_BACKUP as "Last Backup",
APPLS_CUR_CONS "No. of Current Connections"
FROM TABLE(MON_GET_DATABASE(-2))"`
echo $Health
mail -s "health Check" [email protected] <<< "$Health"
den unten Fehler. Auch beim Entnehmen der "" bekomme ich immer noch die gleichen Fehler. Bitte helfen Sie
SQL0104N Ein unerwarteter Token "Status" wurde nach "ECT DB_STATUS als DB" gefunden. Erwartete Tokens können enthalten: "". SQLSTATE = 42601
Betrachten Sie ein anderes Design. Veranlassen Sie, dass das Systemdiagnose-Skript geplant ausgeführt wird, und erstellen Sie eine Ausgabedatei. Senden Sie diese Ausgabedatei dann separat per E-Mail an die Empfänger. Wählen Sie für das Shell-Skript entweder die SQL-Datei im Shell-Skript oder alternativ die SQL-Datei in eine Textdatei und rufen Sie das Shell-Skript zum Ausführen des Db2-Clp für diese Textdatei (db2 -o-Ausgabedatei) ab -tvf Textdatei.sql). Wenn Sie das SQL in eine Textdatei schreiben, vermeiden Sie Probleme, die zu den angezeigten Fehlern führen können. Wenn Sie das SQL-Inline in das Shell-Skript einfügen, müssen Sie vorsichtiger mit Anführungszeichen umgehen. – mao
Sie müssen doppelte Anführungszeichen um "DB-Status" in der doppelt zitierten SQL-Anweisung vermeiden. – mustaccio