上一篇
如何在Linux卸载Oracle
- Linux
- 2025-06-06
- 2346
停止Oracle所有服务和实例,删除Oracle安装目录及配置文件,移除Oracle用户及用户组,清理环境变量和残留文件确保卸载彻底
卸载前的关键准备
-
备份所有数据
- 使用RMAN或数据泵导出关键数据库:
expdp system/password FULL=Y DIRECTORY=backup_dir DUMPFILE=full_backup.dmp
- 备份Oracle安装目录(
$ORACLE_HOME
)、监听器配置(listener.ora
)和网络配置(tnsnames.ora
)。
- 使用RMAN或数据泵导出关键数据库:
-
停止所有Oracle服务
sqlplus / as sysdba SQL> SHUTDOWN IMMEDIATE; -- 关闭数据库 SQL> EXIT; lsnrctl stop -- 停止监听器
-
检查依赖进程
确认无残留进程:ps -ef | grep -i ora_ # 检查Oracle后台进程 ps -ef | grep -i tns # 检查监听进程
正式卸载步骤
方法1:使用Oracle自带的卸载工具(推荐)
Oracle 12c及以上版本提供deinstall
工具:
cd $ORACLE_HOME/deinstall ./deinstall
- 交互式操作提示:
- 输入数据库SID、安装路径(如
/u01/app/oracle/product/19c/dbhome_1
) - 选择移除数据库、监听器及所有文件(默认全选)
- 自动清理注册表和目录
- 输入数据库SID、安装路径(如
方法2:手动卸载(适用于无deinstall工具)
-
删除数据库实例
dbca -silent -deleteDatabase -sourceDB your_sid -sysDBAUserName sys -sysDBAPassword your_password
-
移除Oracle安装目录
rm -rf /u01/app/oracle # 根据实际路径调整 rm -rf /tmp/OraInstall*
-
清理系统配置
- 删除用户和组:
userdel -r oracle # 删除oracle用户及主目录 groupdel oinstall groupdel dba
- 清除环境变量:
编辑/etc/profile
、~/.bashrc
,删除ORACLE_HOME
、PATH
等配置。
- 删除用户和组:
-
删除残留文件
rm -f /etc/oraInst.loc # 清库存档位置 rm -f /etc/oratab # 删除数据库注册 rm -rf /var/tmp/.oracle # 临时文件
卸载后验证
-
检查进程和文件
ps -ef | grep -i oracle # 应无相关进程 find / -name '*oracle*' # 检查残留文件(忽略只读路径)
-
验证用户和组
id oracle # 应提示"no such user" grep -E 'oinstall|dba' /etc/group # 组应不存在
常见问题解决
-
问题1:
deinstall
运行时提示”Database not removed”
原因:数据库未彻底关闭。
解决:手动执行dbca -deleteDatabase
或重启后重试。 -
问题2: 卸载后
/etc/oratab
仍存在
解决:手动删除并检查/etc/init.d/
下的启动脚本。 -
问题3: 空间未释放
解决:使用lsof | grep deleted
查找被占用文件,重启系统释放锁。
安全建议
- 操作前快照系统:使用VM快照或LVM备份,防止误操作。
- 审计日志:保留
$ORACLE_HOME/deinstall/deinstall.log
供排查。 - 最小权限原则:使用
root
执行删除命令,避免权限不足导致残留。
彻底卸载Oracle需严格遵循步骤,备份数据是首要前提,推荐优先使用deinstall
工具,若遇特殊环境再手动清理,定期系统巡检可避免无效文件堆积。
引用说明:
- Oracle官方文档 Database Deinstallation Tool (deinstall)
- My Oracle Support (MOS) Note 1301923.1
- Linux Filesystem Hierarchy Standard (FHS) 3.0