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

Windows 環境 Oracle 自動化導出腳本:expdp + WinRAR 壓縮 + 郵件通知一體化

     編輯:Oracle 資料庫相關知識

生產環境備份自動化需解決三大痛點:導出執行、文件壓縮、歷史清理、完成通知。本文提供開箱即用的批處理方案,整合 expdp、WinRAR、forfiles、VBS 郵件發送。

核心批處理:Daily.bat

@echo off
REM 環境變量配置
SET USERNAME=SYSTEM
SET USERPASSWD=123456
SET SERVICENAME=QEWAY
SET SCHEMASNAME=ISCOP
SET RARTOOL=C:\Program Files\WinRAR
SET DBBACKUPPATH=D:\DBBAK
SET DBADIRECTORIES=DBBAK

REM 動態生成文件名:YYYYMMDD_HHMM
FOR /F "tokens=1-3 delims=/ " %%i IN ('date /t') DO SET FILENAMEDT=%%i%%j%%k
FOR /F "tokens=1,2 delims=: " %%i IN ('time /t') DO SET FILENAMETM=%%i%%j
SET DBBACKUPFILENAME=QEWAY_%FILENAMEDT%-%FILENAMETM%

:main
ECHO Exporting schemas.......
expdp %USERNAME%/%USERPASSWD%@%SERVICENAME% ^
  DUMPFILE=%DBADIRECTORIES%:%DBBACKUPFILENAME%.dmp ^
  SCHEMAS=%SCHEMASNAME% ^
  LOGFILE=%DBADIRECTORIES%:%DBBACKUPFILENAME%.log
ECHO Done exporting schemas.

REM 壓縮並清理原始 DMP
IF EXIST %DBBACKUPPATH%\%DBBACKUPFILENAME%.RAR DEL %DBBACKUPPATH%\%DBBACKUPFILENAME%.RAR
"%RARTOOL%\winrar.exe" a -ep %DBBACKUPPATH%\%DBBACKUPFILENAME%.RAR %DBBACKUPPATH%\%DBBACKUPFILENAME%.dmp
DEL %DBBACKUPPATH%\%DBBACKUPFILENAME%.dmp
ECHO ...Compression complete

REM 清理 30 天前備份
FORFILES /P "%DBBACKUPPATH%" /M *.RAR -D -30 /C "CMD /C DEL /F @PATH"

REM 郵件通知
START D:\DBBAK\Batch_notification_Daily.vbs
EXIT

關鍵技術點解析

模塊技術點
日期時間解析FOR /F "tokens=..." %%i IN ('date /t') 兼容中英文格式
Data Pump 導出expdp 使用 Directory Object (DBADIRECTORIES),需預建 CREATE DIRECTORY DBBAK AS 'D:\DBBAK'
WinRAR 壓縮a -ep 添加文件、排除路徑;路徑含空格需雙引號
歷史清理FORFILES -D -30 精確按天刪除,無需第三方工具
郵件通知VBS 調用 CDO.Message,配置 SMTP 服務器/端口/認證

VBS 郵件腳本:Batch_notification_Daily.vbs

NameSpace = "https://schemas.microsoft.com/cdo/configuration/"
Set Email = CreateObject("CDO.Message")
Email.From = "XXXX@Exchange.com"
Email.To = "XXXX@163.com"
Email.Subject = "Gongxtpt Batch Daily Task"
Email.Textbody = "Gongxtpt Batch Daily Task was done!! Starting at 00:00AM"
With Email.Configuration.Fields
  .Item(NameSpace & "sendusing") = 2
  .Item(NameSpace & "smtpserver") = "10.0.0.12"
  .Item(NameSpace & "smtpserverport") = 25
  .Item(NameSpace & "smtpauthenticate") = 0
  .Item(NameSpace & "sendusername") = ""
  .Item(NameSpace & "sendpassword") = ""
  .Update
End With
Email.Send
Set Email = Nothing

部署清單

  1. 配置 Oracle Directory Object 權限:GRANT READ, WRITE ON DIRECTORY DBBAK TO SYSTEM;
  2. 安裝 WinRAR 並驗證 winrar.exe 路徑
  3. 測試 SMTP 連通性(Telnet 25 端口)
  4. 配置 Windows 任務計劃程式,設定每日定時觸發
  5. 首次手動運行驗證全鏈路
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved