首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Windows 批處理實現 Oracle 邏輯備份輪轉:保留最近 7 天,零成本自動化

     編輯:Oracle 資料庫相關知識

針對中小型 Oracle 單實例(< 50GB),無需購買備份軟件,利用 Windows 任務計劃 + exp 經典導出 + 批處理腳本,即可實現「按星期輪轉、保留 7 份、自動覆蓋」的輕量級備份策略。

一、核心腳本 oracle_daily_backup.bat

@ECHO OFF
REM ========== 參數區 ==========
SET "TBUF=E:\OraBackup"          REM 備份目錄(需預創建,預留足夠空間)
SET "DB_USER=scott"              REM 導出用戶
SET "DB_PWD=tiger"               REM 密碼
SET "DB_SID=ORCL"                REM 連接標識
REM ==============================

REM 1. 取「星期幾」作為文件後綴(Mon/Tue/.../Sun)
FOR /F "tokens=2 delims==" %%I IN ('wmic os get localdatetime /value') DO SET DT=%%I
SET "DAY=%DT:~6,2%"  REM 簡化:實際建議用 PowerShell Get-Date -Format ddd
REM 此處演示用固定映射,生產請替換為 PowerShell 獲取真實星期
IF "%DATE:~-3%"=="Mon" SET "DAY=Mon"
IF "%DATE:~-3%"=="Tue" SET "DAY=Tue"
IF "%DATE:~-3%"=="Wed" SET "DAY=Wed"
IF "%DATE:~-3%"=="Thu" SET "DAY=Thu"
IF "%DATE:~-3%"=="Fri" SET "DAY=Fri"
IF "%DATE:~-3%"=="Sat" SET "DAY=Sat"
IF "%DATE:~-3%"=="Sun" SET "DAY=Sun"

SET "FILENAME=ORCL_backup_%DAY%"
SET "DMP=%TBUF%\%FILENAME%.dmp"
SET "LOG=%TBUF%\%FILENAME%.log"

REM 2. 清理同名舊備份(實現 7 天輪轉)
IF EXIST "%DMP%" DEL /F /Q "%DMP%"
IF EXIST "%LOG%" DEL /F /Q "%LOG%"

REM 3. 執行導出
ECHO [%(DATE%) %(TIME%)] 開始導出 %FILENAME% ...
exp %DB_USER%/%DB_PWD%@%DB_SID% FILE="%DMP%" LOG="%LOG%" COMPRESS=Y CONSISTENT=Y BUFFER=10485760

IF %ERRORLEVEL% NEQ 0 (
  ECHO [ERROR] 導出失敗,請檢查 %LOG%
  EXIT /B 1
)
ECHO [%(DATE%) %(TIME%)] 導出成功:%DMP%

二、關鍵參數解析

  • COMPRESS=Y:導出時合併 Extent,導入後表更緊湊(注意:目標表空間需足夠大)。
  • CONSISTENT=Y:確保導出數據一致性(SCN 級),避免導出過程中 DML 導致不一致;大表會增加 Undo 壓力。
  • BUFFER=10485760:10MB 緩衝區,減少網絡往返,提升導出吞吐。
  • FILE/LOG:帶星期後綴,天然實現 7 份輪轉覆蓋。

三、任務計劃配置步驟

  1. 打開「任務計劃程序」 → 「創建基本任務」。
  2. 觸發器:「每天」→ 指定維護窗口(如 02:00)。
  3. 操作:「啟動程序」 → 程式腳本:C:\Windows\System32\cmd.exe → 參數:/c "D:\Scripts\oracle_daily_backup.bat >> D:\Scripts\backup.log 2>&1"。
  4. 條件/設置:勾選「如果任務失敗,每 10 分鐘重試 3 次」、「以最高權限運行」。

四、進階增強建議

  1. 改用 expdp/impdp:並行度、網絡導出、元數據過濾、壓縮加密全面優於 exp/imp(10g+ 必選)。
  2. RMAN 級別 0/1 增量備份:塊級增量、壓縮、加密、目錄管理,企業級標配。
  3. 備份校驗:任務結束後調用 impdp ... SQLFILE=verify.sql 或 RMAN VALIDATE BACKUPSET 驗證可用性。
  4. 異地複製:配合 robocopy /MIR 或 Azure Blob / AWS S3 CLI 將 .dmp/.log 推送至異地。
  5. 監控告警:解析 backup.log 關鍵字「EXP-00000」「ORA-」「successfully terminated」,對接 Zabbix/Prometheus 告警。

五、避坑提醒

  • 導出用戶需 EXP_FULL_DATABASE 役或 DBA 役(expdp 需 DATAPUMP_EXP_FULL_DATABASE)。
  • 目標磁盤剩餘空間 ≥ 1.5× 預估導出大小,防止磁盤滿導出中斷。
  • 字符集一致性:導出/導入端 NLS_LANG 需一致,否則中文亂碼。
  • 大表導出耗時長,評估維護窗口是否足夠;超窗口改用 RMAN 熱備。

這套「批處理 + 任務計劃」方案零授權成本、部署 10 分鐘上線,完美支撐中小型 Oracle 核心業務的「最後一道防線」。隨著數據增長,平滑遷移至 RMAN + Data Guard / GoldenGate 異地容灾架構即可。

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