Superuser

Autor Thema: Oracle Datenbank Export per Cronjob funktioniert nicht  (Gelesen 11164 mal)

noob222

  • Gast
Hallo, hoffe das ich hier richtig bin, da es sich ja schließlich um ein Datenbank Problem handel :-)

bin auf ein Problem gestossen, was ich nicht lösen kann, obwohl es im Internet mehrere Lösungen dafür gibt.

Ich muss unter einer Solaris 8 Maschine ein Backup für ein System per Cronjob durchführen.
Wenn ich mein Script manual ausführe (also per ./backup.sh) dann klappt alles wunderbar. Aber per Cronjob kann er folgendes nicht finden bzw ausführen:
# Erstellen des Datenbank-Dump-Files
exp $DB_USER/test@$SID file=$BACKUPDIR_TODAY/$DB_EXPORTFILE log=$BACKUPDIR_TODAY/$LOG_DBEXPORTFILE statistics=none compress=yes

als fehlermeldung bekomme ich, das "exp" nicht gefunden werden kann.

da es sich hierbei um eine oracle datenbank handelt, befindet sich "exp" im Verzeichnis: /oracle/OraHome1/bin/exp.

Zudem kann ich in meinem Cronjob kein PATH definieren, da ich eine Fehlermeldung bekomme, was sehr merkwürdig ist, da es sogar auf der Sun Mainpage steht, das ich ein PATH definieren kann. Hier mein Cronjob-Code mit Fehlermeldung:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/oracle/OraHome1/bin
00 22 * * * /hier/der/pfad/zu/meinem/script/backup.sh

Hier die Fehlermeldung
SHELL=/bin/sh
crontab: error on previous line; unexpected character found in line.
PATH=/sbin:/bin:/usr/sbin:/usr/bin
crontab: error on previous line; unexpected character found in line.
crontab: errors detected in input, no crontab file generated.

Da per Cronjob die Umgebungvariablen nicht alle gefunden werden (manuell findet ja der Shell alle Umgebungsvariablen) habe ich mir gedacht, das ich den Pfad zu dem "exp" folgendermassen auf zwei Arten hinzufüge.

# Erstellen des Datenbank-Dump-Files
[glow=red,2,300][b]/oracle/OraHOme1/bin/[/b][/glow]exp $DB_USER/test@$SID file=$BACKUPDIR_TODAY/$DB_EXPORTFILE log=$BACKUPDIR_TODAY/$LOG_DBEXPORTFILE statistics=none compress=yes

zudem habe ich in meinem Script (backup.sh) ganz am Anfang wo man ja die Variablen und Pfade definiert noch folgendes eingefügt:

PATH=/oracle/OraHome1/bin

Aber wiederum erfolglos.

Aber jetzt bekomme ich zu der Fehlermeldung, das "exp" nicht gefunden werden kann, noch eine weitere Fehlermeldung und zwar, das ich überprüfen soll ob ORACLE_HOME gesetzt wurde.

echo $ORACLE_HOME liefert /oracle/OraHome1

Noch als kurze Info. Wenn mein backupr.sh Script per Cronjob läuft, dann werden alle anderen Daten AUßER mein EXPORT geladen und gespeichert. Damit meine ich, das mein Cronjob ausgeführt wird, all seine Aufgabe erledigt nur diesen Export nicht.

Habe viele Varianten versucht um in meinem Cronjob die Pfade per PATH zu setzen aber ohne erfolg. Immer die gleiche Fehlermeldung.

Hat einer vielleicht eine Idee, wie ich meinem Script per Cronjob diesen "exp" Befehl übergeben kann?


sonnenblen.de - Das unabhängige Sun User Forum


Offline maal

  • Global Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1529
  • Ich mag keine Signaturen!
Re: Oracle Datenbank Export per Cronjob funktioniert nicht
« Antwort #1 am: 06. Mai 2007, 13:32:58 »
Hallo,

die Umgebungsvariablen mußt du in deinem Skript setzen und exportieren, in die CRONTAB gehören die nicht rein (deshalb auch die ersten beiden Fehlermeldungen).

Michael

Offline Toktar

  • Sobl Master
  • ****
  • Beiträge: 333
Re: Oracle Datenbank Export per Cronjob funktioniert nicht
« Antwort #2 am: 06. Mai 2007, 18:26:14 »
Mach ein ordentliches export-Script, welches Du per Cron aufrufst.
Der Export klappt deshalb auf der Konsole, da Du als User Oracle mit all seinen Umgebungsvariablen angemeldet bist. In einem per cron aufgerufenen Job fehlen diese vollständig.

Deshalb muss jede Variable in diesem Script erst definiert werden.

export ORACLE_HOME=/opt/oracle/product/10.2.0/db_1
export ORACLE_SID=test
export FNAME=/opt/archive/exp0/dmp_`date '+%u'`
echo `date '+%c'` > $FNAME.time
$ORACLE_HOME/bin/exp system/geheim@$ORACLE_SID file=$FNAME.dmp owner=DB-User log=$FNAME.log statistics=none 2>$FNAME.err
gzip -fv9 $FNAME.dmp

Toktar
--
Jawoll!
Und DNS braucht's nicht, das ist was fuer Weicheier, die sich keine Zahlen merken koennen.
[Karlheinz Boehme in dcsf]