首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 批量備份腳本三大模式:按日期保留、按日壓縮循環、7天滾動目錄切換

     編輯:Oracle 資料庫基礎

前言

針對不同保留策略與存儲預算,本文提供三種成熟的 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...)。

模式三:7天滾動目錄切換 (無需壓縮工具)


@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 天前的目錄,零維護成本。

關鍵最佳實踐

  1. 日期變量驗證:部署前在目標服務器 cmd 執行 echo %date% echo %time% 確認格式。
  2. 日誌留存:即使壓縮刪除 .log,建議將關鍵日誌 (錯誤、行數) 追加寫入集中日誌文件。
  3. 備份驗證:定期在測試庫執行 IMP ... SHOW=Y 或抽樣導入驗證備份可用性。
  4. 權限最小化:備份專用用戶,僅授 EXP_FULL_DATABASE/SELECT ANY TABLE 等必要權限。
  5. 網絡/磁盤監控:腳本返回碼非 0 時觸發告警 (郵件/短信/企業微信)。

總結

三種模式覆蓋「長期歸檔、月度壓縮、極簡滾動」主流需求。核心不在腳本複雜度,而在於「日期變量正確性、備份可驗證性、告警可達性」三大工程化保障。根據 RPO/RTO 選擇模式,並納入運維體系定期演練。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved