如何卸载/完全移除Oracle 11g(客户端)?

79

8
这个问题被管理员关闭了,令人难以置信,下面的帖子非常有帮助。希望他们能扩大社区范围,包括“对开发人员有帮助的任何内容”。 - Fuzzy Analysis
1
@fuzzyanalysis:这个问题并不是由版主关闭的。那些名字旁边没有钻石标志,他们只是普通用户。 - ale
6
这个问题获得了13个赞,3个收藏,1个重新开启的投票和69,870次浏览 - 但它只差1个投票就会被删除,尽管它是一份有价值的资源。如果这被认为是SO不相关的话题,还有哪个网站应该被视为相关的呢?管理员能否将其移动到正确的网站 - 或者甚至保护它,而不是让这种知识永远丧失? - ziesemer
1
在Super User上有相关内容:http://superuser.com/questions/256762/how-do-i-completely-remove-oracle-11g - matt wilkie
4个回答

141

假设您正在使用Windows操作系统,可以参考以下步骤:

http://www.oracle-base.com/articles/misc/ManualOracleUninstall.php

  • 使用Oracle Universal Installer(OUI)卸载所有Oracle组件。
  • 运行regedit.exe并删除HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE键。该键包含所有Oracle产品的注册表项。
  • 删除在以下部分的注册表中留下的任何Oracle服务引用: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ora* 很明显哪些与Oracle有关。
  • 重新启动计算机。
  • 删除“C:\Oracle”目录或您的ORACLE_BASE所在的任何目录。
  • 删除“C:\Program Files\Oracle”目录。
  • 清空“C:\temp”目录的内容。
  • 清空回收站。

需要特别注意以下一些重要的评论:

  • 请注意,按照此处列出的任何内容(上面或下面),可能会删除或损坏其他已安装的Oracle产品,请小心。
  • 对于64位Windows(x64),还需要从注册表中删除HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE键。
  • 清理相关的Start菜单中安装的快捷方式。
  • 清理环境变量:
    • 考虑删除%ORACLE_HOME%
    • %PATH%中删除不再需要的任何路径。

这组指令恰好与我在几次混乱的Oracle安装后自己逆向工程出的几乎相同,几乎总是能够满足需求。

请注意,即使OUI不再可用或无法使用,只需按照剩余步骤仍应足够。

第七次修订已被还原,以免误引用原始来源,并且不要删除对回答做出贡献的其他评论的认可。如果能找到一种方法来维护这些考虑因素,则欢迎进一步编辑(然后请删除此注释)。)


4
对于 64 位的 Windows 系统,您还需要删除 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE 键。 - itsho
3
首先,在删除“C:\Program Files\Oracle”文件夹时要小心,其中可能还包含其他产品。其次,您可能需要手动清理开始菜单。 ;) - user123444555621
2
不要忘记清理您的路径设置并删除ORACLE_HOME环境变量。 - Brad Bruce
1
有点烦人,你用了 / 而不是 \ :P - gbtimmon
1
@gbtimmon - 我想你指的是注册表路径。我只是从原始文章中简单引用了一下。无论如何,现在它们已经被修复了。 :-) - ziesemer
显示剩余2条评论

11

还有一些你应该考虑的操作:

  • 删除 MS 分布式事务协调器 (MSDTC) 的注册表项

注意:在互联网上,我只在一个(私人)页面上找到了这个步骤。我不知道它是否必需/有效,或者是否会对你的电脑造成任何问题。

  • 打开注册表编辑器

  • 导航到 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC\MTxOCI

  • OracleOciLibOracleSqlLibOracleXaLib 的每个字符串前面添加一个 x

  • 导航到 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\MSDTC\MTxOCI

  • OracleOciLibOracleSqlLibOracleXaLib 的每个字符串前面添加一个 x

    否则,如果存在这些文件,它们将在下次重启时仍然被使用,并且无法删除。

  • 如果存在,删除环境变量 ORACLE_HOMEORACLE_BASETNS_ADMINNLS_LANG

请查看Oracle文档以查找所有与Oracle相关的环境变量,但除了上面列出的变量外,在Windows客户端上很少使用。Oracle环境变量

  • 取消注册 oci.dll

    • 打开命令行窗口(开始菜单 -> 运行... -> cmd)

    • 输入 regsvr32 /u oci.dll 或者 %windir%\SysWOW64\regsvr32 /u oci.dll

    • 在某些情况下,文件 %ORACLE_HOME%\bin\oci.dll 被锁定,无法删除。这种情况下,将文件重命名(例如改为 oci.dll.x),然后重新启动计算机,之后可以删除它。

  • 从全局程序集缓存 (GAC) 中移除 Oracle .NET 程序集。如果您的系统上有 gacutil 实用工具,通常可以使用以下方式:

      gacutil /u Policy.10.1.Oracle.DataAccess
      gacutil /u Policy.10.2.Oracle.DataAccess
      gacutil /u Policy.1.102.Oracle.DataAccess
      gacutil /u Policy.1.111.Oracle.DataAccess
    
      gacutil /u Policy.2.102.Oracle.DataAccess
      gacutil /u Policy.2.111.Oracle.DataAccess
      gacutil /u Policy.2.112.Oracle.DataAccess
      gacutil /u Policy.2.121.Oracle.DataAccess
      gacutil /u Policy.2.122.Oracle.DataAccess
    
      gacutil /u Policy.4.112.Oracle.DataAccess
      gacutil /u Policy.4.121.Oracle.DataAccess
      gacutil /u Policy.4.122.Oracle.DataAccess
    
      gacutil /u Oracle.DataAccess
      gacutil /u Oracle.DataAccess.resources
    
      gacutil /u Policy.4.121.Oracle.ManagedDataAccess
      gacutil /u Policy.4.122.Oracle.ManagedDataAccess
      gacutil /u Oracle.ManagedDataAccess
      gacutil /u Oracle.ManagedDataAccess.resources
      gacutil /u Oracle.ManagedDataAccessDTC
      gacutil /u Oracle.ManagedDataAccessIOP
      gacutil /u Oracle.ManagedDataAccess.EntityFramework
    
    • 不要删除条目 System.Data.OracleClient,这是由 Microsoft 安装的,而不是 Oracle 组件!
  • 如果您的系统上仍然有 OraProvCfg.exe,您也可以使用 OraProvCfg /action:ungac /providerpath:... 来代替 gacutil /u ...。您可能会在 %ORACLE_HOME%\odp.net\managed\x64\OraProvCfg.exe 找到它。

  • 使用文本编辑器打开 XML 配置文件 %SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config,如果存在,则删除 <oracle.manageddataaccess.client> 分支。

  • 同样地,对以下文件进行操作:

         %SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
         %SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
         %SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
         %SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\Config\web.config
    

    如果不想手动编辑 XML 配置文件,您也可以运行以下命令(如果系统上仍然有 OraProvCfg.exe):

     %ORACLE_HOME%\odp.net\managed\x64\OraProvCfg.exe /action:unconfig /product:odpm /frameworkversion:v4.0.30319 
     %ORACLE_HOME%\odp.net\managed\x86\OraProvCfg.exe /action:unconfig /product:odpm /frameworkversion:v4.0.30319
     %ORACLE_HOME%\odp.net\managed\x64\OraProvCfg.exe /action:unconfig /product:odp /frameworkversion:v4.0.30319 
     %ORACLE_HOME%\odp.net\managed\x86\OraProvCfg.exe /action:unconfig /product:odp /frameworkversion:v4.0.30319
    
  • 检查以下注册表键并删除它们(如果存在)

      HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\ODP.Net
      HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\ODP.Net
      HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\Oracle.ManagedDataAccess
      HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\Oracle.ManagedDataAccess.EntityFramework6
      HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\odp.net.managed
      HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\Oracle.DataAccess.EntityFramework6\
    
      HKLM\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\ODP.Net
      HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\ODP.Net
      HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\Oracle.ManagedDataAccess
      HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\Oracle.ManagedDataAccess.EntityFramework6
      HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\odp.net.managed
      HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\Oracle.DataAccess.EntityFramework6\
    
      HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\Oracle Data Provider for .NET, Managed Driver
      HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\Oracle Data Provider for .NET, Unmanaged Driver
      HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\Oracle Provider for OLE DB
    
  • 删除 Inventory 文件夹,通常位于 C:\Program Files\Oracle\InventoryC:\Program Files (x86)\Oracle\Inventory

  • 删除临时文件夹 %TEMP%\deinstall\%TEMP%\OraInstall\%TEMP%\OraInstall\%TEMP%\oraremservicev2(例如 %TEMP%\CVU_11.1.0.2.0_domscheit)(如果存在)。

  • 删除服务 OracleRemExecServiceV2Oracle%ORA_HOME_NAME%MTSRecoveryService

    sc stop OracleRemExecServiceV2
    sc delete OracleRemExecServiceV2
    rmdir %TEMP%\oraremservicev2 /S /Q
    
    sc stop Oracle%ORA_HOME_NAME%MTSRecoveryService
    sc delete Oracle%ORA_HOME_NAME%MTSRecoveryService
    

要从GAC中删除项目,您可能需要使用Visual Studio附带的gacutil.exe。例如,'gacutil /u Oracle.DataAccess'。 - scott-pascoe
如果您找不到GAC,请按照此链接操作。 - Gokul
同时从 "C:\Windows\Microsoft.NET\assembly\GAC_32" 和 "C:\Windows\Microsoft.NET\assembly\GAC_64" 中删除 oracle* 和 policyOracle 文件夹。 - Gokul
同时,从 "C:\Users<user>\AppData\Local\Temp" 中删除 OraInstall* 文件夹。 - Gokul
@Gokul,最好写成:删除文件夹%TEMP%中的内容,因为它可能指向不同的文件夹。 - Wernfried Domscheit
我认为你不应该直接从GAC程序集文件夹中删除任何内容。使用gacutil工具来完成此操作。 - Wernfried Domscheit

7

请按照ziesemer的建议完成所有操作。

您也可以从注册表中删除以下内容:

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\<any Ora* drivers> keys     

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers<any Ora* driver> values

因此,它们不再出现在ODBC数据源管理员中的“已安装在您的系统上的ODBC驱动程序”列表中。


不要忘记在64位Windows上的32位条目:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\... - Wernfried Domscheit
4
小心处理 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Microsoft ODBC for Oracle。这个驱动程序是由微软提供的,也就是说它是你的 Windows 安装的一部分。如果你将其删除,重新安装 Oracle 客户端后也不会再次获得它。 - Wernfried Domscheit

2

请按照ziesemer的建议进行所有操作。

您可能还需要:

  • 在删除注册表中的Oracle相关条目之前停止与之相关的服务。
  • 在注册表中,不仅要查找名为“Oracle”的条目,还要查找例如“ODP”等条目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接