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. 最佳实践

  1. 备份:保护
  2. 关闭:完整
  3. deinstall 工具:完整
  4. 手动清理:彻底
  5. ASM 清理:磁盘
  6. 用户/组:删除
  7. 内核参数:清理
  8. 验证:完整性
  9. 文档化:记录
  10. 测试:环境

14. 参考资料

[1] Oracle Database Installation Guide 19c, “Deinstall” https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/removing-oracle-database-software.html