我有些问题想请教。 
是关于用批处理备份oracle数据库的。想用他写一个可以以日期为名字备份数据库文件。例如存成20080125.dmp 
并在存储的同时删除之前的文件(就是想一直保留一个月的数据库备份文件)。 以下是我写的,可以存储,但日期中间有-,删除之前文件的还不会写。想请教大家。谢谢大虾!呵呵 
@echo off set dmpname=szsdh-%date:~0,10%-%time:~0,5% 
set dmpname=%dmpname::=-% 
set dmpname=%dmpname: =0% 
echo %dmpname% 
set NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280 
exp user/password@domain file=E:\oracle_backup\%dmpname%.dmp log=E:\oracle_backup\%dmpname%.log怎么删除过去的文件啊??????

解决方案 »

  1.   

    我的思路是把每个月的到处文件放入一月份命名的目录中,然后删除上个月的目录下的文件和上个月的目录。
    脚本如下:
    @echo   off   set   dmpname=szsdh-%date:~0,10%-%time:~0,5%   
    set   dmpname=%dmpname::=-%   
    set   dmpname=%dmpname:   =0%   
    set   year=%date:~0,4%
    set   month=%date:~5,2%
    set   dirname=%year%-%month%
    echo   %dmpname%   
    makedir %dirname%
    set   NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280   
    exp   user/password@domain   file=E:\oracle_backup\%dirname%\%dmpname%.dmp   log=E:\oracle_backup\%dirname%\%dmpname%.log 
    set /A dmonth=%month%-1
    if /I %dmonth% EQU 0 (
    set /A dmonth=1
    set /A dyeay=%year%-1
    )else(
    set /A dyeay=%year%
    )
    set ddirname=%dyear%-%dmonth%
    if exist E:\oracle_backup\%ddirname% (
    cd E:\oracle_backup\%ddirname%
    del *.* /Q
    cd ..
    rd E:\oracle_backup\%ddirname%
    )
      

  2.   

    用rman吧,设置 rman 的 retention 参数就OK了。