針對不同保留策略與存儲預算,本文提供三種成熟的 Oracle EXP 批量備份腳本模式:
1. 按日期命名保留歷史 (適合合規審計)
2. 按日壓縮月度循環 (平衡空間與恢復點)
3. 7天滾動目錄切換 (極簡自動覆蓋,無需手動清理)
@echo off
REM 文件名:Oracle2024-01-15.dmp / .log
exp system/manager file=d:\backup\Oracle\Oracle%date:~0,10%.dmp owner=system log=d:\backup\Oracle\Oracle%date:~0,10%.log
REM 或按星期循環 (7個文件)
exp system/manager file=d:\backup\Oracle\Oracle%date:~11,3%.dmp owner=system log=d:\backup\Oracle\Oracle%date:~11,3%.log
配合任務計劃每日 00:00 執行。注意:%date% 格式因系統區域設置而異,部署前必須 echo %date% 驗證截取參數。
@echo off
set filename=e:\data_bak\%date:~8,2%日
exp userid=user/pass@esdata file=%filename%.dmp owner=user indexes=y grants=y constraints=y compress=y log=%filename%.log
rar a %filename%.rar %filename%.*
del %filename%.dmp
del %filename%.log
亮點:
%date:~8,2% 取「日」(01-31) → 自然月度循環。compress=y 導出時壓縮 (EXP 內建),再經 RAR 二次壓縮,極大節省空間。.rar。rar.exe 放入 System32 或配置 PATH。set filename=e:\data_bak\%date:~0,3% (取 Mon/Tue...)。
@ECHO OFF
SET BACKPATH=d:\
ECHO 准備備份數據庫
REM 7天一個循環,目錄名 ONE~SEVEN
IF EXIST %BACKPATH%\ONE GOTO ONE
IF EXIST %BACKPATH%\TWO GOTO TWO
IF EXIST %BACKPATH%\THREE GOTO THREE
IF EXIST %BACKPATH%\FOUR GOTO FOUR
IF EXIST %BACKPATH%\FIVE GOTO FIVE
IF EXIST %BACKPATH%\SIX GOTO SIX
IF EXIST %BACKPATH%\SEVEN GOTO SEVEN
ECHO E> %BACKPATH%\ONE
:ONE
SET BACKPATH_FULL=%BACKPATH%\ONE
REN %BACKPATH%\ONE TWO
GOTO BACK
:TWO
SET BACKPATH_FULL=%BACKPATH%\TWO
REN %BACKPATH%\TWO THREE
GOTO BACK
:THREE
SET BACKPATH_FULL=%BACKPATH%\THREE
REN %BACKPATH%\THREE FOUR
GOTO BACK
:FOUR
SET BACKPATH_FULL=%BACKPATH%\FOUR
REN %BACKPATH%\FOUR FIVE
GOTO BACK
:FIVE
SET BACKPATH_FULL=%BACKPATH%\FIVE
REN %BACKPATH%\FIVE SIX
GOTO BACK
:SIX
SET BACKPATH_FULL=%BACKPATH%\SIX
REN %BACKPATH%\SIX SEVEN
GOTO BACK
:SEVEN
SET BACKPATH_FULL=%BACKPATH%\SEVEN
REN %BACKPATH%\SEVEN ONE
GOTO BACK
:BACK
EXP TESTUSER/TEST FILE=%BACKPATH_FULL%.DMP
SET BACKPATH=
SET BACKPATH_FULL=
EXIT
機制:利用目錄重命名實現循環指針,每次備份自動覆蓋 7 天前的目錄,零維護成本。
cmd 執行 echo %date% echo %time% 確認格式。IMP ... SHOW=Y 或抽樣導入驗證備份可用性。EXP_FULL_DATABASE/SELECT ANY TABLE 等必要權限。三種模式覆蓋「長期歸檔、月度壓縮、極簡滾動」主流需求。核心不在腳本複雜度,而在於「日期變量正確性、備份可驗證性、告警可達性」三大工程化保障。根據 RPO/RTO 選擇模式,並納入運維體系定期演練。