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

Windows 手動徹底卸載 Oracle 完整圖文教程:註冊表、服務、環境變數零殘留

     編輯:Oracle 資料庫基礎

為何需要手動卸載

  • OUI 卸載常遺留註冊表、服務、ODBC、檔案
  • 殘留導致重裝失敗、「下一步」消失、Home 衝突
  • 手動清理可確保乾淨環境,避免神秘錯誤

第一階段:服務與 OUI

  1. Win+R → services.msc → 停止所有 Oracle* 服務
  2. 開始 → 程式集 → Oracle - OraDb11g_home1 → Oracle Installation Products → Universal Installer → 「卸載產品」 → 全選 → 移除

第二階段:註冊表深度清理 (Regedit)

⚠️ 先匯出備份:檔案 → 匯出 → 全部

路徑刪除對象
HKLM\SYSTEM\CurrentControlSet\Services所有 Oracle*, OraWeb*, OraClrAgnt*
HKLM\SYSTEM\CurrentControlSet\Services\Eventlog\Application所有 Oracle*
HKLM\SOFTWARE\ORACLE整個金鑰
HKLM\SOFTWARE\ODBC\ODBCINST.INI除 Microsoft ODBC for Oracle 外含 Oracle 的金鑰
HKCR (HKEY_CLASSES_ROOT)Ora*, Oracle*, Orcl*, EnumOra*
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\ProgramsOracle*

第三階段:環境變數與檔案系統

  1. 環境變數:Win+Pause → 進階 → 環境變數 → 編輯 Path、CLASSPATH → 移除所有 Oracle 路徑
  2. 重啟電腦 (釋放檔案鎖定)
  3. 刪除目錄:
    • %ORACLE_BASE% (如 C:\app\oracle, D:\Oracle)
    • C:\Program Files\Oracle
    • C:\Program Files (x86)\Oracle
    • %TEMP%\*, %TMP%\* Oracle 相關暫存檔
  4. 開始選單:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle*
  5. Windows 目錄:C:\Windows\ORACLE.INI, oradim*.INI, oraodbc.ini

第四階段:ODBC 與事件日誌

  1. odbcad32.exe (32-bit) / odbcad32.exe (64-bit, SysWOW64) → 系統 DSN / 使用者 DSN → 刪除所有 Oracle 開頭
  2. 事件檢視器 → Windows Logs → Application → 篩選來源 Oracle* → 清除記錄

驗證清單

  • [ ] regedit 搜尋 "Oracle" 無結果
  • [ ] services.msc 無 Oracle 服務
  • [ ] odbcad32 無 Oracle DSN
  • [ ] %PATH% 無 Oracle 路徑
  • [ ] 磁碟無 Oracle 目錄
  • [ ] 重新執行安裝程式,無「偵測到現有 Oracle Home」警告

PowerShell 一鍵清理腳本 (管理員執行)

# 停用並禁用服務
Get-Service -Name "Oracle*" | ForEach-Object {
  $_.Stop(); $_.WaitForStatus('Stopped', 30)
  Set-Service -Name $_.Name -StartupType Disabled
}

# 刪除註冊表
$regPaths = @(
  'HKLM:\SOFTWARE\ORACLE',
  'HKLM:\SYSTEM\CurrentControlSet\Services\Oracle*',
  'HKLM:\SYSTEM\CurrentControlSet\Services\OraWeb*',
  'HKLM:\SYSTEM\CurrentControlSet\Services\Eventlog\Application\Oracle*',
  'HKLM:\SOFTWARE\ODBC\ODBCINST.INI\Oracle*',
  'HKCR:\Ora*', 'HKCR:\Oracle*', 'HKCR:\Orcl*', 'HKCR:\EnumOra*',
  'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs\Oracle*'
)
$regPaths | ForEach { Remove-Item -Path $_ -Recurse -Force -ErrorAction SilentlyContinue }

# 環境變數
$path = [Environment]::GetEnvironmentVariable('PATH','Machine')
$newPath = ($path -split ';' | Where-Object { $_ -notmatch 'Oracle' }) -join ';'
[Environment]::SetEnvironmentVariable('PATH', $newPath, 'Machine')

Write-Host "清理完成,請重啟電腦後刪除檔案目錄。"

常見問題

  • DLL 無法刪除:重啟後再刪,或用 Unlocker/Process Explorer 釋放鎖定
  • 安裝仍偵測到舊 Home:註冊表 HKLM\SOFTWARE\Oracle\inst_loc 可能殘留
  • 多版本共存:僅清理目標版本 Home 對應的註冊表 (含 Home 名稱後綴)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved