这个自动备份批处理脚本来自网络,在Oracle 10g WINDOWS 2003环境下测试通过。

为了数据安全我们经常需要备份数据库的数据,笔者的Oracle 10g运行在WINDOWS 2003环境下,下面是这个批处理文件的代码:
 
 
 
  
  1. @echo off  
  2. REM ###########################################################    
  3. REM # Windows Server 2003下Oracle数据库自动备份批处理脚本    
  4. REM ###########################################################    
  5. REM 取当前系统时间,可能因操作系统不同而取值不一样    
  6. set CURDATE=%date:~0,4%%date:~5,2%%date:~8,2%  
  7. set CURTIME=%time:~0,2%  
  8. REM 小时数如果小于10,则在前面补0  
  9. if "%CURTIME%"==" 0" set CURTIME=00  
  10. if "%CURTIME%"==" 1" set CURTIME=01  
  11. if "%CURTIME%"==" 2" set CURTIME=02  
  12. if "%CURTIME%"==" 3" set CURTIME=03  
  13. if "%CURTIME%"==" 4" set CURTIME=04  
  14. if "%CURTIME%"==" 5" set CURTIME=05  
  15. if "%CURTIME%"==" 6" set CURTIME=06  
  16. if "%CURTIME%"==" 7" set CURTIME=07  
  17. if "%CURTIME%"==" 8" set CURTIME=08  
  18. if "%CURTIME%"==" 9" set CURTIME=09  
  19. set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%  
  20. REM 设置所有者、用户名和密码  
  21. set OWNER=system  
  22. set USER=system  
  23. set PASSWORD=systempassword  
  24. REM 创建备份用目录,目录结构为backup/YYYYMMDD/  
  25. if not exist "backup"                     mkdir backup  
  26. if not exist "backup\%CURDATE%\"          mkdir backup\%CURDATE%\  
  27. set CURDIR=backup\%CURDATE%  
  28. set FILENAME=%CURDIR%\%OWNER%_%CURDATE%_%CURTIME%.DMP  
  29. set EXPLOG=%CURDIR%\%OWNER%_%CURDATE%_%CURTIME%_log.log  
  30. REM 调用ORACLE的exp命令导出用户数据  
  31. REM exp %USER%/%PASSWORD%@DBSample file=%FILENAME% log=%EXPLOG% owner=%OWNER% grants=n  
  32. exp "'%USER%/%PASSWORD% AS SYSDBA'" file=%FILENAME% log=%EXPLOG% owner=%OWNER% grants=n  
  33. exit  
如果需要将备份文件压缩,可以这样:
 
 
  
  1. CD %CURDATE%   
  2. "C:\Program Files\WinRAR\WinRAR.exe" a -df %PREFIX%_%CURDATE%_%CURTIME%.rar * -r 
 
另外,批处理中如果添加一些FTP命令就可以实现将备份文件上传到远程FTP服务器实现异地备份。
这里转载一下实现该功能的批处理:
ftp_upload.bat
 
 
   
  1. @if "%1"=="" goto error_parm 
  2. @if "%2"=="" goto error_parm 
  3.   
  4. @setlocal 
  5. @set server=topic.okbase.net 
  6. @set username=anonymous 
  7. @set password=anonymous 
  8. @set localpath=d:\tool 
  9.   
  10. @echo off 
  11. @echo /******************************/ >>upload.log 
  12. @echo %date% %time% >>upload.log 
  13. @echo upload file start >>upload.log 
  14.   
  15. if not exist %localpath%\%2 goto error_dir_local 
  16.   
  17. echo open %server% > ftp.txt 
  18. echo user %username% >> ftp.txt 
  19. echo %password% >> ftp.txt 
  20. echo cd %1 >> ftp.txt 
  21. echo bye>> ftp.txt 
  22. ftp -s:ftp.txt -n | find "550" 
  23. if not errorlevel 1 @goto error_dir_server 
  24.   
  25.   
  26. echo open %server% > ftp.txt 
  27. echo user %username% >> ftp.txt 
  28. echo %password% >> ftp.txt 
  29. echo cd %1 >> ftp.txt 
  30. echo put %localpath%\%2 >> ftp.txt 
  31. echo bye>> ftp.txt 
  32. ftp -s:ftp.txt -n | find "invalid" 
  33. if not errorlevel 1 @goto error_upload 
  34.   
  35. @echo off 
  36. @echo upload file completed ! >>upload.log 
  37. @goto putok  
  38.   
  39. :putok 
  40. @echo upload %2 successflu ! >>upload.log 
  41. @goto end 
  42.   
  43. :error_dir_server 
  44. @echo server directory error! %1  >>upload.log 
  45. @goto end 
  46.   
  47. :error_dir_local 
  48. @echo local directory error! %localpath%\%2 >>upload.log 
  49. @goto end 
  50.   
  51. :error_upload 
  52. @echo upload file error! %localpath%\%2 >>upload.log 
  53. @goto end 
  54.   
  55. :error_parm 
  56. @echo parameter error(upload.bat   serverpath   localfilename) >>upload.log 
  57. @goto end 
  58.   
  59. :end 
  60. @echo bye. >>upload.log 
  61.   
  62. @endlocal 
需要将批处理的这部分内容替换一下
@set server=topic.okbase.net   -- 你服务器的ftp地址
@set username=anonymous   -- 你服务器的ftp的用户名
@set password=anonymous   -- 你服务器的ftp的用户密码
@set localpath=d:\tool    --你本地上传文件所在的目录
 
 
执行命令格式:  ftp_upload.bat   servername   localfielname