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

Windows 平台 Oracle 徹底卸載指南:從服務、註冊表到環境變量的全殘留清理

     編輯:Oracle 資料庫基礎

前言:為什麼需要「徹底」卸載?

Oracle 非綠色軟件,安裝過程會在系統深處植入服務、註冊表項、環境變量、用戶配置文件等。簡單運行安裝程序的「卸載」往往遺留大量殘留,導致:

  • 再次安裝報錯(如「Oracle Home 已存在」、「端口衝突」、「Inventory 損壞」)
  • 服務殘留佔用端口(1521、1158、5500 等)
  • 環境變量污染導致新實例啟動載入舊 DLL

本文提供經驗驗證的 9 步徹底清理流程,適用於 Oracle 10g/11g/12c/18c/19c Windows 版本。

九步徹底清理標準作業程序 (SOP)

第 1 步:停止並禁用所有 Oracle 服務

# 方式 A:服務管理器 (services.msc)
# 停止並將啟動類型設為「禁用」的服務名模式:
OracleService          -- 數據庫實例服務
OracleTNSListener -- 監聽器
OracleDBConsole  -- EM Database Console
OracleMTSRecoveryService
OracleJobScheduler
OracleVSSWriter
OracleRemExecServiceV2      -- 遠程執行服務

PowerShell 一鍵停止禁用:

Get-Service -Name "Oracle*" | ForEach-Object {
  Stop-Service -Name $_.Name -Force -ErrorAction SilentlyContinue
  Set-Service -Name $_.Name -StartupType Disabled
}

第 2 步:清理服務註冊表鍵值

路徑:`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\`

  • 刪除所有以 `Oracle` 開頭的子鍵(對應上述服務)。
  • 刪除 `OracleRemExecServiceV2` 鍵。

PowerShell:

Remove-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Oracle*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Services\OracleRemExecServiceV2" -Recurse -Force -ErrorAction SilentlyContinue

第 3 步:清理 Oracle 軟體註冊表

路徑:`HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\`

  • 刪除整個 `Oracle` 子樹(包含 `KEY_OraDb11g_home1` 等 Home 註冊信息、`NLS_LANG`、安裝路徑等)。
Remove-Item -Path "HKLM:\SOFTWARE\Oracle" -Recurse -Force -ErrorAction SilentlyContinue

第 4 步:清理事件日志源註冊

路徑:`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\`

  • 刪除所有以 `Oracle` 開頭的子鍵(如 `Oracle.xxx`、`OracleDBConsolexxx`)。

第 5 步:清理環境變量 PATH

高風險操作,建議備份後編輯:

  1. Win+R → `sysdm.cpl` → 進階 → 環境變量。
  2. 選中「系統變量」區的 `Path` → 編輯。
  3. 將值複製到記事本,刪除所有包含 Oracle 路徑的條目(如 `D:\app\oracle\product\11.2.0\dbhome_1\bin`)。
  4. 注意分號 `;` 分隔,避免誤刪系統路徑(`C:\Windows\System32` 等)。
  5. 保存後必須重啟命令提示符/PowerShell 窗口生效。

PowerShell 輔助(僅顯示 Oracle 相關路徑):

[Environment]::GetEnvironmentVariable("Path","Machine").split(";") | Where-Object {$_ -match "Oracle|oracle"}

第 6 步:重啟作業系統

釋放文件鎖定、卸載驅動、刷新註冊表快取。

第 7 步:刪除 Oracle Home 目錄

# 典型路徑
D:\app\oracle\product\11.2.0\dbhome_1\
C:\oracle\product\10.2.0\db_1\
# 以管理員身份運行 CMD/PowerShell
rmdir /s /q "D:\app\oracle\product\11.2.0\dbhome_1"

若提示「文件被佔用」: 使用 `Process Explorer` (Sysinternals) 查找句柄 → 關閉進程 → 再刪。或進入安全模式刪除。

第 8 步:刪除 Program Files 公共文件

rmdir /s /q "C:\Program Files\Oracle"
rmdir /s /q "C:\Program Files (x86)\Oracle"

第 9 步:清理開始菜單、用戶配置、Inventory

  • 開始菜單:`C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle - OraDb11g_home1` → 刪除。
  • 用戶配置:`%APPDATA%\Oracle`、`%LOCALAPPDATA%\Oracle` → 刪除(含 SQL Developer 設定、SQL*Plus 歷史)。
  • Central Inventory:`C:\Program Files\Oracle\Inventory` (或安裝時指定的 `inventory_loc`) → 刪除整個目錄。
  • 臨時文件:`%TEMP%\OraInstall*`、`%TEMP%\deinstall*` → 刪除。

驗證清單:確認真正「乾淨」

檢查項命令/路徑預期結果
服務`sc query type= service state= all | findstr /i oracle`無輸出
註冊表 Services`reg query HKLM\SYSTEM\CurrentControlSet\Services /k /f Oracle`錯誤:找不到
註冊表 SOFTWARE`reg query HKLM\SOFTWARE\Oracle`錯誤:找不到
PATH 變量`echo %PATH% | findstr /i oracle`無輸出
Oracle Home 目錄`dir "D:\app\oracle"`找不到文件
Inventory`dir "C:\Program Files\Oracle\Inventory"`找不到文件

特殊場景補充

  • 多 Home 共存: 僅卸載特定 Home 時,使用 `deinstall.bat` (11.2+) 或 `setup.exe -deinstall`,勿手動刪除共享註冊表/Inventory。
  • RAC 節點: 需在所有節點執行上述流程,並先從集群移除節點 (`GridSetup.sh -deleteNode`)。
  • Oracle Restart (單機 GI): 先 `roothas.pl -deconfig -force` 卸載 Grid Infrastructure,再卸載 Database。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved