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

### 如何在 Oracle 19c 中修改数据库实例名称 在 Oracle 数据库中,修改数据库实例名称是一个复杂的过程,因为这不仅涉及更改实例名本身,还需要调整多个配置文件以及数据库内部元数据。以下是关于如何完成此操作的具体说明: #### 1. 停止当前数据库服务 为了安全地执行更改编码的操作,必须先停止目标数据库的服务。可以通过以下命令实现: ```bash sqlplus / as sysdba shutdown immediate; ``` #### 2. 更改初始化参数 `INSTANCE_NAME` `DB_NAME` 编辑初始化参数文件(通常是 `.ora` 文件),找到并更新以下两个重要参数: - **`INSTANCE_NAME`**: 这是具体的实例名称。 - **`DB_NAME`**: 表示整个数据库的名字。 可以使用如下 SQL 命令来设置这些参数[^1]: ```sql ALTER SYSTEM SET INSTANCE_NAME=new_instance_name SCOPE=SPFILE; ALTER SYSTEM SET DB_NAME=new_db_name SCOPE=SPFILE; ``` 注意:这里的 `new_instance_name` 是新的实例名字,而 `new_db_name` 则是你希望的新数据库名字。 #### 3. 更新监听器配置 (`listener.ora`) 进入 `$ORACLE_HOME/network/admin/` 路径下打开 `listener.ora` 文件,查找旧的实例条目,并将其替换为新定义的实例名称。例如如果原内容中有 `(SID_DESC = (GLOBAL_DBNAME = old_db_name)(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)(SID_NAME = old_sid))` ,则应改为匹配新的实例数据库名称的内容。 #### 4. 修改 tnsnames.ora 配置 同样,在同一目录下的 `tnsnames.ora` 文件也需要同步更新以反映最新的连接描述符信息。确保所有的客户端能够通过网络访问到重命名后的数据库实例。 #### 5. 启动数据库至 NOMOUNT 状态 启动数据库但是不加载控制文件以便进一步处理: ```bash startup nomount; ``` #### 6. 使用 RENAME DATABASE TO 新名称 的方式重建控制文件 利用 `CREATE CONTROLFILE REUSE...`语句重新构建控制文件时指定新的数据库名称。这一过程非常关键因为它直接影响到了后续的数据恢复能力其他依赖于准确控制文件的功能正常运作。 #### 7. 执行必要的验证测试 最后一步就是进行全面功能性的检查确认所有变更都已生效并无错误发生。尝试再次登录数据库查看状态是否正确无误;另外也要检验应用程序层面对该改动是否有任何不良反应。 ```python print("Database instance renaming process completed successfully.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值