假设您正在使用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”目录的内容。
- 清空回收站。
需要特别注意以下一些重要的评论:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE
键。%ORACLE_HOME%
。%PATH%
中删除不再需要的任何路径。这组指令恰好与我在几次混乱的Oracle安装后自己逆向工程出的几乎相同,几乎总是能够满足需求。
请注意,即使OUI不再可用或无法使用,只需按照剩余步骤仍应足够。
(第七次修订已被还原,以免误引用原始来源,并且不要删除对回答做出贡献的其他评论的认可。如果能找到一种方法来维护这些考虑因素,则欢迎进一步编辑(然后请删除此注释)。)
还有一些你应该考虑的操作:
注意:在互联网上,我只在一个(私人)页面上找到了这个步骤。我不知道它是否必需/有效,或者是否会对你的电脑造成任何问题。
打开注册表编辑器
导航到 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC\MTxOCI
在 OracleOciLib
、OracleSqlLib
和 OracleXaLib
的每个字符串前面添加一个 x
导航到 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\MSDTC\MTxOCI
在 OracleOciLib
、OracleSqlLib
和 OracleXaLib
的每个字符串前面添加一个 x
否则,如果存在这些文件,它们将在下次重启时仍然被使用,并且无法删除。
如果存在,删除环境变量 ORACLE_HOME
、ORACLE_BASE
、TNS_ADMIN
、NLS_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\Inventory
和 C:\Program Files (x86)\Oracle\Inventory
删除临时文件夹 %TEMP%\deinstall\
、%TEMP%\OraInstall\
、%TEMP%\OraInstall\
和 %TEMP%\oraremservicev2
(例如 %TEMP%\CVU_11.1.0.2.0_domscheit
)(如果存在)。
删除服务 OracleRemExecServiceV2
和 Oracle%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
%TEMP%
中的内容,因为它可能指向不同的文件夹。 - Wernfried Domscheit请按照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驱动程序”列表中。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\...
- Wernfried DomscheitHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Microsoft ODBC for Oracle
。这个驱动程序是由微软提供的,也就是说它是你的 Windows 安装的一部分。如果你将其删除,重新安装 Oracle 客户端后也不会再次获得它。 - Wernfried Domscheit请按照ziesemer的建议进行所有操作。
您可能还需要: