Oracle 協載後常遺留注冊表鍵值、服務項目、環境變量、Start Menu 快捷方式、Inventory 目錄,導致再次安裝報 INS-32008、INS-08101、ORA-12560。本文提供**生產驗證的 15 步核級清理清單**,按依賴順序執行,確保乾淨重裝。
services.msc → 停止 OracleService*、Oracle*TNSListener*、Oracle*DBConsole*、Oracle*JobScheduler*、Oracle*VSS* 等。localconfig delete 刪除 CSS 服務。oradim -delete -asmsid +ASM(或對應 SID)。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 的鍵PATH、CLASSPATH,刪除含 ORACLE_HOME、bin、jdk 的條目。C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle*、桌面 Oracle 圖標。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 等notepad C:\Windows\WIN.INI,刪除 [ORACLE] 節及其下所有行。eventvwr.msc → Windows 日志 → Application → 篩選來源 Oracle* → 清除日志(或右鍵「清除日志」)。setup.exe,安裝過程無 INS-32008(檢測到現有 Oracle Home)、INS-08101(Inventory 冲突)等錯誤,即為乾淨環境。# 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 協載即可達到「無痕級」,為下一次安裝鋪平道路。