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

Posted

技术标签:

【中文标题】如何卸载/完全删除 Oracle 11g(客户端)?【英文标题】:How to uninstall / completely remove Oracle 11g (client)? 【发布时间】:2012-01-17 01:18:30 【问题描述】:

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

deinstall.bat 不起作用。

编辑: 进一步讨论为何关闭和删除此问题:https://meta.stackexchange.com/questions/190441/why-was-this-question-related-to-uninstalling-the-oracle-database-client-deleted

【问题讨论】:

难以置信这个问题被模组关闭了,下面的帖子非常有帮助。希望他们能扩大社区范围以包括“对开发人员有帮助的任何东西”。 @fuzzyanalysis:版主没有关闭这个问题。这些名称旁边没有菱形。他们只是用户。 这个问题获得了 13 次赞成、3 次收藏、1 次重新投票和 69,870 次观看 - 尽管是宝贵的资源,但距离被删除只有 1 票。如果这被认为是 SO 的题外话,那么还有什么其他网站会更好地被认为是题外话?版主是否能够将其移至正确的站点 - 或者甚至可以保护它,而不是让这些知识基本上永远丢失? 覆盖在超级用户:superuser.com/questions/256762/… 【参考方案1】:

假设安装的是 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”目录的内容。 清空回收站。

提请大家注意留在这里的一些优秀的 cmets:

遵循此处(上方或下方)列出的任何内容时要小心,因为这样做可能会删除或损坏任何其他 Oracle 安装的产品。 对于 64 位 Windows (x64),您还需要从注册表中删除 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE 键。 通过删除安装到“开始”菜单的所有相关快捷方式进行清理。 清理环境变量: 考虑删除%ORACLE_HOME%。 从%PATH% 中删除不再需要的所有路径。

这组指令恰好匹配了一个几乎相同的过程,我在安装了几次搞砸的 Oracle 后,多年来对自己进行了逆向工程,并且几乎总能满足需求。

请注意,即使 OUI 不再可用或不起作用,只需执行其余步骤即可。

(Revision #7 已恢复为不错误引用原始来源,并且不删除对答案做出贡献的其他 cmets 的功劳。如果有办法,欢迎进一步编辑(然后请删除此评论)可以找到维护这些注意事项。)

【讨论】:

对于 64 位窗口,您还需要删除 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE 键 首先,删除“C:\Program Files\Oracle”时要小心,它也可能包含其他产品。其次,您可能需要手动清理开始菜单;) 不要忘记清理路径设置并删除 ORACLE_HOME 环境变量。 您使用 / 而不是 \ 有点烦人:P @gbtimmon - 我假设您指的是注册表路径。我只是按原样引用了原始文章。无论如何,它们现在已修复。 :-)【参考方案2】:

按照 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\... 小心HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Microsoft ODBC for Oracle。此驱动程序由 Microsoft 提供,即 Windows 安装的一部分。当您删除它时,您将无法在安装新的 Oracle 客户端时恢复它。【参考方案3】:

按照 ziesemer 的建议做所有事情。

您可能还想:

停止与 Oracle 相关的服务(在从 注册表)。 在注册表中,不仅要查找名为“Oracle”的条目 但也例如“ODP”。

【讨论】:

【参考方案4】:

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

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

注意:在 Internet 上,我仅在单个(私人)页面上找到了此步骤。我不知道它是否需要/工作,或者它是否会破坏您 PC 上的任何东西。

打开注册表 导航到HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC\MTxOCIOracleOciLibOracleSqlLibOracleXaLib 的每个字符串前添加一个 x 导航到HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\MSDTC\MTxOCIOracleOciLibOracleSqlLibOracleXaLib 的每个字符串前添加一个 x

否则这些文件(如果存在)在您下次重新启动时仍然在使用,并且无法删除。

删除环境变量ORACLE_HOMEORACLE_BASETNS_ADMINNLS_LANG(如果存在)

还可以查看 Oracle 文档以查找所有与 Oracle 相关的环境变量,但是除了上面列出的变量之外,它们很少在 Windows 客户端上使用:Oracle Environment Variables

取消注册 oci.dll

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

分别输入regsvr32 /u oci.dll%windir%\SysWOW64\regsvr32 /u oci.dll

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

从全局程序集缓存 (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 在您的系统上仍然可用,您也可以使用 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 并删除分支 &lt;oracle.manageddataaccess.client&gt;(如果存在)。

做同样的事情:

%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%\CVU*(例如 %TEMP%\CVU_11.1.0.2.0_domscheit)(如果存在)。

【讨论】:

要从 GAC 中删除项目,您可能需要使用 Visual Studio 附带的 gacutil.exe。例如'gacutil /u Oracle.DataAccess'。 如果找不到 GAC ,请关注this 同时从“C:\Windows\Microsoft.NET\assembly\GAC_32”和“C:\Windows\Microsoft.NET\assembly”中删除 oracle* 和 policyOracle 文件夹\GAC_64"。 同时从“C:\Users\\AppData\Local\Temp”中删除 OraInstall* 文件夹 @Gokul,最好写:从文件夹 %TEMP% 中删除,它可以指向不同的文件夹。

以上是关于如何卸载/完全删除 Oracle 11g(客户端)?的主要内容,如果未能解决你的问题,请参考以下文章

oracle11g客户端如何完全卸载

如何彻底删除oracle 11g

如何卸载oracle11客户端

如何卸载oracle11g数据库实例

Oracle11g完全卸载方法

完全卸载oracle11g步骤