【发布时间】:2022-06-15 11:28:30
【问题描述】:
我有一个 rman bash 脚本,当我执行它时可以使用 (./backup.sh)。 但是当我使用 cronjob 时,它不起作用。 我的脚本如下
backup.sh
rman target / @backup.rcv log=rman.log
backup.rcv
backup format '/backup/rman/backup/%U.arch.rman' filesperset 2 archivelog all delete input; backup format '/backup/rman/backup/%U.datafiles.rman' filesperset 2 incremental level 0 database; backup format '/backup/rman/backup/%U.arch.rman' filesperset 2 archivelog all delete input; backup format '/backup/rman/backup/%U.ctl.rman' current controlfile; delete noprompt obsolete;
我的 cronjob 看起来像这样
crontab -l
5 0 * * * /nas_backup/rman/svbo/backup/L0backup.sh >/dev/null 2>&1
我对这个 rman 和 bash 脚本非常陌生,因此我们将不胜感激
【问题讨论】:
-
您可能需要在脚本中设置 Oracle 环境,例如 ORACLE_HOME、ORACLE_SID、PATH、LD_LIBRARY_PATH。或者,如果您有 oraenv 设置 - 只需在您的脚本中执行 oraenv。
-
crontab 中的环境与 bash 中的环境不同。在您的 crontab 中,将
>/dev/null 2>&1替换为>/tmp/out.log 2>/tmp/err.log。这将在运行时向您显示错误。就像@Pankaj 所说,它很可能缺少一些环境变量,或者 rman 的路径。