首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Windows 徹底清理 Oracle 殘留:注冊表、服務、環境變量、文件系統全維度淨化

     編輯:Oracle 資料庫相關知識

Oracle 協載後常遺留注冊表鍵值、服務項目、環境變量、Start Menu 快捷方式、Inventory 目錄,導致再次安裝報 INS-32008、INS-08101、ORA-12560。本文提供**生產驗證的 15 步核級清理清單**,按依賴順序執行,確保乾淨重裝。

清理步驟(嚴禁跳過、順序固定)

  1. 停止所有 Oracle 服務
    services.msc → 停止 OracleService*、Oracle*TNSListener*、Oracle*DBConsole*、Oracle*JobScheduler*、Oracle*VSS* 等。
    若配置 ASM:管理員 CMD 執行 localconfig delete 刪除 CSS 服務。
  2. OUI 圖形化協載產品
    開始 → 程序 → Oracle - OraHome → Oracle Installation Products → Universal Installer → 「協載產品」→ 全選 → 協載。
    注意:Universal Installer 自身**不協載**,保留供後續安裝使用。
  3. 刪除 ASM 實例(如有)
    管理員 CMD:oradim -delete -asmsid +ASM(或對應 SID)。
  4. 注冊表深度清理(regedit,建議先導出備份)
    依次刪除以下鍵(若存在):
    • HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE(整個鍵)
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 下所有以 Oracle、OraWeb 開頭的鍵
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application 下所有以 Oracle 開頭的鍵
    • HKEY_CLASSES_ROOT 下以 Ora、Oracle、Orcl、EnumOra 為前綴的鍵
    • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs 下以 Oracle 開頭的鍵
    • HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI 中除 Microsoft ODBC for Oracle 外含 Oracle 的鍵
  5. 環境變量清理
    系統屬性 → 高級 → 環境變量 → 編輯 PATH、CLASSPATH,刪除含 ORACLE_HOME、bin、jdk 的條目。
  6. 開始菜單/桌面快捷方式
    刪除 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle*、桌面 Oracle 圖標。
  7. 文件系統清理
    • C:\Program Files\Oracle(或 Program Files (x86))
    • ORACLE_BASE 目錄(如 D:\app\oracle,含 oradata, diag, admin, product)
    • %TEMP%、C:\Windows\Temp 下 Oracle 臨時文件
    • C:\Windows 下 ORACLE.INI、oradim*.INI、oraodbc.ini 等
  8. WIN.INI 清理
    notepad C:\Windows\WIN.INI,刪除 [ORACLE] 節及其下所有行。
  9. ODBC DSN 清理
    控制面板 → 管理工具 → ODBC 數據源 (32/64位) → 系統 DSN / 用戶 DSN → 刪除所有 Oracle 相關 DSN。
  10. 事件查看器清理
    eventvwr.msc → Windows 日志 → Application → 篩選來源 Oracle* → 清除日志(或右鍵「清除日志」)。
  11. 重啟服務器
    **必須重啟**,釋放文件句柄、注冊表鎖、服務控制管理器緩存。
  12. 驗證乾淨度
    重啟後再次運行 setup.exe,安裝過程無 INS-32008(檢測到現有 Oracle Home)、INS-08101(Inventory 冲突)等錯誤,即為乾淨環境。
  13. 補充說明
    步驟 8-11(文件、WIN.INI、ODBC、事件日志)通常在步驟 7 重啟後已可忽略,**但強迫症/嚴格合規環境建議全執行**。

一鍵清理 PowerShell 腳本(管理員運行,謹慎)

# clean_oracle_windows.ps1
$regKeys = @(
  "HKLM:\SOFTWARE\ORACLE",
  "HKLM:\SYSTEM\CurrentControlSet\Services\Oracle*",
  "HKLM:\SYSTEM\CurrentControlSet\Services\OraWeb*",
  "HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\Application\Oracle*",
  "HKCR:\Ora*", "HKCR:\Oracle*", "HKCR:\Orcl*", "HKCR:\EnumOra*",
  "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs\Oracle*"
)
$regKeys | ForEach { if (Test-Path $_) { Remove-Item $_ -Recurse -Force -ErrorAction SilentlyContinue } }

$filePaths = @(
  "C:\Program Files\Oracle",
  "C:\Program Files (x86)\Oracle",
  "D:\app\oracle",  # 根據實際 ORACLE_BASE 調整
  "$env:TEMP\*oracle*",
  "C:\Windows\Temp\*oracle*",
  "C:\Windows\ORACLE.INI",
  "C:\Windows\oradim*.INI",
  "C:\Windows\oraodbc.ini"
)
$filePaths | ForEach { if (Test-Path $_) { Remove-Item $_ -Recurse -Force -ErrorAction SilentlyContinue } }

# 環境變量
$path = [Environment]::GetEnvironmentVariable("PATH","Machine")
$classpath = [Environment]::GetEnvironmentVariable("CLASSPATH","Machine")
[Environment]::SetEnvironmentVariable("PATH", ($path -replace ";?[^;]*oracle[^;]*", ""), "Machine")
[Environment]::SetEnvironmentVariable("CLASSPATH", ($classpath -replace ";?[^;]*oracle[^;]*", ""), "Machine")

Write-Host "清理完成,請重啟服務器。" -ForegroundColor Green

遵循「服務→協載→注冊表→環境→文件→重啟」鐵律,Windows 上 Oracle 協載即可達到「無痕級」,為下一次安裝鋪平道路。

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