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

Windows 環境 Oracle 排程備份腳本:exp 每日全備保留 10 天

     編輯:Oracle 資料庫相關知識

在 Windows Server 上利用批次檔 (.bat) 搭配工作排程器,實現 Oracle exp 每日自動完整備份,並自動清理 10 天前的備份檔與日誌。

一、建立備份批次檔 oraclebackup.bat

  1. 建立目錄結構:
    E:\oraclebackup\
      ├─ dmp\      # 匯出檔存放
      ├─ log\      # 日誌存放
      └─ exp.exe   # 從 $ORACLE_HOME\bin 複製至此
  2. 編輯 oraclebackup.bat 內容:
@echo off
REM ===== 設定區 =====
SET ORACLE_SID=orcl
SET EXP_USER=system
SET EXP_PASS=password
SET BACKUP_ROOT=E:\oraclebackup
SET DMP_DIR=%BACKUP_ROOT%\dmp
SET LOG_DIR=%BACKUP_ROOT%\log
SET RETENTION_DAYS=10
REM ===== 執行區 =====

echo 刪除 %RETENTION_DAYS% 天前的備份檔與日誌...
forfiles /p "%DMP_DIR%" /m *.dmp /d -%RETENTION_DAYS% /c "cmd /c del @path"
forfiles /p "%LOG_DIR%"  /m *.log /d -%RETENTION_DAYS% /c "cmd /c del @path"

echo 正在備份 Oracle 資料庫,請稍候...
SET DATE_STR=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
"%BACKUP_ROOT%\exp.exe" %EXP_USER%/%EXP_PASS%@%ORACLE_SID% ^
  FILE=%DMP_DIR%\OA_%DATE_STR%.dmp ^
  LOG=%LOG_DIR%\OA_%DATE_STR%.log ^
  OWNER=(jasoa_doc)

echo 任務完成!

二、關鍵指令說明

指令用途
forfilesWindows 內建依日期刪除檔案,/d -10 表示 10 天前
%DATE:~0,4%擷取年份 (YYYY),格式視系統地區設定而定
OWNER=(jasoa_doc)僅匯出指定 Schema,減少檔案體積
^批次檔換行續行符號

三、建立 Windows 排程任務

  1. 開啟「工作排程器」→「建立基本任務」。
  2. 觸發條件:每日,設定執行時間(如凌晨 02:00)。
  3. 動作:「啟動程式」,程式選擇 E:\oraclebackup\oraclebackup.bat。
  4. 完成嚮導,右鍵任務→「屬性」→「一般」勾選「不論使用者是否登入都要執行」、「使用最高權限執行」。

四、驗證與維護

  • 手動雙擊 .bat 測試執行,檢查 dmp/、log/ 產出。
  • 定期抽檢 exp 日誌確認無 EXP-000xx 錯誤。
  • 每季測試 imp 還原驗證備份可用性。
  • 升級至 11g+ 建議改用 expdp + DBMS_SCHEDULER 內建排程,功能更強。

五、安全性建議

  • 避免明文密碼:使用外部密碼檔 (orapwd) 或 exp parfile= 參數檔(權限 600)。
  • 備份目錄設定 ACL,僅備份服務帳號可寫入。
  • 異地複製:配合 robocopy 或雲端同步工具將 .dmp 複製至異地。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved