如何卸载/完全删除 Oracle 11g(客户端)?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8450726/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to uninstall / completely remove Oracle 11g (client)?
提问by Yves
How to uninstall / completely remove Oracle 11g (client)?
如何卸载/完全删除 Oracle 11g(客户端)?
deinstall.bat doesn't work.
deinstall.bat 不起作用。
Edit:Further discussion related to why this question was closed and deleted: https://meta.stackexchange.com/questions/190441/why-was-this-question-related-to-uninstalling-the-oracle-database-client-deleted
编辑:有关为什么关闭和删除此问题的进一步讨论:https: //meta.stackexchange.com/questions/190441/why-was-this-question-related-to-uninstalling-the-oracle-database-client-已删除
回答by ziesemer
Assuming a Windows installation, do please refer to this:
假设是 Windows 安装,请参考:
http://www.oracle-base.com/articles/misc/ManualOracleUninstall.php
http://www.oracle-base.com/articles/misc/ManualOracleUninstall.php
- Uninstall all Oracle components using the Oracle Universal Installer (OUI).
- Run regedit.exe and delete the HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE key. This contains registry entires for all Oracle products.
- Delete any references to Oracle services left behind in the following part of the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ora*
It should be pretty obvious which ones relate to Oracle.- Reboot your machine.
- Delete the "C:\Oracle" directory, or whatever directory is your ORACLE_BASE.
- Delete the "C:\Program Files\Oracle" directory.
- Empty the contents of your "C:\temp" directory.
- Empty your recycle bin.
- 使用 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”目录的内容。
- 清空你的回收站。
Calling additional attention to some great comments that were left here:
呼吁额外注意这里留下的一些重要评论:
- Be careful when following anything listed here (above or below), as doing so may remove or damage any other Oracle-installed products.
- For 64-bit Windows (x64), you need also to delete the
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE
key from the registry. - Clean-up by removing any related shortcuts that were installed to the Start Menu.
- Clean-up environment variables:
- Consider removing
%ORACLE_HOME%
. - Remove any paths no longer needed from
%PATH%
.
- Consider removing
- 遵循此处(上方或下方)列出的任何内容时要小心,因为这样做可能会删除或损坏任何其他 Oracle 安装的产品。
- 对于 64 位 Windows (x64),您还需要
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE
从注册表中删除该键。 - 通过删除安装到“开始”菜单的任何相关快捷方式进行清理。
- 清理环境变量:
- 考虑删除
%ORACLE_HOME%
. - 从 中删除不再需要的任何路径
%PATH%
。
- 考虑删除
This set of instructions happens to match an almost identical process that I had reverse-engineered myself over the years after a few messed-up Oracle installs, and has almost always met the need.
这组指令恰好与我多年来在几次搞砸的 Oracle 安装后对自己进行逆向工程几乎相同的过程相匹配,并且几乎总能满足需求。
Note that even if the OUI is no longer available or doesn't work, simply following the remaining steps should still be sufficient.
请注意,即使 OUI 不再可用或不起作用,只需遵循其余步骤就足够了。
(Revision #7reverted as to not misquote the original source, and to not remove credit to the other comments that contributed to the answer. Further edits are appreciated (and then please remove this comment), if a way can be found to maintain these considerations.)
(修订版#7 已恢复为不会错误引用原始来源,并且不会删除对回答做出贡献的其他评论的功劳。如果可以找到维护这些内容的方法,请进一步编辑(然后请删除此评论)考虑。)
回答by Wernfried Domscheit
There are some more actions you should consider:
您还应该考虑其他一些操作:
Remove Registry Entries for MS Distributed Transaction Coordinator (MSDTC)
Note: on the Internet I found this step only at a single (private) page. I don't know if it is required/working or if it breaks anything on your PC.
- Open Regedit
- Navigate to
HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC\MTxOCI
- Add an x before each string for
OracleOciLib
,OracleSqlLib
, andOracleXaLib
- Navigate to
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\MSDTC\MTxOCI
- Add an x before each string for
OracleOciLib
,OracleSqlLib
, andOracleXaLib
Otherwise these files, if they exist, will still be in use next time you reboot, and unable to be deleted.
Remove environment variable
ORACLE_HOME
,ORACLE_BASE
,TNS_ADMIN
,NLS_LANG
if existCheck also Oracle doc to find all Oracle related environment variables, however apart from variables listed above they are very rarely used on Windows Client: Oracle Environment Variables
Unregister oci.dll
- Open a command line window (Start Menu -> Run... -> cmd)
Enter
regsvr32 /u oci.dll
, resp.%windir%\SysWOW64\regsvr32 /u oci.dll
In some cases the file
%ORACLE_HOME%\bin\oci.dll
is locked and you cannot delete it. In such case rename the file (e.g. to oci.dll.x) and reboot the PC, afterwards you can delete it.
Remove Oracle .NET assemblies from Global Assembly Cache (GAC). You do this typically with the gacutilutility, if available on your system. Would be like this:
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
Entry
System.Data.OracleClient
should not be removed, this one is installed by Microsoft - not an Oracle component!Instead of
gacutil /u ...
you can also useOraProvCfg /action:ungac /providerpath:...
if OraProvCfg is still available on your system. You may find it at%ORACLE_HOME%\odp.net\managed\x64\OraProvCfg.exe
.
With a text editor, open XML Config file
%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
and delete branch<oracle.manageddataaccess.client>
, if existing.Do the same with:
%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
Instead of editing the XML Config file manually you can also run (if OraProvCfg.exe is still available on your system):
%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
Check following Registry Keys and delete them if existing
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
Delete the Inventory folder, typically
C:\Program Files\Oracle\Inventory
andC:\Program Files (x86)\Oracle\Inventory
Delete temp folders
%TEMP%\deinstall\
,%TEMP%\OraInstall\
and%TEMP%\CVU*
(e.g%TEMP%\CVU_11.1.0.2.0_domscheit
) if existing.
删除 MS 分布式事务协调器 (MSDTC) 的注册表项
注意:在 Internet 上,我仅在单个(私人)页面上找到了此步骤。我不知道它是否需要/工作,或者它是否会破坏您的 PC 上的任何内容。
- 打开注册
- 导航
HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC\MTxOCI
- 每个字符串前加一个X
OracleOciLib
,OracleSqlLib
和OracleXaLib
- 导航
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\MSDTC\MTxOCI
- 每个字符串前加一个X
OracleOciLib
,OracleSqlLib
和OracleXaLib
否则,这些文件(如果存在)将在您下次重新启动时仍在使用,并且无法删除。
删除环境变量
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)并重新启动 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 在您的系统上仍然可用,
gacutil /u ...
您也可以使用OraProvCfg /action:ungac /providerpath:...
它。您可以在 找到它%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%\CVU*
(例如%TEMP%\CVU_11.1.0.2.0_domscheit
)如果存在。
回答by ranni rabadi
Do everything suggested by ziesemer.
做 ziesemer 建议的一切。
You may also want to remove from the registry:
您可能还想从注册表中删除:
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\<any Ora* drivers> keys
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers<any Ora* driver> values
So they no longer appear in the "ODBC Drivers that are installed on your system" in ODBC Data Source Administrator
因此,它们不再出现在 ODBC 数据源管理器的“系统上安装的 ODBC 驱动程序”中
回答by Pascal Sartoretti
Do everything suggested by ziesemer.
做 ziesemer 建议的一切。
You may also want to :
您可能还想:
- Stop the Oracle-related services (before deleting them from the registry).
- In the registry, look not only for entries named "Oracle" but also e.g. for "ODP".
- 停止与 Oracle 相关的服务(在从注册表中删除它们之前)。
- 在注册表中,不仅要查找名为“Oracle”的条目,还要查找例如“ODP”。