生產環境備份自動化需解決三大痛點:導出執行、文件壓縮、歷史清理、完成通知。本文提供開箱即用的批處理方案,整合 expdp、WinRAR、forfiles、VBS 郵件發送。
@echo off
REM 環境變量配置
SET USERNAME=SYSTEM
SET USERPASSWD=123456
SET SERVICENAME=QEWAY
SET SCHEMASNAME=ISCOP
SET RARTOOL=C:\Program Files\WinRAR
SET DBBACKUPPATH=D:\DBBAK
SET DBADIRECTORIES=DBBAK
REM 動態生成文件名:YYYYMMDD_HHMM
FOR /F "tokens=1-3 delims=/ " %%i IN ('date /t') DO SET FILENAMEDT=%%i%%j%%k
FOR /F "tokens=1,2 delims=: " %%i IN ('time /t') DO SET FILENAMETM=%%i%%j
SET DBBACKUPFILENAME=QEWAY_%FILENAMEDT%-%FILENAMETM%
:main
ECHO Exporting schemas.......
expdp %USERNAME%/%USERPASSWD%@%SERVICENAME% ^
DUMPFILE=%DBADIRECTORIES%:%DBBACKUPFILENAME%.dmp ^
SCHEMAS=%SCHEMASNAME% ^
LOGFILE=%DBADIRECTORIES%:%DBBACKUPFILENAME%.log
ECHO Done exporting schemas.
REM 壓縮並清理原始 DMP
IF EXIST %DBBACKUPPATH%\%DBBACKUPFILENAME%.RAR DEL %DBBACKUPPATH%\%DBBACKUPFILENAME%.RAR
"%RARTOOL%\winrar.exe" a -ep %DBBACKUPPATH%\%DBBACKUPFILENAME%.RAR %DBBACKUPPATH%\%DBBACKUPFILENAME%.dmp
DEL %DBBACKUPPATH%\%DBBACKUPFILENAME%.dmp
ECHO ...Compression complete
REM 清理 30 天前備份
FORFILES /P "%DBBACKUPPATH%" /M *.RAR -D -30 /C "CMD /C DEL /F @PATH"
REM 郵件通知
START D:\DBBAK\Batch_notification_Daily.vbs
EXIT
| 模塊 | 技術點 |
|---|---|
| 日期時間解析 | FOR /F "tokens=..." %%i IN ('date /t') 兼容中英文格式 |
| Data Pump 導出 | expdp 使用 Directory Object (DBADIRECTORIES),需預建 CREATE DIRECTORY DBBAK AS 'D:\DBBAK' |
| WinRAR 壓縮 | a -ep 添加文件、排除路徑;路徑含空格需雙引號 |
| 歷史清理 | FORFILES -D -30 精確按天刪除,無需第三方工具 |
| 郵件通知 | VBS 調用 CDO.Message,配置 SMTP 服務器/端口/認證 |
NameSpace = "https://schemas.microsoft.com/cdo/configuration/"
Set Email = CreateObject("CDO.Message")
Email.From = "XXXX@Exchange.com"
Email.To = "XXXX@163.com"
Email.Subject = "Gongxtpt Batch Daily Task"
Email.Textbody = "Gongxtpt Batch Daily Task was done!! Starting at 00:00AM"
With Email.Configuration.Fields
.Item(NameSpace & "sendusing") = 2
.Item(NameSpace & "smtpserver") = "10.0.0.12"
.Item(NameSpace & "smtpserverport") = 25
.Item(NameSpace & "smtpauthenticate") = 0
.Item(NameSpace & "sendusername") = ""
.Item(NameSpace & "sendpassword") = ""
.Update
End With
Email.Send
Set Email = Nothing
GRANT READ, WRITE ON DIRECTORY DBBAK TO SYSTEM;winrar.exe 路徑