第一部分:卸载前的准备工作(极其重要!)
在执行任何卸载操作之前,请严格按照以下步骤操作,这可以避免后续出现各种意想不到的问题。
-
停止所有相关服务
- Windows:
- 打开“服务”(Services),找到所有以 "Oracle" 开头的服务,
- OracleOraDB19Home1TNSListener
- OracleServiceORCL (orcl 是你的数据库名称)
- OracleVSSWriterORCL
- 右键点击每个服务,选择“停止”。
- 打开“服务”(Services),找到所有以 "Oracle" 开头的服务,
- Linux:
- 以
root用户或具有sudo权限的用户登录。 - 使用以下命令停止监听器:
lsnrctl stop
- 使用以下命令停止数据库实例:
sqlplus / as sysdba SQL> shutdown immediate; SQL> exit;
- 停止 Oracle 相关的 HTTP 服务(如果存在):
opmnctl stopall
- 以
- Windows:
-
记录关键信息
- Oracle Home 路径: 这是最重要的信息,通常位于类似
C:\app\oracle\product\19.3.0\dbhome_1(Windows) 或/u01/app/oracle/product/19.3.0/dbhome_1(Linux) 的路径,你可以在环境变量ORACLE_HOME中找到它。 - 数据文件、控制文件、重做日志的位置: 这些文件通常不在 Oracle Home 目录下,而是在另一个你指定的目录中(
C:\oradata\ORCL或/u01/oradata/ORCL),卸载 Oracle 软件通常不会自动删除这些数据文件,你需要手动删除它们以彻底清除数据。 - 监听器配置文件: 位于
$ORACLE_HOME/network/admin/(Linux) 或%ORACLE_HOME%\network\admin\(Windows) 下的listener.ora文件。 - 数据库配置文件: 位于
$ORACLE_HOME/dbs/(Linux) 或%ORACLE_HOME%\database\(Windows) 下的spfileORCL.ora或initORCL.ora文件。
- Oracle Home 路径: 这是最重要的信息,通常位于类似
-
关闭所有与 Oracle 相关的程序
确保没有正在运行的 SQL Developer, PL/SQL Developer, Toad 等工具,也没有任何依赖于 Oracle 客户端的应用程序。
-
以正确的用户身份登录
- Windows: 建议使用管理员账户登录。
- Linux: 必须使用安装 Oracle 软件的同一个用户(通常是
oracle用户)登录,或者使用root用户执行某些特定步骤。
第二部分:在 Windows 上卸载 Oracle 数据库
Windows 上的卸载相对简单,主要通过“控制面板”或 Oracle 自带的卸载工具进行。
使用“控制面板”卸载(推荐)
-
打开 控制面板。
-
选择 程序和功能。
-
在程序列表中,找到所有与 Oracle 相关的条目,卸载顺序通常是从下到上(即先安装的后卸载),这样可以避免依赖问题。
Oracle Database 19c XE(如果是 Express Edition)Oracle Database 19c <版本号> <产品类型>(Oracle Database 19c 19.00.00.0.0 Database)Oracle Net Services XE或Oracle Net Services <版本号>Oracle Java Development Kit(如果随数据库一同安装)Oracle Home X.X.X.X(这是核心的 Oracle Home 安装目录)Oracle Installation Products(Oracle Universal Installer)Oracle Configuration ManagerOracle XML Database- ...以及其他所有以 "Oracle" 开头的组件。
-
右键点击每个组件,选择 卸载,按照向导提示完成卸载过程,这个过程可能会比较耗时,请耐心等待。
使用 Universal Installer 卸载
如果控制面板列表不完整或卸载失败,可以尝试使用 Oracle 自带的卸载工具。
- 打开 命令提示符(CMD) 或 PowerShell,以管理员身份运行。
- 导航到 Oracle Universal Installer 的目录,路径取决于你的版本,
cd C:\app\oracle\product\19.3.0\dbhome_1\oui\bin
- 运行
setup.exe并指定deinstall参数:setup.exe -deinstall -force
- 此时会启动一个图形化或命令行的卸载界面,它会自动检测你系统中安装的 Oracle 组件。
- 按照向导的提示进行操作,它会询问你是否要删除数据库实例、配置文件等,请根据你的实际情况选择。
- 卸载完成后,它会生成一个日志文件
deinstall<timestamp>.log,请检查日志确保没有错误。
第三部分:在 Linux 上卸载 Oracle 数据库
Linux 上的卸载主要是通过命令行执行 $ORACLE_HOME/deinstall/deinstall 脚本,这个脚本非常智能,能够自动检测并移除大部分组件。
-
登录系统
- 使用安装 Oracle 数据库的同一个用户(
oracle)登录到服务器。
- 使用安装 Oracle 数据库的同一个用户(
-
设置环境变量
- 加载
oracle用户的profile文件,以确保ORACLE_HOME,ORACLE_SID等环境变量正确设置。. .bash_profile
- 验证
ORACLE_HOME是否正确:echo $ORACLE_HOME # 应该输出类似 /u01/app/oracle/product/19.3.0/dbhome_1 的路径
- 加载
-
运行卸载脚本
- 进入
$ORACLE_HOME/deinstall目录并执行deinstall脚本:cd $ORACLE_HOME/deinstall ./deinstall
- 进入
-
跟随交互式向导
- 脚本启动后,首先会进行一些检查。
- 它会显示一个配置摘要,包括它将要执行的操作,
- 移除 Oracle Home 目录。
- 移除 Oracle Inventory。
- 移除用户和组(可选)。
- 移除自动启动/停止脚本(如
/etc/init.d/oratab相关内容)。
- 仔细阅读摘要,确认无误后,输入
y并按回车,开始卸载。
-
以 root 用户执行清理脚本
- 卸载脚本完成后,它会提示你以
root用户身份执行一个脚本,这个脚本的路径通常在/tmp目录下,# 切换到 root 用户 su - root
执行脚本
/tmp/oracle_deconfig.sh
* 这个脚本会移除一些只有 root 用户才能删除的文件和配置,如 `/etc/oratab`、`/etc/init.d` 中的服务脚本等。 - 卸载脚本完成后,它会提示你以
-
验证卸载
- 切换回
oracle用户,检查ORACLE_HOME目录是否还存在。exit # 退出 root 用户 ls $ORACLE_HOME # 如果报错 "No such file or directory",说明目录已被删除
- 检查
/etc/oratab文件是否已被清空或删除。
- 切换回
第四部分:手动清理残留文件
无论使用哪种方法,都可能会有一些残留文件需要手动清理。
-
删除数据文件、日志文件和临时文件
- 这是最关键的一步,因为这些文件通常不在 Oracle Home 目录下,卸载脚本不会自动删除它们。
- 找到你当初存放数据的位置(
/u01/oradata或C:\oradata),然后手动删除整个目录。# Linux sudo rm -rf /u01/oradata
Windows (以管理员身份打开 CMD)
rmdir /s /q C:\oradata
-
删除 Oracle 用户和组(Linux)
- 如果确定不再需要 Oracle,可以删除对应的用户和组。
- 警告: 此操作不可逆,请确保所有相关数据都已备份或删除。
# 删除用户 sudo userdel -r oracle # -r 选项会同时删除用户的家目录
删除组
sudo groupdel oinstall sudo groupdba dba
-
删除残留的目录和文件
- Windows:
C:\Program Files\OracleC:\app\(如果里面只有 Oracle 相关的内容)C:\oradataC:\oracle- 检查环境变量
PATH,ORACLE_HOME,TNS_ADMIN等,并移除 Oracle 相关的条目。
- Linux:
/u01/app/oracle(或你安装的任何 base 目录)/u01/oradata/tmp/OraInstall<timestamp>/var/tmp/orainstall- 检查并编辑
/etc/oratab,/etc/sysctl.conf,/etc/security/limits.conf等文件,移除 Oracle 相关的配置。
- Windows:
-
清理注册表(Windows)
- 按
Win + R,输入regedit打开注册表编辑器。 - 导航到
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle,删除整个 Oracle 键。 - 导航到
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Oracle(如果是 64 位系统),也删除整个 Oracle 键。 - 警告: 修改注册表有风险,请务必小心。
- 按
第五部分:常见问题与解决方法
-
问题: 卸载过程中提示“有文件正在使用”。
- 解决: 确保所有 Oracle 服务都已停止,并且没有其他程序(如 SQL Developer)在运行,重启电脑后再次尝试卸载。
-
问题:
deinstall脚本报错,找不到某些组件。- 解决: 这可能是因为你的安装不完整或之前有部分卸载,可以尝试手动删除报错提到的文件或目录,然后再次运行
deinstall脚本,或者在脚本运行时选择忽略某些错误。
- 解决: 这可能是因为你的安装不完整或之前有部分卸载,可以尝试手动删除报错提到的文件或目录,然后再次运行
-
问题: 卸载后,重新安装时出现“检测到旧 Oracle Home”的错误。
- 解决: 这说明之前的卸载不彻底,请仔细检查并手动删除所有残留的 Oracle 目录、文件和环境变量,特别是
ORACLE_HOME和ORACLE_SID的设置。
- 解决: 这说明之前的卸载不彻底,请仔细检查并手动删除所有残留的 Oracle 目录、文件和环境变量,特别是
-
问题: Linux 上
deinstall脚本执行失败。- 解决: 检查
oracle用户的权限,确保对$ORACLE_HOME目录有读写执行权限,检查磁盘空间是否足够,查看deinstall生成的日志文件,根据错误信息进行排查。
- 解决: 检查
卸载 Oracle 数据库是一个需要谨慎操作的过程,遵循“先停止服务,再卸载软件,最后手动清理数据”的原则,可以最大程度地保证卸载的彻底性。
备份你的数据!备份你的数据!备份你的数据! 重要的事情说三遍。
