我的批处理文件名为 export.bat.内容为:
expdp rfiduser/jky_rfid directory=rfidnew dumpfile=myusertab1.dmp logfile=myusertab1.log tables=cc_info1,cc_info2,cc_car目的就是想让它每天可以自动从数据库中导出数据,遇到问题是: dumpfile=myusertab1.dmp ,这名字会重复,只能手动把他删除,才能导入新的数据。请教各位大侠有什么好方法吗?或者用其他数据备份方法。

解决方案 »

  1.   

    如果是在linux或unix下可以通过这种方式设置,然后通过corntab配置一个任务定时调用数据库自动备份设置
    备份脚本: /home/oracle/backup/ora-bacupORACLE_HOME=/oracle/product/10g;
    export ORACLE_HOME
    ORACLE_SID=orcl;
    export ORACLE_SID
    rq=`date +%m%d`
    /oracle/product/10g/bin/exp dbusername/password file=/home/oracle/backup/orabak/
    ccatslbr$rq.dmp以上脚本要成功执行必须先在数据库中建立一个名为 “dump_dir” 的 Directory对象,以sys用户登录,执行以下命令:
    CREATE DIRECTORY dump_dir as '/home/oracle/backup/orabak;
    GRANT read, write ON DIRECTORY dump_dir to dbusername;
    任务设置(每星期天或星期一凌晨2:30备份一次):
    crontab –e
    30 2 * * 6 /home/oracle/backup/ora-backup
      

  2.   

    批处理文件 export.bat.内容改为:
    set rq=%date:~0,-4%
    set rq=%rq:-=% 
    expdp rfiduser/jky_rfid directory=rfidnew dumpfile=myusertab1%rq%.dmp logfile=myusertab1%rq%.log tables=cc_info1,cc_info2,cc_car 
    导出数据名为myusertab120090421.dmp,根据每天日期产生就不会重了
      

  3.   

    能给我解释下
    set rq=%date:~0,-4% 
    set rq=%rq:-=% 
    的意思吗?万分感谢
      

  4.   

    你好!我试验了下你的方法。第一次可行,出来3个文件:MYUSERTAB120090421.DMP,myusertab1.log,.DMP(前面没有名字,不知道怎么生成的),
    然后我把系统时间改成22号。就会报d:/rfidnew/.dmp文件已经存在。而且myusertab1.log 也会报不可以有多个log文件。
    有没有一种办法可以删除那已经生成.DMP文件呢!或者不让那文件出来!
      

  5.   


    挺高深的,得到了yyymmdd这个格式的日期, 和1楼的类似,都是得到日期,就可以拼在文件名后面。在按日期生成备份文件的这样处理方式中,一般在备份成功后,还会写个命令,用来删除n天以前备份的数据。否则要么备份目录下数据量越来越大,要么需要人工去删除。
      

  6.   


    这是我在windows下的一个批处理。exp techline/techline@techline file=F:\backupzxf\%date:~0,10%.dmp log=F:\backupzxf\%date:~0,10%.log 
    compress=n buffer=8092 consistent=y direct=n constraints=y feedback=10000  
    grants=y record=y indexes=y triggers=y rows=y 然后通过"在程序->附件->系统工具->任务计划"创建就行了
      

  7.   

    如果不需要保留n天的数据,只保留最近一份的话,还是可以用固定名称的文件。在备份前先删除固定名称.dmp.bak,然后将固定名称.dmp和log文件改名,加个.bak,然后再开始备份。 就是先删除bak文件,然后把dmp改名,然后备份。