針對 Windows 環境下 Oracle 資料庫的備份還原需求,本文提供一個純批次檔實現的輕量級工具。其核心優勢在於自動讀取當前電腦環境變數定位 Oracle 安裝路徑,實現「一次編寫、多機部署」的跨環境相容性。
PATH 環境變數,提取含 Oracle 關鍵字的路徑作為 ORACLE_HOMEchange.txt 任務結束自動刪除@echo off & setlocal enabledelayedexpansion
color 0a
:start
:: 解析 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
)
)
:: 篩選包含 Oracle 的路徑
for /f "delims=" %%i in ('findstr "Oracle" change.txt') do set "var=%%i"
:: 使用者選單
set /p choice=1.備份 2.還原 3.按任意鍵退出:
if %choice%==1 goto exp
if %choice%==2 goto imp
:exp
del /q change.txt
set /p file=請輸入備份資料庫的檔案名稱:
set /p path=請輸入存放路徑(記得輸入冒號:):
"%var%\exp.exe" smhr/smhr file=%path%\%file% full=n
set /p choice=1.繼續 2.按任意鍵退出:
if %choice%==1 goto start
:imp
del /q change.txt
set /p file=請將要導入的資料庫檔案拖入視窗內:
"%var%\imp.exe" smhr/smhr file=%file% full=y
set /p choice=1.繼續 2.按任意鍵退出:
if %choice%==1 goto start
for /f "tokens=2 delims==":提取 PATH=... 的值部分set "str=!str: =+!":將空格替換為 + 便於 for 迴圈逐項處理findstr "Oracle":從展開的路徑清單中篩選含 Oracle 關鍵字的項目| 優點 | 缺點 |
|---|---|
| 零安裝、單一檔案部署 | 僅支援 Windows 平台 |
| 自適應不同機器 Oracle 路徑 | 依賴 exp/imp 傳統工具(12c+ 建議改用 expdp/impdp) |
| 互動式操作降低門檻 | 密碼明文傳遞有安全風險 |
| 臨時檔自動清理 | 錯誤處理較簡單,缺乏詳細日誌 |
expdp/impdp Data Pump 工具RMAN 實現熱備份與增量備份中小型資料庫、開發測試環境、無專職 DBA 團隊的專案組、需快速部署至多台應用伺服器的場景。