利用 Windows 原生任務排程器觸發批次檔,批次檔調用 exp 導出、WinRAR 壓縮、移動至備份目錄,實現零成本自動化備份。
oracle_backup.bat)@ECHO OFF
REM ===== 設定日期字串 YYYYMMDD =====
SET rq=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
REM 注:%DATE% 格式視系統地區設定而異,建議用 WMIC 取得標準格式:
REM FOR /F "tokens=2 delims==" %%I IN ('WMIC OS GET LocalDateTime /VALUE') SET rq=%%I
SET rq=%rq:~0,8%
REM ===== 導出參數 =====
SET ORACLE_SID=orcl
SET EXP_USER=system/your_password@orcl
SET BACKUP_DIR=D:\backup
SET LOG_DIR=D:\backup\log
SET RAR_PATH="C:\Program Files\WinRAR\rar.exe"
REM ===== 執行導出 =====
%ORACLE_HOME%\bin\exp %EXP_USER% FILE=%BACKUP_DIR%\bak_%rq%.dmp FULL=Y LOG=%LOG_DIR%\exp_%rq%.log BUFFER=65536
IF ERRORLEVEL 1 (
ECHO [%DATE% %TIME%] EXPORT FAILED >> %LOG_DIR%\backup_status.log
GOTO END
)
REM ===== 壓縮備份 =====
%RAR_PATH% a -df -ep1 %BACKUP_DIR%\bak_%rq%.rar %BACKUP_DIR%\bak_%rq%.dmp
IF ERRORLEVEL 1 (
ECHO [%DATE% %TIME%] RAR FAILED >> %LOG_DIR%\backup_status.log
GOTO END
)
REM ===== 移動至歸檔目錄(可加網路路徑)=====
MOVE /Y %BACKUP_DIR%\bak_%rq%.rar D:\databasebackup\
ECHO [%DATE% %TIME%] BACKUP SUCCESS >> %LOG_DIR%\backup_status.log
:END
| 參數 | 說明 |
|---|---|
| FULL=Y | 完整資料庫導出(需 DBA 權限) |
| BUFFER=65536 | 導出緩衝區 64KB,提升大表導出效能 |
| rar a -df | 添加檔案至壓縮包,壓縮後刪除源檔 |
| rar -ep1 | 排除基礎路徑,僅存相對路徑,解壓更乾淨 |