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

Oracle 單實例徹底卸載清理指南:從進程到注冊表的「核級」淨化

     編輯:Oracle 資料庫相關知識

Oracle 協載遠比「下一步」複雜,殘留文件、注冊表、服務、環境變量、用戶組往往導致再次安裝報錯(如 ORA-12560、INS-32008、INS-08101)。本文提供經生產驗證的「核級」清理清單,確保乾淨重裝零遺留。

一、停止服務與進程(順序嚴禁顛倒)

  1. 關閉數據庫實例
    sqlplus / as sysdba → SHUTDOWN IMMEDIATE;
  2. 停止監聽器
    lsnrctl stop
  3. 停止所有 Oracle 相關 Windows 服務
    services.msc → 停止 OracleService、OracleOraDb11g_home1TNSListener、OracleDBConsole、OracleJobScheduler、OracleVssWriter 等。
  4. 若配置 ASM:刪除 Cluster Synchronization Services (CSS)
    localconfig delete(管理員 CMD)。

二、OUI 圖形化協載產品

  1. 運行 setup.exe → 「協載產品」→ 全選 → 「協載」。
  2. 等待進度條完成,OUI 會清理 $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

四、注冊表深度清理(regedit,謹慎操作,建議先導出備份)

路徑操作
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 的鍵

五、環境變量與用戶組清理

  1. 系統環境變量:刪除 PATH、CLASSPATH 中含 ORACLE_HOME、bin 的條目。
  2. 刪除開始菜單快捷方式:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle*。
  3. 刪除 Oracle 用戶與組(若不再重裝):
    net user oracle /delete
    net localgroup ORA_DBA /delete
    net localgroup ORA_OPER /delete

六、驗證乾淨度

  1. 重啟服務器(釋放文件句柄、注冊表鎖)。
  2. 再次運行 setup.exe,安裝過程無 INS-32008(檢測到現有 Oracle Home)、INS-08101(Inventory 冲突)等錯誤。
  3. lsnrctl status 提示「The listener supports no services」(正常,無實例)。

七、一鍵清理腳本(PowerShell 版,生產慎用)

# 需管理員運行,執行前請三思!
$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 單實例協載即可達到「無痕級」乾淨,為下一次安裝鋪平道路。

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