要删除 Oracle 19c 的监听器和数据库实例,同时保留数据库软件,请按以下步骤操作:
1.停止监听器
lsnrctl stop
2.删除监听器配置
手动删除配置文件:
cd $ORACLE_HOME/network/admin
rm listener.ora sqlnet.ora tnsnames.ora # 删除网络配置文件
或使用 netca 工具:
netca
选择 “Listener configuration” → “Delete” → 选择要删除的监听器。
3.停止数据库实例
sqlplus / as sysdba <<EOF
shutdown immediate;
exit;
EOF
4.删除数据库实例
使用 dbca(Database Configuration Assistant)删除数据库:
dbca -silent -deleteDatabase -sourceDB <your_database_name> -sysDBAUserName sys -sysDBAPassword <sys_password>
替换参数:
<your_database_name>:数据库实例名(如 ORCLCDB)
<sys_password>:sys 用户的密码
示例:
dbca -silent -deleteDatabase -sourceDB ORCLCDB -sysDBAUserName sys -sysDBAPassword MyPassword
注意:此操作会永久删除数据库文件(数据文件、控制文件、重做日志等)。
5.清理残留文件
删除数据库相关文件:
rm $ORACLE_HOME/dbs/init<sid>.ora # 初始化参数文件
rm $ORACLE_HOME/dbs/spfile<sid>.ora # 服务器参数文件
rm $ORACLE_HOME/dbs/orapw<sid> # 密码文件
替换 为数据库实例名(如 rm $ORACLE_HOME/dbs/initORCLCDB.ora)。
删除数据文件目录(默认在 $ORACLE_BASE/oradata/<database_name>):
rm -rf $ORACLE_BASE/oradata/<your_database_name>
删除快速恢复区(FRA)(如果存在):
rm -rf $ORACLE_BASE/fast_recovery_area/<your_database_name>
6.可选清理
删除监听日志:
rm $ORACLE_BASE/diag/tnslsnr/<hostname>/listener/alert/log.xml
移除 /etc/oratab 中的条目:
sed -i '/^<your_database_name>:/d' /etc/oratab
验证结果
检查监听状态(应提示无监听器):
lsnrctl status
检查数据库实例(应提示实例不存在):
ps -ef | grep pmon
关键说明
保留的软件:$ORACLE_HOME 目录(包含 Oracle 二进制文件)未被删除,可重用。
备份建议:删除前确保已备份重要数据。
依赖项:如果数据库被其他应用使用,更新相关配置(如连接字符串)。
执行后,Oracle 软件仍可用于创建新数据库或监听器,但原数据库实例和监听配置已被彻底移除。