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

Windows 批次檔自動化 Oracle expdp 匯出:日期命名、分類存放、排程執行

     編輯:Oracle 教學

批次檔完整內容 (expdp_backup.bat)

@ECHO OFF
REM ==================================================
REM Oracle 11g expdp 自動備份腳本
REM 1. 檔名含日期:SCHEMA_YYYYMMDD.dmp
REM 2. 先導出至暫存目錄,再依年/月/日歸檔至永久目錄
REM 3. 排程:at 02:00 /every:m,t,w,th,f,s,su "D:\scripts\expdp_backup.bat"
REM 刪除排程:at 1 /delete
REM ==================================================

SET MYDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
SET YYYY=%DATE:~0,4%
SET MM=%DATE:~5,2%
SET DD=%DATE:~8,2%

SET TMPDIR=E:\app\Administrator\admin\zcjc\dpdump
SET BAKROOT=E:\expdp_backup

MKDIR %BAKROOT%\%YYYY% 2>NUL
MKDIR %BAKROOT%\%YYYY%\%MM% 2>NUL
MKDIR %BAKROOT%\%YYYY%\%MM%\%DD% 2>NUL

REM 導出 5 個 Schema
expdp ppp/ppp@zcjc DUMPFILE=zcjc_ppp_%MYDATE%_exp.dmp CONTENT=ALL
expdp aus/aus@zcjc DUMPFILE=zcjc_aus_%MYDATE%_exp.dmp CONTENT=ALL
expdp cif/cif@zcjc DUMPFILE=zcjc_cif_%MYDATE%_exp.dmp CONTENT=ALL
expdp spm/spm@zcjc DUMPFILE=zcjc_spm_%MYDATE%_exp.dmp CONTENT=ALL
expdp ua/ua@zcjc  DUMPFILE=zcjc_ua_%MYDATE%_exp.dmp  CONTENT=ALL

REM 搬移並清理暫存
COPY "%TMPDIR%\zcjc_ppp_%MYDATE%_exp.dmp" "%BAKROOT%\%YYYY%\%MM%\%DD%\"
COPY "%TMPDIR%\zcjc_aus_%MYDATE%_exp.dmp" "%BAKROOT%\%YYYY%\%MM%\%DD%\"
COPY "%TMPDIR%\zcjc_cif_%MYDATE%_exp.dmp" "%BAKROOT%\%YYYY%\%MM%\%DD%\"
COPY "%TMPDIR%\zcjc_spm_%MYDATE%_exp.dmp" "%BAKROOT%\%YYYY%\%MM%\%DD%\"
COPY "%TMPDIR%\zcjc_ua_%MYDATE%_exp.dmp"  "%BAKROOT%\%YYYY%\%MM%\%DD%\"

DEL "%TMPDIR%\zcjc_ppp_%MYDATE%_exp.dmp"
DEL "%TMPDIR%\zcjc_aus_%MYDATE%_exp.dmp"
DEL "%TMPDIR%\zcjc_cif_%MYDATE%_exp.dmp"
DEL "%TMPDIR%\zcjc_spm_%MYDATE%_exp.dmp"
DEL "%TMPDIR%\zcjc_ua_%MYDATE%_exp.dmp"

EXIT

關鍵細節

  • %DATE% 格式視系統地區設定而異,上述切片適用 YYYY-MM-DD;若為 MM/DD/YYYY 需調整索引。
  • CONTENT=ALL 導出結構+資料;若僅需結構改 METADATA_ONLY。
  • 暫存目錄 TMPDIR 為 DATA_PUMP_DIR 指向路徑,導出完成後立即搬移釋放空間。
  • 排程建議使用 Windows 工作排程器(比 at 更穩定,支援登入觸發、錯誤重試、日誌)。

進階:加入日誌與錯誤通知

>> "%BAKROOT%\expdp_%MYDATE%.log" 2>&1 (
  expdp ...
)
IF %ERRORLEVEL% NEQ 0 (
  powershell -Command "Send-MailMessage -To 'dba@company.com' -Subject 'expdp 失敗' -Body '請檢查日誌' -SmtpServer smtp.company.com"
)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved