本文主要描述如何在 Linux 下完全卸载 Oracle 和 grid 软件.
操作环境
SUSE Linux Enterprise Server 11
Oracle 用户完整删除操作步骤
1, 登录 oracle 用户, 停止 Oracle 数据库监听和数据库实例
- oracle@Linux:~> lsnrctl stop
- oracle@Linux:~> sqlplus / as sysdba
- SQL> shutdown immediate;
- SQL> exit
说明: 可以使用 ps -ef | grep 'oracle' | grep -v grep 确认是否还有进程. 如果有, 可以直接手工 kill 一下.
2, 获取 oracle 用户下的 ORACLE_HOME 和 ORACLE_BASE 路径并执行删除. 原因是 oracle 安装目录不一定都是标准安装方式完成, 如果是标准方式可直接删除 / opt/oracle,/opt/oraInventory 目录
- Linux:~# su - oracle
- oracle:~$ echo $ORACLE_BASE --> /home/oracle/base
- oracle:~$ echo $ORACLE_HOME --> /home/oracle/product
切换到 root 用户, 删除上述获取到的 oracle 用户的 ORACLE_BASE 和 ORACLE_HOME 目录.
- Linux:~# rm -rf /home/oracle/base
- Linux:~# rm -rf /home/oracle/product
3, 删除 / usr/local/bin 目录下的 dbhome,oraenv,coraenv 文件
- Linux:~# rm /usr/local/bin/dbhome
- Linux:~# rm /usr/local/bin/oraenv
- Linux:~# rm /usr/local/bin/coraenv
4, 删除 / etc 目录下的 oratab,oraInst.loc 文件, 删除 / etc/oracle 目录
- Linux:~# rm -rf /etc/oratab
- Linux:~# rm -rf /etc/oracle
- Linux:~# rm -rf /etc/oraInst.loc
5, 删除 / tmp 目录安装 oracle 产生的相关文件
- Linux:~# rm -rf /tmp/*oracle*
- Linux:~# rm -rf /tmp/Oracle*
- Linux:~# rm -rf /tmp/.oracle
- Linux:~# rm -rf /tmp/CUV*
- Linux:~# rm -rf /tmp/OraInst*
6, 删除 oracle 用户
Linux:~# userdel -rf oracle
7, 删除 dba 和 oinstall 用户组
- Linux:~# groupdel dba
- Linux:~# groupdel oinstall
8, 检查 / dev/shm 目录下是否存在用户为 oracle 的相关的文件或者目录, 如果有则删除.
9, 卸载 oracle 用户结束.
grid 用户完整删除操作步骤
1, 切换到 grid 用户, 停止 grid 下的 ASM 实例监听和 HAS 服务.
- grid@Linux:~> lsnrctl stop
- grid@Linux:~> crsctl stop resource -all
说明: 可以使用 ps -ef | grep 'grid' | grep -v grep 确认是否还有进程. 如果有, 可以直接手工 kill 一下.
2, 获取 grid 用户的 ORACLE_HOME 和 ORACLE_BASE 路径并执行删除. 原因是 grid 用户的安装目录不一定都是标准安装方式完成, 如果是标准方式可直接删除 / opt/oracrs,/opt/oraadm,/opt/oraInventory 目录
- Linux:~# su - grid
- grid:~$ echo $ORACLE_BASE --> /home/grid/base
- grid:~$ echo $ORACLE_HOME --> /home/grid/product
切换到 root 用户, 删除上述获取到的 grid 用户的 ORACLE_BASE 和 ORACLE_GRID 目录.
- Linux:~# rm -rf /home/grid/base
- Linux:~# rm -rf /home/grid/product
3, 删除 grid 用户
Linux:~# userdel -rf grid
4, 清理 ASM 相关的 DG 的信息
- Linux:~# cd /dev/diskgroup
- Linux:~# dd if=/dev/zero of=./dg_ora bs=8k count=10240
- Linux:~# dd if=/dev/zero of=./dg_data bs=8k count=10240
- Linux:~# dd if=/dev/zero of=./dg_backup bs=8k count=10240
5, 卸载 grid 用户结束.
方法二 (利用 find 批量删除, 如果没看懂下述操作命令不建议操作)
- #delete oracle relation file and directory
- ps -fu oracle | grep -Ev 'PID|grep' | awk '{print $2}' | xargs kill -9
- find / -maxdepth 3 -path /proc -prune -o -user oracle -print0 | xargs -0 rm -rf
- find / -maxdepth 3 -path /proc -prune -o -group dba -print0 | xargs -0 rm -rf
- find / -maxdepth 3 -path /proc -prune -o -group oinstall -print0 | xargs -0 rm -rf
- #delete grid relation file and directory
- ps -fu grid | grep -Ev 'PID|grep' | awk '{print $2}' | xargs kill -9
- find / -maxdepth 3 -path /proc -prune -o -user grid -type f -print0 | xargs -0 rm -rf
- find / -maxdepth 3 -path /proc -prune -o -user grid -type d -print0 | xargs -0 rm -rf
说明:(1) 如果数据文件管理方式为 ASM 管理, 则同样需要执行 dd 命令删除磁盘组信息.
(2) 必须清楚上述命令使用的影响 (如非 oracle/grid 用户但用户组为 dba/oinstall 的文件或目录会被删除.)
来源: http://www.linuxidc.com/Linux/2019-05/158746.htm