Oracle 解除安裝後常遺留 Windows 服務項目,導致重裝報錯「服務已存在」。本文提供從服務管理工具到註冊表深層清理的完整步驟,包含 Legacy 鍵值權限突破技巧,確保環境乾淨可重裝。
services.msc,找到所有 Oracle*、OracleDBConsole*、Oracle*Listener* 服務。路徑:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
regedit (或 regedt32)。Oracle 關鍵字,確認鍵值位於 Services 底下。OracleServiceORCL, OracleDBConsoleorcl, OracleOraDb11g_home1TNSListener 等)。同步清理事件日誌來源:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application 下同樣刪除 Oracle 相關鍵值。
路徑:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root 下的 LEGACY_Oracle* 鍵值。
Windows 2000/Server 2003/XP 均存在此層,直接刪除會提示「無法刪除:存取被拒絕」。
regedt32.exe (非 regedit)。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root。Root 鍵 → **安全性** → **權限** → **新增** 目前使用者/Administrators → 勾選 **完全控制**。ControlSet001、ControlSet002 下的對應路徑。Root 下,刪除所有 LEGACY_Oracle* 子鍵。使用 regedit 即可:右鍵 LEGACY_Oracle* → **權限** → 給予 **Everyone** 或目前使用者 **完全控制** → 確定後即可刪除。
路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Oracle (含 KEY_OraDb11g_home1 等安裝家目錄資訊)。
整個 Oracle 節點直接刪除。
PATH、CLASSPATH 中的 Oracle 路徑 (如 %ORACLE_HOME%\bin)。TNS_ADMIN、NLS_LANG、ORACLE_SID 等。C:\Oracle、C:\Program Files\Oracle (需重開機釋放檔案鎖定)。C:\Windows\Oracle.ini, oradim*.ini, oraodbc.ini 等。odbcad32.exe (32/64 位均需) 移除 Oracle 相關 DSN。若重開機後仍有 DLL 被鎖定 (如 oci.dll):
Process Explorer (Sysinternals) 搜尋 Handle,終結持有進程。