需要每天自动备份oracle数据库(用exp导出几个表),尝试用crontab来执行。我写了一段shell脚本如下:
#!/bin/sh
#name:backupdb.sh
exp system/manager tables=students log=/usr/hezhiroy/xxx.log file=/usr/hezhiroy/xxx.dmp >/dev/null 2>$1
这个脚本在终端下手动执行一点问题没有,当我把它加到crontab文件中:0 3 * * * /usr/hezhiroy/backupdb.sh >yyy.log后,用crontab -l 也可以看到该条目,可是到了指定的时间,其它的条目都顺利执行,唯独这一条不行,请高手指点!!!
(我这两天一共只睡了10个小时,程序员的命真苦啊......呵呵,祝大家新年快乐)

解决方案 »

  1.   

    不好意思脚本是这个:#!/bin/sh 
    #!/bin/sh  
    #name:backupdb.sh 
    exp system/manager tables=students log=/usr/hezhiroy/xxx.log file=/usr/hezhiroy/xxx.dmp >/dev/null 2>$1 
      

  2.   

    不好意思脚本是这个:
    #!/bin/sh  
    #name:backupdb.sh 
    exp system/manager tables=students log=/usr/hezhiroy/xxx.log file=/usr/hezhiroy/xxx.dmp >/dev/null 2>$1 
      

  3.   

    1.在d:盘中建立备份文件夹,如:d:\数据库备份;再建立5个(最多7个)子目录,如d:\数据库备份\星期一,d:\数据库备份\星期二,......,如此可保证每周的备份;  
    2.在d:\数据库备份目录下建立5个批处理文件,如:星期一.bat(可为7个);  
    3.编辑星期一.bat,写入:  
    exp  system/manager  owner=(test1)  file=d:\数据库备份\星期一\test1.dmp  
    log=d:\数据库备份\星期一\test1.log  buffer=655000;  
    (注意有几个库写几个)  
     
    4.将批理文件加入“控制面板”、“任务计划”、“备份”、“每天”,时间可为凌晨1-3点,OK!
      

  4.   

    如果手工执行可以,自动执行不行,应该是环境变量问题
    在SHELL脚本中把ORACLE的环境变量都加上
    主要相关的 我记得是ORACLE_HOME,PATH,LD_LIBRARY_PATH等等,别的最好也加上,反正是粘贴拷贝
      

  5.   

    export ORACLE_HOME=....
    export ORACLE_SID=....
    把这两句加到你的脚本前面,然后就可以了
      

  6.   

    你的环境变量一般在profile中设,而profile在登陆时执行,cron执行时只开了个su的进程。所以每执行profile
      

  7.   

    在写CRON的EXP语句前,别忘记把这个用户下的PROFILE文件执行一下~
      

  8.   

    是环境变量的问题,你如果用root身份运行的话,建议在脚本中写成 su - oracle -c "exp ...."