Oracle 卸载与清理详解
Oracle 卸载与清理详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
正确卸载 Oracle 是维护重要环节[1]:
方式:
- deinstall 工具
- 手动卸载
- 完全清理
详细见:Oracle 卸载与清理。
2. 准备
2.1 备份
# 数据备份
expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=full.dmp FULL=Y
# RMAN 备份
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
2.2 停服务
# 停数据库
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> EXIT
# 停监听
lsnrctl stop
# 停 EM
emctl stop dbconsole
# 停 GI(如适用)
crsctl stop cluster -all
crsctl stop crs
详细见:Oracle 启动关闭流程。
3. deinstall 工具
3.1 单实例 DB
cd $ORACLE_HOME/deinstall
./deinstall
3.2 交互
- 数据库名
- SID
- 监听器
- 确认
3.3 静默
# 生成响应文件
./deinstall -checkonly
# 静默卸载
./deinstall -paramfile /tmp/deinstall.rsp
3.4 GI
su - grid
cd $ORACLE_HOME/deinstall
./deinstall
4. 手动卸载
4.1 停服务
ps -ef | grep ora_
ps -ef | grep tns
kill -9 <pid>
4.2 删除 ORACLE_HOME
rm -rf $ORACLE_HOME
4.3 删除 ORACLE_BASE
rm -rf $ORACLE_BASE
4.4 删除 oraInventory
rm -rf /u01/app/oraInventory
4.5 /etc/oratab
vi /etc/oratab
# 删除相关行
4.6 /etc/oraInst.loc
rm /etc/oraInst.loc
4.7 /usr/local/bin
rm /usr/local/bin/oraenv
rm /usr/local/bin/dbhome
rm /usr/local/bin/coraenv
4.8 用户与组(可选)
userdel -r oracle
userdel -r grid
groupdel oinstall
groupdel dba
4.9 目录
rm -rf /u01
rm -rf /tmp/.oracle
rm -rf /var/tmp/.oracle
rm -rf /etc/oracle
5. RAC 卸载
5.1 删除数据库
srvctl remove database -db orcl
5.2 删除 ASM Disk Group
sqlplus / as sysasm
DROP DISKGROUP DATA INCLUDING CONTENTS;
DROP DISKGROUP FRA INCLUDING CONTENTS;
DROP DISKGROUP OCR INCLUDING CONTENTS;
5.3 卸载 GI
su - grid
cd $GI_HOME/deinstall
./deinstall
5.4 节点
# 每个节点
./deinstall
5.5 ASM Disk
oracleasm deletedisk OCR1
oracleasm deletedisk DATA
6. Windows 卸载
6.1 服务
sc stop OracleServiceORCL
sc delete OracleServiceORCL
sc stop OracleOraDB19HomeTNSListener
sc delete OracleOraDB19HomeTNSListener
6.2 注册表
reg delete "HKLM\SOFTWARE\Oracle" /f
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\Oracle*" /f
6.3 目录
rmdir /s /q C:\app\oracle
rmdir /s /q C:\Program Files\Oracle
7. 清理残留
7.1 进程
ps -ef | grep -E 'oracle|ora_|tns' | grep -v grep
kill -9 <pid>
7.2 共享内存
ipcs -m | grep oracle
ipcrm -m <shmid>
7.3 信号量
ipcs -s | grep oracle
ipcrm -s <semid>
7.4 端口
netstat -tlnp | grep 1521
8. ASM 清理
8.1 ASMLib
oracleasm deletedisk OCR1
oracleasm deletedisk DATA
oracleasm deletedisk FRA
# 卸载
yum remove oracleasmlib oracleasm-support
8.2 ASMFD
asmcmd afd_unlabel OCR1
asmcmd afd_unlabel DATA
8.3 UDEV
rm /etc/udev/rules.d/99-oracle-asmdevices.rules
udevadm control --reload-rules
9. 网络清理
9.1 监听器
rm $ORACLE_HOME/network/admin/listener.ora
rm $ORACLE_HOME/network/admin/tnsnames.ora
9.2 防火墙
firewall-cmd --remove-port=1521/tcp --permanent
firewall-cmd --reload
9.3 /etc/hosts
# 删除 Oracle 相关条目
vi /etc/hosts
10. 用户清理
10.1 oracle
userdel -r oracle
10.2 grid
userdel -r grid
10.3 组
groupdel oinstall
groupdel dba
groupdel oper
groupdel asmadmin
groupdel asmdba
groupdel asmoper
11. 验证
11.1 文件
ls /u01
ls /etc/ora*
ls /usr/local/bin/ora*
find / -name "*oracle*" -type f 2>/dev/null
11.2 进程
ps -ef | grep -E 'oracle|ora_' | grep -v grep
11.3 内存
ipcs -a | grep oracle
11.4 用户
id oracle
id grid
12. 常见坑与排错
12.1 删除失败
- 进程占用
- 先停服务
- fuser
12.2 残留共享内存
ipcs -m
ipcrm -m <id>
12.3 监听器残留
ps -ef | grep tns
kill -9
12.4 ASM Disk 残留
oracleasm querydisk -p ******
oracleasm deletedisk ...
13. 最佳实践
- 备份先:应急
- deinstall 工具:官方
- 停服务:完整
- 清理残留:彻底
- 验证:确认
- 用户/组:可选
- RAC 节点逐一:顺序
- ASM Disk 清理:彻底
- 共享内存:清理
- 文档化:流程
14. 参考资料
[1] Oracle Database Installation Guide 19c, “Deinstalling Oracle Database” https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/deinstalling-oracle-database.html