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

Windows 批次檔自動化 Oracle 匯出/匯入備份工具

     編輯:Oracle 資料庫基礎

工具特色

  • 自動偵測 ORACLE_HOME (透過 PATH 環境變數)
  • 互動式選單:備份 / 還原 / 離開
  • 呼叫原生 exp.exe / imp.exe 執行
  • 作業完成自動清理暫存檔

完整批次碼

@echo off
setlocal enabledelayedexpansion
color 0a

:detect_oracle_home
:: 從 PATH 解析 Oracle 安裝路徑
for /f "tokens=2 delims==" %%a in ('path') do (
    set "str=%%a"
    set str=!str: =+!
    for %%i in (!str!) do (
        set "var=%%i"
        set var=!var:+= !
        echo !var!>> change.txt
        for /f "delims=" %%i in ('findstr "Oracle" change.txt') do set var=%%i
    )
)
del /q change.txt

:menu
set /p choice=1.備份 2.還原 3.離開 請選擇:
if "%choice%"=="1" goto exp
if "%choice%"=="2" goto imp
exit /b

:exp
set /p file=請輸入匯出檔名 (不含路徑):
set /p dpath=請輸入儲存路徑 (含磁碟代號,如 D:\backup):
"%var%\bin\exp.exe" userid=smhr/smhr file="%dpath%\%file%.dmp" full=n
goto continue_prompt

:imp
set /p file=請拖入欲匯入的 .dmp 檔完整路徑:
"%var%\bin\imp.exe" userid=smhr/smhr file="%file%" full=y
goto continue_prompt

:continue_prompt
set /p choice=1.繼續操作 2.離開 請選擇:
if "%choice%"=="1" goto menu
exit /b

關鍵技術細節

  1. 路徑解析:利用 for /f 迴圈拆解 PATH,配合 findstr 過濾含 "Oracle" 的路徑
  2. 延遲環境變數:setlocal enabledelayedexpansion 配合 !var! 即時取值
  3. 參數化帳號:範例使用 smhr/smhr,實務建議改為參數傳入或加密儲存
  4. exp/imp 參數:
    • full=n:僅匯出指定使用者物件 (匯出模式)
    • full=y:完整匯入 (含結構與資料)

進階改良建議

  • 改用 Data Pump (expdp/impdp) 取代傳統 exp/imp,支援並行、網路模式、壓縮
  • 加入 日期時間戳記 自動命名備份檔:backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%.dmp
  • 整合 RMAN 進行區塊級備份與時間點復原
  • 加入 錯誤代碼檢查 (%errorlevel%) 並寫入 Log 檔
  • 支援 多實例/SID 切換選單

適用場景

中小型資料庫、開發/測試環境、無圖形介面伺服器、需快速手動備份還原的場合。

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