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

Windows 環境下 Oracle 自動備份、壓縮、刪除舊備份並上傳 FTP 完整批次腳本

     編輯:Oracle 資料庫基礎

備份策略

  • 每日使用 exp 匯出指定 Schema
  • 使用 WinRAR 壓縮 .dmp 與 .log
  • 刪除原始匯出檔節省空間
  • 保留 7 天備份,自動清理過期檔案
  • 透過 FTP 上傳至遠端備份伺服器

backup.bat 核心邏輯

@echo off
REM === 設定變數 ===
SET ORACLE_SID=orcl
SET BAK_ROOT=D:\backup
SET DMP_DIR=%BAK_ROOT%\dbbak
SET RAR_DIR=%BAK_ROOT%\rarbak
SET LOG_FILE=%BAK_ROOT%\backup.log
SET FTP_IP=59.208.8.4
SET FTP_USER=ycoa
SET FTP_PASS=bester@2010
SET FTP_DIR=server3

REM === 開始備份 ===
ECHO 開始備份 %DATE% %TIME% >> %LOG_FILE%

REM 1. 匯出 Schema (dbhg, oa)
exp dbhg/dbhg@orcl FILE=%DMP_DIR%\dbhg_%DATE:~0,10%.dmp LOG=%DMP_DIR%\dbhg_%DATE:~0,10%.log ...
exp oa/oa@orcl   FILE=%DMP_DIR%\oa_%DATE:~0,10%.dmp   LOG=%DMP_DIR%\oa_%DATE:~0,10%.log ...

REM 2. 壓縮
"C:\Program Files\WinRAR\WinRAR.exe" a %RAR_DIR%\dbhg_%DATE:~0,10%.rar %DMP_DIR%\dbhg_%DATE:~0,10%.dmp %DMP_DIR%\dbhg_%DATE:~0,10%.log
"C:\Program Files\WinRAR\WinRAR.exe" a %RAR_DIR%\oa_%DATE:~0,10%.rar   %DMP_DIR%\oa_%DATE:~0,10%.dmp   %DMP_DIR%\oa_%DATE:~0,10%.log

REM 3. 刪除暫存匯出檔
DEL /F %DMP_DIR%\dbhg_%DATE:~0,10%.dmp %DMP_DIR%\dbhg_%DATE:~0,10%.log
DEL /F %DMP_DIR%\oa_%DATE:~0,10%.dmp   %DMP_DIR%\oa_%DATE:~0,10%.log

REM 4. 計算 7 天前日期 (透過 VBScript)
ECHO WSCRIPT.ECHO DATEADD("D",-7,DATE) > %TMP%\tmp.vbs
FOR /F "TOKENS=1,2,3 DELIMS=/- " %%I IN ('CSCRIPT /NOLOGO %TMP%\tmp.vbs') DO SET Y=%%I
FOR /F "TOKENS=1,2,3 DELIMS=/- " %%I IN ('CSCRIPT /NOLOGO %TMP%\tmp.vbs') DO SET M=%%J
FOR /F "TOKENS=1,2,3 DELIMS=/- " %%I IN ('CSCRIPT /NOLOGO %TMP%\tmp.vbs') DO SET D=%%K
IF %M% LSS 10 SET M=0%M%
IF %D% LSS 10 SET D=0%D%
SET DEL_DATE=%Y%-%M%-%D%

REM 5. 刪除本地 7 天前壓縮檔
DEL /F %RAR_DIR%\dbhg_%DEL_DATE%.rar
DEL /F %RAR_DIR%\oa_%DEL_DATE%.rar

REM 6. 產生 FTP 指令檔並上傳
ECHO OPEN %FTP_IP% > FTP.TMP
ECHO USER %FTP_USER% %FTP_PASS% >> FTP.TMP
ECHO CD %FTP_DIR% >> FTP.TMP
ECHO BIN >> FTP.TMP
ECHO PROMPT OFF >> FTP.TMP
ECHO SEND %RAR_DIR%\dbhg_%DATE:~0,10%.rar >> FTP.TMP
ECHO DELETE dbhg_%DEL_DATE%.rar >> FTP.TMP
ECHO SEND %RAR_DIR%\oa_%DATE:~0,10%.rar >> FTP.TMP
ECHO DELETE oa_%DEL_DATE%.rar >> FTP.TMP
ECHO BYE >> FTP.TMP

FTP -N -S:FTP.TMP
DEL FTP.TMP

ECHO 結束備份 %DATE% %TIME% >> %LOG_FILE%

排程部署

使用 Windows 工作排程器設定每日固定時間執行 backup.bat,建議在業務低峰期(如凌晨 01:00)執行。

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