ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

06-Oracle卸载与重装完整流程

06-Oracle卸载与重装完整流程 文章目录一、场景切入二、卸载不干净的后果三、方式一:deinstall 工具(推荐)3.1 交互式卸载3.2 静默两步卸载四、方式二:runInstaller 卸载五、手工清理完整清单5.1 停库、停监听5.2 杀残留进程5.3 删除软件与数据目录5.4 清理 inventory 配置与 oratab5.5 清理 /usr/local/bin 下的切换脚本5.6 清理临时文件5.7 释放共享内存段与信号量5.8 删除用户与组(可选)六、清理后的验证(重装前检查)七、要点总结一、场景切入安装失败后想推倒重来,rm -rf /u01一把删完就重装,结果 runInstaller 刚起来就报 inventory 相关错误;或者旧机器要腾出来装新库,发现 DBCA 建库时总带着旧 SID 的影子。这些多半是上次没卸干净。Oracle 的安装状态散落在文件系统、inventory、共享内存多个地方,清单式清理才能卸得干净。二、卸载不干净的后果Central Inventory(/etc/oraInst.loc 指向的目录)里残留旧 ORACLE_HOME 注册,重装时路径冲突,报 INS-32014 之类的目录占用错oraInst.loc 指向的目录被删了但文件还在,runInstaller 直接报 inventory 损坏/etc/oratab 残留旧实例条目,oraenv 切换环境时找不到库,dbca/自动巡检脚本被误导旧实例留下的共享内存段、信号量没释放,新实例启动时报资源不足/usr/local/bin 下的 dbhome、oraenv 还是旧路径的脚本三、方式一:deinstall 工具(推荐)Oracle 自带的官方卸载工具,会自动停库、删文件、清 inventory 和 oratab 条目。3.1 交互式卸载su- oraclecd$ORACLE_HOME/deinstall ./deinstall过程中按提示确认数据库列表、是否删除数据库与文件,一路确认即可。完成后它会把执行过的清理动作汇总输出。3.2 静默两步卸载先生成响应文件(此时不做任何删除):./deinstall-silent-checkonly结束后提示生成的 rsp 文件路径,形如 /home/oracle/deinstall/deinstall_config_txt_2024-xx-xx.ora,再执行真正的卸载:./deinstall-silent-paramfile/home/oracle/deinstall/deinstall_config_txt_2024-xx-xx.ora注意 $ORACLE_HOME/deinstall 目录不存在时,需要单独下载对应版本的 deinstall 工具包。四、方式二:runInstaller 卸载$ORACLE_HOME/runInstaller-deinstall-home$ORACLE_HOME本质是调起 deinstall,流程同上。旧习惯里还有图形界面卸载:执行./runInstaller,在欢迎页右下角点卸载产品(Deinstall Products),勾选要卸载的 home。这种方式只卸软件文件,不动数据库文件和 oratab,适合保留数据只升级软件的中间步骤。五、手工清理完整清单deinstall 偶尔也有漏网之鱼,以下清单按顺序执行,适合彻底重装的场景。以下命令除特别说明外都切 root 执行。动手前先看总览,清理位置一共七类:位置内容处理方式/u01/app/oracle软件家目录、数据文件、诊断日志rm -rf/u01/app/oraInventoryCentral Inventory 注册信息rm -rf/etc/oraInst.locinventory 位置声明rm -f/etc/oratab实例与 home 对照表按行删除/etc/oracleocr.loc 等服务注册信息rm -rf/usr/local/bindbhome、oraenv、coraenv 脚本rm -f内核 IPC共享内存段、信号量ipcrm 释放/tmp 与 /var/tmp 下的 .oracle、OraInstall* 属于第八类临时残留,一并处理。下面逐项展开。5.1 停库、停监听su- oracle lsnrctl stop sqlplus / as sysdbaEOF shutdown immediate; exit; EOF5.2 杀残留进程ps-ef|grep$ORACLE_HOME|grep-vgrepkill-9上面列出的PID5.3 删除软件与数据目录rm-rf/u01/app/oraclerm-rf/u01/app/oraInventory如果 /u01 专门划给 Oracle,直接rm -rf /u01/app更省事。5.4 清理 inventory 配置与 oratabrm-f/etc/oraInst.locsed-i/^orcl:/d/etc/oratabrm-rf/etc/oracle/etc/oraInst.loc:Central Inventory 的位置声明,删除后重装会自动重建/etc/oratab:实例与 ORACLE_HOME 对照表,按 SID 前缀删行/etc/oracle:存放 ocr.loc 等 Oracle 服务注册信息5.5 清理 /usr/local/bin 下的切换脚本ls-l/usr/local/bin/dbhome /usr/local/bin/oraenv /usr/local/bin/coraenv2/dev/nullrm-f/usr/local/bin/dbhome /usr/local/bin/oraenv /usr/local/bin/coraenv5.6 清理临时文件rm-rf/tmp/OraInstall* /tmp/.oracle /var/tmp/.oraclerm-rf/home/oracle/deinstall /home/oracle/oraInstallerLogs2/dev/null/tmp/.oracle 里是实例运行期的 socket 文件,不删可能影响下次安装。5.7 释放共享内存段与信号量ipcs-m|grep-ioracle ipcs-s|grep-ioracle有输出则逐个释放:ipcrm-mshmidipcrm-ssemid批量处理脚本:foridin$(ipcs-m|awk/oracle/{print $2});doipcrm-m$id;doneforidin$(ipcs-s|awk/oracle/{print $2});doipcrm-s$id;done消息队列同理:ipcs -q | grep -i oracle后ipcrm -q msqid。5.8 删除用户与组(可选)确认这台机器不再跑 Oracle 后:userdel-roraclegroupdeldbagroupdeloper2/dev/nullgroupdeloinstall如果马上要重装,保留用户和组,省去重建步骤。重装前确认 oracle 用户的环境变量指向新规划的路径:旧 ORACLE_HOME 已删除,残留的旧变量会在安装和启动时造成路径混淆。六、清理后的验证(重装前检查)逐项过一遍,全部满足再启动新的安装:# inventory 声明已不存在,或指向的目录为空ls-l/etc/oraInst.loc2/dev/null# oratab 无旧条目(或文件已不存在)cat/etc/oratab2/dev/null# 共享内存与信号量无 oracle 残留ipcs-m|grep-ioracle ipcs-s|grep-ioracle# 软件目录已清空ls/u01/app2/dev/null# 切换脚本已删除ls/usr/local/bin/oraenv2/dev/null# oracle 用户环境正常(保留用户时)idoraclesu- oracle-cecho \$ORACLE_HOME# 空间与基础环境df-h/u01 /tmp getenforce六项检查均无残留输出即干净。之后按 03 篇重新准备环境、按 05 篇的排错思路走安装,首步安装会自动重建 Central Inventory 并生成新的 /etc/oraInst.loc。如果只是 inventory 损坏、软件和数据都想保留,单独重建 inventory 即可,不必整体卸载,这是另一条更轻的路径。七、要点总结卸载优先用$ORACLE_HOME/deinstall/deinstall,静默两步:-checkonly生成响应文件再-paramfile执行手工清理清单:停库停监听 → 杀进程 → 删 /u01 → /etc/oraInst.loc、/etc/oratab、/etc/oracle → /usr/local/bin 三个脚本 → /tmp/.oracle → ipcs 释放内存段信号量 → 视需要删用户组共享内存和信号量是最容易被漏掉的两项,重装前务必ipcs -m、ipcs -s检查重装前跑一遍第六节的检查清单,比装到一半报错再回头排查省时间
返回列表