【Oracle】删除 Oracle 19c 的监听器和数据库实例同时保留数据库软件

要删除 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 软件仍可用于创建新数据库或监听器,但原数据库实例和监听配置已被彻底移除。

相关推荐
e***09611 分钟前
MySQL-递归查询
数据库·windows·mysql
('-')13 分钟前
《从根上理解MySQL是怎样运行的》第十三章笔记
数据库·笔记·mysql
r***186414 分钟前
如何使用C#与SQL Server数据库进行交互
数据库·c#·交互
程序员皮皮林25 分钟前
Redis:大数据中如何抗住2000W的QPS
大数据·数据库·redis
n***s90937 分钟前
Redis如何设置密码
数据库·redis·缓存
y***613143 分钟前
redis 使用
数据库·redis·缓存
n***78681 小时前
Redis-配置文件
数据库·redis·oracle
老年DBA1 小时前
Postgresql-使用 pg_trgm 实现高效的 LIKE / ILIKE 模糊搜索
数据库·postgresql
r***11331 小时前
如何实现Redis安装与使用的详细教程
数据库·redis·缓存
翔云1234561 小时前
MySQL中,binlog文件开头的Previous_gtids_log_event是如何计算的
数据库·mysql·adb