linux 下备份oracle 数据库,是通过脚本实现的,具体如下:
#!/bin/sh 
a=$(date +%Y%m%d)
echo $a
/u01/app/oracle/product/11.1.0/db_1/bin/exp username/password file=/oraclebak/testdb_$a.dmp现问题如下:
1、上述脚本只有备份一个数据库,我还有几个也需要备份,如何将其他数据库的备份脚本 放在上述一个脚本中
2、上述备份后,我如何通过脚本脚本自动删除以前备份的.dmp文件,文件格式是:a_20091020.dmp ,比如超过5天的数据就自动

解决方案 »

  1.   

    由于对shell 脚本不是太懂,请高手指点下在线等~~~~~~~~~~~~~~·
      

  2.   

    1、首先建议不要把备份放在数据库所在的服务器上。
    2、你备份出来的应该只是用户所在的数据库。其他数据可以以同样方式备份。
    3、我备份一般放在windows 200X 环境,所以是dos的命令。仅供参考。如下
    echo off
    echo **********************************************
    echo  ************【XXX备份】**************
    echo **********************************************
    echo *****以下30天以前的文件将被删除!…………
    forfiles /p "F:\XXX" /d -30 /c "cmd /c echo @path"
    forfiles /p "F:\XXX" /s /m *.* /d -30 /c "cmd /c del /f /q @path"
    echo *****30天以前的旧文件已被删除!…………
    echo *****开始备份文件…………
    exp "username/password"@dbname file=F:\XXX\%date:~11%(%date:~0,10%).dmp log=F:\XXX\%date:~11%(%date:~0,10%).log
    C:\"Program Files\WinRAR\winrar.exe" a F:\XXX\%date:~11%(%date:~0,10%).rar F:\XXX\%date:~11%(%date:~0,10%).dmp
    echo **************年/月/日**************
    date /t
    echo ************** 时 间 ***************
    time /t
    echo **********备份结束!**********
    exit希望对你有所帮助。
      

  3.   

    删除n天前的数据,linux环境下。
    google了个linux的东西,可能对你有用,连接如下
    http://yaksayoo.blog.51cto.com/510938/155237
      

  4.   

    1.多个用户可以这样子操作:
    #获得要备份的用户
    sqlplus system/manager@数据库<<%%  > /dev/null
    SPOOL user.list;
    SELECT  USERNAME  FROM dba_users WHERE 条件 ;
    SPOOL OFF ;#读取user.list
    for i in `cat user.list`
    do
     exp......
    done
      

  5.   

    2.可以建议你每周都一天天备份,然后下周一备份就把上周一删除!
    这样子就可以
    #抓取日期判断星期几?
    LANG=en_US
    wans=`date|awk '{print $1}'`   
    case $wans in
       Mon) cd ../Mon;; --指定相关目录
       Tue) cd ../Tue;;
       Wed) cd ../Wed;;   
       Thu) cd ../Thu;;
       Fri) cd ../Fri;;
       Sat) cd ../Sat;;
       Sun) cd ../Sun;;
    esac
    rm -rf   --删除相关目录下的文件!