Oracle 软件卸载
Oracle 软件卸载
适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
Oracle 软件卸载流程[1]:
步骤:
- 备份
- 关闭
- 卸载
- 清理
2. 卸载前准备
2.1 备份
# 1. 数据备份
expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=full.dmp FULL=Y
# 2. 配置备份
cp $ORACLE_HOME/network/admin/*.ora /backup/
cp $ORACLE_HOME/dbs/init*.ora /backup/
2.2 记录信息
-- 数据库信息
SELECT name, open_mode FROM v$database;
SELECT * FROM v$version;
SELECT name FROM v$datafile;
SELECT member FROM v$logfile;
3. 关闭
3.1 数据库
su - oracle
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> EXIT;
3.2 监听
lsnrctl stop
3.3 集群(RAC)
# root
srvctl stop database -db orcl
srvctl remove database -db orcl
# GI 资源
crsctl stat res -t | grep ora.orcl
3.4 OEM
# 停止 OMS
$OMS_HOME/bin/emctl stop oms
4. 卸载
4.1 OUI 卸载
# GUI
$ORACLE_HOME/deinstall/deinstall
# 或
$ORACLE_HOME/oui/bin/runInstaller -deinstall
4.2 deinstall 工具
# 静默
$ORACLE_HOME/deinstall/deinstall -silent \
-checkonly \
-o /tmp/deinstall.rsp
# 实际卸载
$ORACLE_HOME/deinstall/deinstall -silent \
-paramfile /tmp/deinstall.rsp
4.3 响应文件
# /tmp/deinstall.rsp
ORACLE_BASE=/u01/app/oracle
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=DEINSTALL
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_SID=orcl
LOCAL_NODE=rac1
NODELIST=rac1,rac2
5. 手动清理
5.1 ORACLE_HOME
# root
rm -rf /u01/app/oracle/product/19.0.0/dbhome_1
rm -rf /u01/app/oracle
5.2 ORACLE_BASE
rm -rf /u01/app/oracle
5.3 Inventory
rm -rf /u01/app/oraInventory
5.4 /etc
rm -f /etc/oraInst.loc
rm -f /etc/oratab
rm -f /etc/oracle
rm -rf /etc/oracle/*
5.5 /tmp
rm -rf /tmp/.oracle
rm -rf /tmp/OraInstall*
rm -rf /tmp/CVU*
5.6 /var
rm -rf /var/tmp/.oracle
6. Grid 卸载
6.1 关闭集群
# root
crsctl stop cluster -all
crsctl stop has -f
6.2 deinstall
su - grid
$ORACLE_HOME/deinstall/deinstall
6.3 清理
# root
rm -rf /u01/app/19.0.0/grid
rm -rf /u01/app/grid
rm -rf /etc/oracle
rm -rf /var/tmp/.oracle
7. ASM 清理
7.1 ASM 磁盘
# 清除 ASM 头
dd if=/dev/zero of=/dev/asm-disk1 bs=1M count=100
dd if=/dev/zero of=/dev/asm-disk2 bs=1M count=100
7.2 ASMFD
asmcmd afd_unlabel DATA1
asmcmd afd_unlabel DATA2
8. 用户清理
8.1 oracle 用户
userdel -r oracle
8.2 grid 用户
userdel -r grid
8.3 组
groupdel oinstall
groupdel dba
groupdel asmadmin
9. 内核参数清理
9.1 sysctl.conf
# 删除 Oracle 相关
# /etc/sysctl.conf
9.2 limits.conf
# /etc/security/limits.conf
# 删除 oracle 配置
10. 验证
10.1 进程
ps -ef | grep oracle
ps -ef | grep ora_
10.2 目录
ls -la /u01
ls -la /etc/ora*
10.3 用户
id oracle
id grid
11. 常见坑与排错
11.1 卸载失败
# 1. 检查进程
ps -ef | grep ora
# 2. 杀掉
kill -9 <pid>
# 3. 手动清理
11.2 资源未清理
# RAC
crsctl stat res -t | grep ora
# 强制
crsctl delete resource <name>
11.3 共享内存
ipcs -m | grep oracle
ipcrm -m <id>
12. 自动化脚本
#!/bin/bash
# uninstall_oracle.sh
# 1. 关闭
su - oracle -c "sqlplus / as sysdba <<EOF
SHUTDOWN IMMEDIATE;
EXIT;
EOF
"
su - oracle -c "lsnrctl stop"
# 2. deinstall
su - oracle -c "$ORACLE_HOME/deinstall/deinstall -silent -paramfile /tmp/deinstall.rsp"
# 3. 清理
rm -rf /u01/app/oracle
rm -rf /u01/app/oraInventory
rm -f /etc/oraInst.loc /etc/oratab /etc/oracle
rm -rf /tmp/.oracle /tmp/OraInstall*
# 4. 用户
userdel -r oracle
echo "卸载完成"
13. 最佳实践
- 备份:保护
- 关闭:完整
- deinstall 工具:完整
- 手动清理:彻底
- ASM 清理:磁盘
- 用户/组:删除
- 内核参数:清理
- 验证:完整性
- 文档化:记录
- 测试:环境
14. 参考资料
[1] Oracle Database Installation Guide 19c, “Deinstall” https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/removing-oracle-database-software.html