前言
Oracle数据库的卸载相对其他应用来说较为繁琐,虽然官方有提供卸载脚本,但是要想做到完全卸载还是要自己额外删除一些数据才行。正如按照oracle时我们同样做了类似创建用户组等非常规的操作,这些都是要自己手动移除的。话不多说,开始介绍
oracle的卸载大致可以分为4个步骤:
1.关闭进程
2.执行oracle应用自带的卸载脚本
3.手动清除应用残留
4.重启服务器
(一)关闭进程
需要关闭的进程主要是lsnrctl
服务和oracle
服务。
1. 关闭oracle
进程
# 登录服务器后切换到oracle账号
su - oracle
# 以sysdba用户连接数据库
sqlplus /nolog
conn /as sysdba
# 关闭oracle进程
shutdown immediate;
2. 关闭lsnrctl
监听器服务
# 登录服务器后切换到
su - oracle
lsnrctl stop
(二)执行oracle应用自带的卸载脚本
# 找到卸载脚本的位置,一般来说卸载脚本在oracle安装目录的deinstall目录下
cd $ORACLE_HOME/deinstall
./deinstall
deinstall
脚本执行过程中,会删除数据库软件文件、配置文件以及日志等文件。需要注意的是脚本在删除的过程中会有交互式的询问,用户需要根据实际需要输入指令,来完成软件的卸载。
(这里笔者忘记截图了,大致的流程就是根据脚本中的交互式问题,输入"y"等文本,完成卸载。)
(三)手动清除应用和服务器配置残留
1. 清除应用残留
# 删除安装目录
# $ORACLE_BASE 指的是ORACLE的安装路径,一般是$ORACLE_HOME的父目录
# 需要注意的是,如果原先$ORACLE_BASE安装在用户目录下面,那么此处的操作要慎重,用户目录下一般会有很多其他数据,建议不要直接删除用户目录,自己可以切换到这个目录下面手动删除不需要备份的文件
rm -rf $ORACLE_BASE
# 删除配置文件
rm -rf /etc/oratab
rm -rf /etc/oraInst.loc
rm -rf /opt/ORCLfmap
2. 删除用户组和用户(若要重新安装,可以不删除)
一般来说,我们安装oracle
应用时新增的用户主要就是oracle
,新增的用户组主要是oinstall
、dba
、oper
,所以想要完全卸载的话,把相关的用户和用户组删除就行。
sudo userdel -r oracle
sudo groupdel oinstall
sudo groupdel dba
sudo groupdel oper
3. 清理环境变量
编辑/etc/profile
或~/.bash_profile
文件,删除与Oracle相关的环境变量设置。
一般来说,我们如果上面的步骤已经删除了oracle用户的话,那么大概率~/.bash_profile
文件也是不需要清理了,因为我们不太会在root
用户的这个文件下面进行oracle应用的相关配置。
- 对于
/etc/profile
,我们需要清理的主要内容为oracle
相关环境变量和ulimit
配置:
# Add History command timestamp
export ORACLE_BASE=/home/oracle
export ORACLE_SID=orcl
export ORACLE_HOME=/home/oracle/product/19.3/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
- 对于
~/.bash_profile
检查有没有oracle相关的配置,一般来说除了oracle用户外,其他用户不太会配置相关的oracle参数在这个文件上
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
如果卸载完成后,后续还需要重新安装数据库的话,那么强烈建议在卸载之前,先把关键的配置文件备注一下,方便后面创建数据库的时候可以参考。
4. 移除oracle服务(非必要)
注意,不是所有项目的服务器都有将oracle设置为系统服务的,可能只是单纯把数据库应用启动起来手动维护而已,所以有可能服务器上面压根就没有相关的service服务,想要保险期间的话,也可以一并执行下面的语句。
sudo systemctl disable oracledb_ORCLCDB-19c
sudo rm -f /etc/systemd/system/oracledb_ORCLCDB-19c.service
5. 清理包管理器中的安装包(非必要)
注意,笔者接触到的大部分数据库应用都不是通过包管理器下载安装的,很多都是去官网下载相关资源的。所以如果你之前不是通过yum等包安装工具安装的数据库软件,可以跳过这里的步骤。
sudo yum remove -y oracle-database-preinstall-19c
sudo rpm -e --nodeps oracle-database-ee-19c
6. 移除用户的限制文件
使用命令vi etc/security/limits.conf
编辑limits.conf
文件,删除如下内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
(四)重启服务器
使用reboot重启服务器,使新的配置完全生效
reboot
(五)需要留意的细节
① 卸载数据库是一件很有风险的事情,操作前请务必确保数据库是否确实不再需要保留,以及有价值的数据是否有进行留档备份。
② 如果有打算进行数据库的重装操作,那么在删除oracle用户目录的时候,下面几个文件需要格外注意先别删除,后面重新安装的时候可以拿来参考
- 数据库静默安装响应文件(备份的前提是原先Oracle数据库是通过静默方式安装的)
$ORACLE_HOME/install/response/db_install.rsp
- 监听器静默安装响应文件(备份的前提是原先监听器是通过静默方式安装的)
$ORACLE_HOME/assistants/netca/netca.rsp
- 数据库配置助手响应文件(用于自动化创建和配置Oracle数据库实例)
$ORACLE_HOME/assistants/dbca/dbca.rsp