使用oracle数据库用户建立数据库冷备脚本:
## 备份trade用户数据
## 2016-02-05 11?00
/home/oracle/product/11gR2/bin/exp trade/trade@ORA11G file="/home/oracle/trade/`date +%Y%m%d%H%M%S`.dmp" log="/home/oracle/trade/`date +%Y%m%d%H%M%S`.log";
使用root用户建立任务计划
*/5 * * * * sh /home/oracle/trade/dmp.sh
到执行时间后未执行,mail提示:
From root@hundsun.com Thu Feb 4 14:40:01 2016
Return-Path: <root@hundsun.com>
X-Original-To: oracle
Delivered-To: oracle@hundsun.com
From: root@hundsun.com (Cron Daemon)
To: oracle@hundsun.com
Subject: Cron <oracle@hundsun> /home/oracle/product/11gR2/bin/exp trade/trade@ORA11G file="/home/oracle/trade/`date +
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/oracle>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=oracle>
X-Cron-Env: <USER=oracle>
Date: Thu, 4 Feb 2016 14:40:01 +0800 (CST)
Status: RO
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
解决方法:
crontab执行时,是没有在哪个帐户下执行这样的概念的,所以你想用的那个帐户下的环境变量在脚本里用到的都需要在crontab里重新设置一下,出现这样的问题,在脚本里添加环境变量。然后export就可以了。
<pre name="code" class="plain">## 备份trade用户数据
## 2016-02-05 11?00
## oracle 参数设置
ORACLE_BASE=/home/oracle/product
ORACLE_HOME=/home/oracle/product/11gR2
ORACLE_SID=ora11g
export ORACLE_BASE ORACLE_HOME ORACLE_SID
/home/oracle/product/11gR2/bin/exp trade/trade@ORA11G file="/home/oracle/trade/`date +%Y%m%d%H%M%S`.dmp" log="/home/oracle/trade/`date +%Y%m%d%H%M%S`.log";