Oracle 協載遠比「下一步」複雜,殘留文件、注冊表、服務、環境變量、用戶組往往導致再次安裝報錯(如 ORA-12560、INS-32008、INS-08101)。本文提供經生產驗證的「核級」清理清單,確保乾淨重裝零遺留。
sqlplus / as sysdba → SHUTDOWN IMMEDIATE;lsnrctl stopservices.msc → 停止 OracleService、OracleOraDb11g_home1TNSListener、OracleDBConsole、OracleJobScheduler、OracleVssWriter 等。localconfig delete(管理員 CMD)。setup.exe → 「協載產品」→ 全選 → 「協載」。$ORACLE_HOME、Inventory、大部分注冊表鍵值。REM 1. 刪除 ORACLE_BASE(含 oradata, flash_recovery_area, admin, diag 等)
RMDIR /S /Q D:\app\oracle
REM 2. 刪除 ORACLE_HOME(若非默認位置)
RMDIR /S /Q D:\app\oracle\product\11.2.0\dbhome_1
REM 3. 刪除 Inventory 目錄
RMDIR /S /Q C:\Program Files\Oracle\Inventory
REM 4. 清理臨時文件
DEL /F /Q %TEMP%\*.* /S /Q
DEL /F /Q C:\Windows\Temp\*.* /S /Q
| 路徑 | 操作 |
|---|---|
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE | 刪除整個 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 的條目。C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle*。net user oracle /deletenet localgroup ORA_DBA /deletenet localgroup ORA_OPER /deletesetup.exe,安裝過程無 INS-32008(檢測到現有 Oracle Home)、INS-08101(Inventory 冲突)等錯誤。lsnrctl status 提示「The listener supports no services」(正常,無實例)。# 需管理員運行,執行前請三思!
$oraclePaths = @(
"D:\app\oracle",
"C:\Program Files\Oracle",
"C:\Program Files (x86)\Oracle",
"C:\Windows\Temp\*oracle*",
"$env:TEMP\*oracle*"
)
$oraclePaths | ForEach { if (Test-Path $_) { Remove-Item $_ -Recurse -Force -ErrorAction SilentlyContinue } }
$regPaths = @(
"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*"
)
$regPaths | ForEach { if (Test-Path $_) { Remove-Item $_ -Recurse -Force -ErrorAction SilentlyContinue } }
[Environment]::SetEnvironmentVariable("PATH", ([Environment]::GetEnvironmentVariable("PATH","Machine") -replace ";?[^;]*oracle[^;]*", ""), "Machine")
[Environment]::SetEnvironmentVariable("CLASSPATH", ([Environment]::GetEnvironmentVariable("CLASSPATH","Machine") -replace ";?[^;]*oracle[^;]*", ""), "Machine")
Write-Host "清理完成,請重啟服務器。" -ForegroundColor Green
遵循「先停服務、再協載產品、後刪文件、最後掃注冊表」的黃金順序,配合重啟驗證,Oracle 單實例協載即可達到「無痕級」乾淨,為下一次安裝鋪平道路。