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

RMAN 實戰備份腳本:自動化全量+歸檔備份與保留策略

     編輯:關於SqlServer

業務需求與設計目標

針對中小型 Oracle 資料庫(<10GB),制定每日自動化備份策略,滿足以下目標:

  • 執行時間: 每日凌晨 01:00
  • 備份內容: 全量資料庫 + 控制檔 + 歸檔日誌
  • 存放路徑: D:\backup\
  • 歸檔處理: 備份完成後自動刪除已備份的歸檔
  • 保留策略: 保留 7 天,過期自動清理
  • 日誌記錄: 保留操作日誌供稽核

核心 RMAN 腳本

儲存為 E:\OracleScript\backup\database_backup_JSsweb.rman:

RUN {
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
    ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT 'd:/backup/%U';
    BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10
        PLUS ARCHIVELOG FILESPERSET 20
        DELETE ALL INPUT;
    RELEASE CHANNEL CH1;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUPSET;
DELETE NOPROMPT OBSOLETE;

關鍵參數解析

參數說明
SKIP INACCESSIBLE跳過不可讀的資料檔(如已刪除或移動的離線檔案),避免備份中斷
FILESPERSET 10/20控制每個備份集包含的檔案數,平衡並行度與恢復速度
PLUS ARCHIVELOG ... DELETE ALL INPUT備份歸檔日誌並自動刪除已備份的輸入歸檔,釋放 FRA 空間
CONTROLFILE AUTOBACKUP每次結構變更自動備份控制檔,災難恢復關鍵
RETENTION POLICY ... 7 DAYS基於恢復視窗的保留策略,確保可恢復至過去 7 天任意時間點
CROSSCHECK / DELETE OBSOLETE同步目錄與實際檔案,清理過期備份

Windows 排程批次檔

儲存為 E:\OracleScript\backup\database_backup_JSsweb.bat:

@echo off
set ORACLE_SID=JSsweb
rman target / msglog E:\OracleScript\backup\logs\%date:~0,10%.log cmdfile=E:\OracleScript\backup\database_backup_JSsweb.rman

部署排程

  1. 開啟「工作排程器」→「建立基本工作」
  2. 觸發條件:每日 01:00
  3. 動作:啟動程式 E:\OracleScript\backup\database_backup_JSsweb.bat
  4. 完成設定,測試執行並檢查日誌

進階優化建議

  • 依資料庫大小調整通道數(ALLOCATE CHANNEL CH1, CH2...)提升並行度
  • 大型資料庫(百 GB 以上)建議引入增量備份策略,減少全量備份窗口
  • 異地備份:將備份檔同步至遠端儲存或雲端,防範機房級災難
  • 定期演練恢復,驗證備份可用性——「備份是為了更好的恢復」

結語

此腳本已在生產環境穩定運行,適合中小型資料庫的「設定後即忘記」式自動化備份。隨著業務增長,請持續評估並演進備份架構,確保 RPO/RTO 持續滿足業務需求。

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