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