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

Oracle 備份恢復實戰:批處理腳本自動化與最佳實踐

     編輯:Oracle 資料庫基礎

前言

數據備份是資料庫運維的生命線。本文介紹如何結合 Windows 任務計劃、批處理腳本與 Oracle EXP 導出工具,實現自動化、按日期命名、循環覆蓋的備份策略,並提供壓縮備份、日誌記錄等進階方案。

方案一:按日期命名的每日備份(保留歷史)

1. 建立批處理腳本 backup.bat

@echo off
REM 導出系統用戶數據,文件名含日期:Oracle2024-01-15.dmp
exp system/manager file=d:\backup\Oracle\Oracle%date:~0,10%.dmp owner=system log=d:\backup\Oracle\Oracle%date:~0,10%.log

關鍵點:%date:~0,10% 截取前 10 位字符(如 "2024-01-15"),具體格式需在命令行執行 echo %date% 確認。

2. 配置 Windows 任務計劃

  • 觸發器:每日 00:00 執行
  • 操作:啟動程式 d:\Oracle\backup.bat

3. 執行結果

每天生成 OracleYYYY-MM-DD.dmp 與 .log 文件,歷史備份自動保留,便於時間點恢復。

方案二:按星期循環備份(節省空間)

exp system/manager file=d:\backup\Oracle\Oracle%date:~11,3%.dmp owner=system log=d:\backup\Oracle\Oracle%date:~11,3%.log

%date:~11,3% 取星期縮寫(如 "Mon"),實現 7 天循環覆蓋,僅保留最近一週備份。

方案三:進階備份腳本(壓縮+日誌+自動清理)

@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),實現月度循環。
  • RAR 壓縮:需將 rar.exe 放入系統 system32 目錄或配置 PATH。
  • 自動清理:備份完成後刪除原始 .dmp 和 .log,僅保留壓縮包。
  • 改為按週:將 set filename=... 改為 %date:~0,3% 取星期縮寫。

關鍵注意事項

  1. 日期格式差異:不同系統/語言版本 %date% 格式不同,務必先用 echo %date% 驗證截取參數。
  2. 時間精度:需精確到分秒作為文件名時,改用 %time% 並同理截取。
  3. 權限與路徑:確保執行帳戶有寫入備份目錄權限,Oracle 客戶端環境變量(ORACLE_HOME, PATH, TNS_ADMIN)配置正確。

總結

通過簡單的批處理腳本配合任務計劃,即可構建可靠、低維護成本的 Oracle 備份體系。根據業務 RPO/RTO 要求,靈活選擇「保留歷史」或「循環覆蓋」策略,並善用壓縮節省磁盤空間。

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