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

Windows 環境 Oracle 自動備份批次腳本:日期命名、保留 30 天、exp 導出

     編輯:Oracle 教學

Windows 環境 Oracle 自動備份批次腳本:日期命名、保留 30 天、exp 導出

針對 Windows 平台 Oracle 資料庫,提供一個開箱即用的批次檔 (.bat),功能包含:以 YYYYMMDD_HHMMSS 命名備份檔、自動建立日期目錄、呼叫 exp 導出指定 Schema、刪除 30 天前備份與日誌。可配合 Windows 工作排程器實現無人值守備份。

腳本完整內容 (oracle_auto_backup.bat)

@echo off
echo ================================================
echo Windows 環境 Oracle 資料庫自動備份腳本
echo 1. 使用當前日期時間命名備份檔
echo 2. 自動刪除 30 天前備份
echo ================================================

:: 取得日期 YYYYMMDD
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%

:: 取得時間 HHMMSS (補零處理)
set CURTIME=%time:~0,2%
if "%CURTIME:~0,1%"==" " set CURTIME=0%CURTIME:~1,1%
set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%

:: 資料庫連線參數 (請修改為實際值)
set USER=carbon_zhenjiang_bak
set PASSWORD=carbon_zhenjiang_bak
set DATABASE=orcl

:: 備份目錄
if not exist "D:\backup\data\%BACKUPDATE%\" mkdir "D:\backup\data\%BACKUPDATE%\"
if not exist "D:\backup\log\%BACKUPDATE%\" mkdir "D:\backup\log\%BACKUPDATE%\"
set DATADIR=D:\backup\data\%BACKUPDATE%
set LOGDIR=D:\backup\log\%BACKUPDATE%

:: 執行 exp 導出
exp %USER%/%PASSWORD%@%DATABASE% file=%DATADIR%\%USER%_%BACKUPDATE%%CURTIME%.dmp log=%LOGDIR%\log_%BACKUPDATE%%CURTIME%.log

:: 刪除 30 天前檔案
forfiles /p "%DATADIR%" /s /m *.* /d -30 /c "cmd /c del @path"
forfiles /p "%LOGDIR%" /s /m *.* /d -30 /c "cmd /c del @path"

exit

部署步驟

  1. 將上述內容存為 D:\scripts\oracle_auto_backup.bat。
  2. 修改 USER/PASSWORD/DATABASE 與 D:\backup 路徑。
  3. 開啟「工作排程器」 → 建立基本工作 → 觸發器設為「每天」凌晨 02:00 → 動作「啟動程式」選擇 cmd.exe,引數 /c D:\scripts\oracle_auto_backup.bat。
  4. 勾選「不管使用者是否登入都要執行」、以最高權限執行。

關鍵技術點

進階擴充建議

  • 改用 expdp (Data Pump) 獲得平行度、壓縮、加密功能。
  • 加入 rman 完整備份腳本,實現「每日增量 + 每週完整」分級策略。
  • 備份完成後呼叫 PowerShell 發送 Email/Teams 通知,含檔案大小、耗時、成功/失敗狀態。
  • 定期執行 exp ... FILE=... QUERY=... 導出關鍵表子集,縮短 RTO。

部署此腳本並納入排程,即可在 Windows 環境輕鬆實現 Oracle 定時備份與留存管理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
項目說明
日期時間解析%date%、%time% 格式依系統地區設定不同,部署前請 echo %date% %time% 驗證切片位置。
forfiles 刪除/d -30 表示 30 天前;/s 遞迴子目錄;/c 執行刪除命令。
exp 參數範例為全庫導出 (FULL=Y 隱含);若需指定 Schema 請加 OWNER=schema_name 或 TABLES=tab1,tab2。
日誌保留同步刪除 .log 檔,避免日誌佔滿磁碟。