Oracle 10g 在 Windows 上的卸載若不徹底,殘留的服務、登錄項、環境變數、ODBC DSN 會導致後續安裝失敗或版本衝突。本文提供經驗證的 13 步驟標準化流程,確保乾淨卸載,支援同機重裝或升級。
環境假設
- OS:Windows XP / Server 2003 / 2008 / 2012 / 2016 / 2019
- Oracle 安裝路徑:
D:\Oracle(ORACLE_BASE)
- Inventory 目錄:
C:\Program Files\Oracle
13 步驟徹底卸載
- 停止所有 Oracle 服務
services.msc → 找 Oracle*、OracleDBConsole*、OracleJobScheduler*、OracleVSSWriter* 等 → 全部「停止」並設為「手動」。
- 通用安裝程式卸載產品
開始 → 程式集 → Oracle - OraDb10g_home1 → Oracle Installation Products → Universal Installer → 選擇「卸載產品」 → 全選移除(Universal Installer 本身保留)。
- 刪除 HKLM\SOFTWARE\Oracle
regedit → 刪除 HKEY_LOCAL_MACHINE\SOFTWARE\Oracle 整個金鑰。
- 刪除服務登錄項
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services → 搜尋 Oracle*、Ora* → 全部刪除。
- 刪除事件檢視器來源
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application → 刪除 Oracle* 子鍵。
- 清除環境變數
系統屬性 → 進階 → 環境變數 → 刪除 CLASSPATH、PATH 中所有 Oracle 相關路徑(%ORACLE_HOME%\bin 等)。
- 移除捷徑與程式群組
桌面、開始功能表、啟動群組 → 刪除所有 Oracle 圖示/資料夾。
- 刪除 Inventory 目錄
rd /s /q "C:\Program Files\Oracle"。
- 重新啟動電腦(釋放被鎖定的 DLL/檔案)。
- 刪除 Oracle 基底目錄
rd /s /q "D:\Oracle"(或你的 ORACLE_BASE)。
- 刪除 Windows 目錄下殘留 .INI 檔
del C:\Windows\Oracle.INI C:\Windows\oradim*.INI C:\Windows\oraodbc.ini(視實際存在而定)。
- 清理 WIN.INI(舊版殘留)
notepad C:\Windows\WIN.INI → 刪除 [Oracle] 區段。
- 刪除 ODBC DSN
odbcad32.exe → 系統 DSN / 使用者 DSN → 刪除所有 Oracle 相關資料來源。
- (選擇性)清除事件檢視器舊日誌
eventvwr.msc → Application / System → 篩選 Oracle 來源 → 清除日誌。
常見殘留問題與對策
| 現象 | 原因 | 解法 |
| DLL 無法刪除 | 進程仍載入 | 重啟後再刪,或用 Process Explorer 找持有者殺掉 |
| 再次安裝報「Inventory 衝突」 | C:\Program Files\Oracle 未清 | 步驟 8 必須執行 |
| 服務仍殘留 | 登錄項未刪 | 步驟 4、5 必須執行 |
自動化腳本參考(PowerShell 片段)
# 停止服務
Get-Service -Name Oracle* | Stop-Service -Force -ErrorAction SilentlyContinue
Get-Service -Name Oracle* | Set-Service -StartupType Manual
# 刪除登錄
Remove-Item -Path 'HKLM:\SOFTWARE\Oracle' -Recurse -Force -ErrorAction SilentlyContinue
Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Services' -Filter 'Oracle*' | Remove-Item -Recurse -Force
Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Services\Eventlog\Application' -Filter 'Oracle*' | Remove-Item -Recurse -Force
# 環境變數
[Environment]::SetEnvironmentVariable('CLASSPATH',$null,'Machine')
$path = [Environment]::GetEnvironmentVariable('PATH','Machine')
$newPath = ($path -split ';' | Where-Object {$_ -notmatch 'Oracle'}) -join ';'
[Environment]::SetEnvironmentVariable('PATH',$newPath,'Machine')
# 刪除目錄
Remove-Item 'C:\Program Files\Oracle' -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item 'D:\Oracle' -Recurse -Force -ErrorAction SilentlyContinue
執行完以上流程並重啟,系統即回到「未安裝 Oracle」的乾淨狀態,可放心進行新版本安裝或升級測試。
- 上一篇文章: Oracle 10g 字元集亂碼修復:從登錄表修改到資料庫重建的完整方案
- 下一篇文章: Oracle 10g 區塊變更追蹤:加速 RMAN 增量備份的關鍵功能完整指南
Copyright ©
程式碼之家 All Rights Reserved