Capper
Grünschnabel
Hai,
Ich habe folgendes Problem, ich möchte einem SQL Statement eine Shell Variable übergeben. Bislang hat das Script quasi standalone und händisch funktioniert, jetzt aber soll es automatisiert laufen.
Nun zum Scriptaufbau, das Script ist in 3 Teile unterteilt
* Erster Teil: Errechnen und ausgeben des Datums des Vortages
* Zweiter Teil: Daten aus der DB auslesen
* Dritter Teil: Aufbereiten der Daten zur Weiterverarbeitung
In Teil Eins, wird also das Datum des Vortages errechnet, in die benötigte Form formatiert und dann in eine Variable geschrieben. Diese Variable sollte nun verwendet werden um in Teil Zwei die Daten aus der DB auszulesen. Nun ist aber mein Problem, das ich nicht weis wie ich die Variable an SQL übergeben muss, damit SQL diese weiterverwendet.
Hier die verschiedenen Aufruf-Versuche von mir mit der entsprechenden Ausgabe:
Code1:
Ausgabe1:
SQL*Plus: Release 9.2.0.6.0 - Production on Wed Apr 11 11:20:43 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> 2 3 4 5 6 SQL> SQL> Disconnected from Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
Code2:
Ausgabe2:
./redo_machen[196]: 11.04.2007: cannot open
./redo_machen[197]: SET: not found
./redo_machen[198]: SET: not found
./redo_machen[199]: SET: not found
./redo_machen[200]: SET: not found
./redo_machen[201]: SET: not found
./redo_machen[202]: SET: not found
./redo_machen[203]: spool: not found
./redo_machen[203]: syntax error at line 204 : `(' unexpected
Kann mir hier jemand weiterhelfen? Bin schon wieder am verzweifeln .
Grüßle Capper
Ich habe folgendes Problem, ich möchte einem SQL Statement eine Shell Variable übergeben. Bislang hat das Script quasi standalone und händisch funktioniert, jetzt aber soll es automatisiert laufen.
Nun zum Scriptaufbau, das Script ist in 3 Teile unterteilt
* Erster Teil: Errechnen und ausgeben des Datums des Vortages
* Zweiter Teil: Daten aus der DB auslesen
* Dritter Teil: Aufbereiten der Daten zur Weiterverarbeitung
In Teil Eins, wird also das Datum des Vortages errechnet, in die benötigte Form formatiert und dann in eine Variable geschrieben. Diese Variable sollte nun verwendet werden um in Teil Zwei die Daten aus der DB auszulesen. Nun ist aber mein Problem, das ich nicht weis wie ich die Variable an SQL übergeben muss, damit SQL diese weiterverwendet.
Hier die verschiedenen Aufruf-Versuche von mir mit der entsprechenden Ausgabe:
Code1:
Code:
.
.........
export var1="$Tg-$Mon-$jh"
#echo $var1
export var2="$Tg.$smon.$sjh"
# Anmelden an SQLPLUS und auslesen der Redologanzahl des Vortags
sqlplus username/passwort <<$var2
SET heading OFF
SET pages 0
SET echo OFF
SET feed OFF
SET trimout ON
SET trims ON
spool /watcher/primus/program/hornek/temp/redo_$1.log
SELECT TRUNC(FIRST_TIME),
COUNT(SEQUENCE#)
FROM v\$loghist
WHERE FIRST_TIME >= TO_DATE( '$1', 'DD.MM.YYYY' )
AND FIRST_TIME < TO_DATE( '$1', 'DD.MM.YYYY' ) + 1
GROUP BY TRUNC(FIRST_TIME);
spool off
exit;
Ausgabe1:
SQL*Plus: Release 9.2.0.6.0 - Production on Wed Apr 11 11:20:43 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> 2 3 4 5 6 SQL> SQL> Disconnected from Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
Code2:
Code:
.........
export var1="$Tg-$Mon-$jh"
#echo $var1
export var2="$Tg.$smon.$sjh"
# Anmelden an SQLPLUS und auslesen der Redologanzahl des Vortags
sqlplus username/passwort <$var2
SET heading OFF
SET pages 0
SET echo OFF
SET feed OFF
SET trimout ON
SET trims ON
spool /watcher/primus/program/hornek/temp/redo_$1.log
SELECT TRUNC(FIRST_TIME),
COUNT(SEQUENCE#)
FROM v\$loghist
WHERE FIRST_TIME >= TO_DATE( '$1', 'DD.MM.YYYY' )
AND FIRST_TIME < TO_DATE( '$1', 'DD.MM.YYYY' ) + 1
GROUP BY TRUNC(FIRST_TIME);
spool off
exit;
Ausgabe2:
./redo_machen[196]: 11.04.2007: cannot open
./redo_machen[197]: SET: not found
./redo_machen[198]: SET: not found
./redo_machen[199]: SET: not found
./redo_machen[200]: SET: not found
./redo_machen[201]: SET: not found
./redo_machen[202]: SET: not found
./redo_machen[203]: spool: not found
./redo_machen[203]: syntax error at line 204 : `(' unexpected
Kann mir hier jemand weiterhelfen? Bin schon wieder am verzweifeln .
Grüßle Capper
Zuletzt bearbeitet: