Leser: 23
exp "nutzer/passwort@DATENBANK" file=/pfad/name.dmp
1 2 3 4 5 6 7 8 9
#!/usr/bin/perl use strict; use warnings; my $path = "PATH=/opt/oracle/product/10.2/db_1/bin:\$PATH"; my $commit = "export PATH"; system($path); system($commit);
Can't exec "export": Datei oder Verzeichnis nicht gefunden at test.pl line 9.
2009-03-25T14:43:17 TaulmarillAchso, dann probier mal einfach $ENV{PATH} anzupassen. Bei meinem kurzen Test (s.u.) hat's anscheinend funktioniert.
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; $ENV{PATH} = "\$PATH=\$PATH:/opt/oracle/product/10.2/db_1/bin"; $ENV{ORACLE_HOME} = "/opt/oracle/product/10.2/db_1"; my $string = "exp \"nutzer/passwort\@DB\" file=/pfad/exp_db.dmp statistics=none FULL=y LOG=/pfad/exp_db.log"; system($string);
QuoteGibt es denn eine Möglichkeit die crontab als Nutzer "oracle" laufen zu lassen?
crontab -u oracle -e
2009-03-25T14:34:42 neposDas mit dem Perl-Script geht nicht, da system() in einer Subshell läuft. Deine Änderungen würden nur in dieser gelten.
QuoteGibt es denn eine Möglichkeit die crontab als Nutzer "oracle" laufen zu lassen?
Ja, du machst einals root. Dadurch kannst du eine eigene Crontab für den Oracle-User erzeugen.Code: (dl )crontab -u oracle -e
2009-03-25T14:38:52 bieberdas ist doch genau das gleiche wie crontab -e als Nutzer oracle oder? Das habe ich gemacht, der cronjob hat aber nicht die ENV von oracle!
QuoteAlso dachte ich mir, baue ich ein kleines Perl-Script, welches ich als cronjob aufrufe, welches die entsprechenden Env-Variablen setzt und gut ist.
QuoteCan't exec "export": Datei oder Verzeichnis nicht gefunden at test.pl line 9.
perldoc -f system
env PATH=foo /bin/sh -c 'echo $PATH'
04 16 * * 1,2,3,4,5,6,0 oracle PATH=/opt/oracle/product/10.2/db_1/bin:\$PATH; export PATH; exp "nutzer/passwort@DATENBANK" file=/pfad/name.dmp