針對 Windows 平台 Oracle 資料庫,提供一個開箱即用的批次檔 (.bat),功能包含:以 YYYYMMDD_HHMMSS 命名備份檔、自動建立日期目錄、呼叫 exp 導出指定 Schema、刪除 30 天前備份與日誌。可配合 Windows 工作排程器實現無人值守備份。
@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
D:\scripts\oracle_auto_backup.bat。USER/PASSWORD/DATABASE 與 D:\backup 路徑。cmd.exe,引數 /c D:\scripts\oracle_auto_backup.bat。| 項目 | 說明 |
|---|---|
| 日期時間解析 | %date%、%time% 格式依系統地區設定不同,部署前請 echo %date% %time% 驗證切片位置。 |
| forfiles 刪除 | /d -30 表示 30 天前;/s 遞迴子目錄;/c 執行刪除命令。 |
| exp 參數 | 範例為全庫導出 (FULL=Y 隱含);若需指定 Schema 請加 OWNER=schema_name 或 TABLES=tab1,tab2。 |
| 日誌保留 | 同步刪除 .log 檔,避免日誌佔滿磁碟。 |