使用dbnewid工具修改dbid和db_name

Oracle DBID与DBName修改
本文介绍如何使用Oracle的dbnewid工具修改数据库的DBID和DBName,包括关闭数据库、修改DBID和DBName的具体步骤及注意事项。

dbnewid是oracle提供的工具

F:\app\Administrator\product\11.2.0\dbhome_1\BIN>nid
DBNEWID: Release 11.2.0.1.0 - Production on 星期二 1月 13 13:15:46 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

关键字      说明                    (默认值)
----------------------------------------------------
TARGET      用户名/口令              (无)
DBNAME      新的数据库名             (无)
LOGFILE     输出日志                     (无)
REVERT      还原失败的更改            否
SETNAME     仅设置新的数据库名        否
APPEND      附加至输出日志            否
HELP        显示这些消息              否
F:\app\Administrator\product\11.2.0\dbhome_1\BIN>

查询数据库的dbid和dbname

SQL> select dbid,name from v$database;
      DBID NAME
---------- ---------
1369339915 CTW


1.利用nid修改数据库dbid

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area  626327552 bytes
Fixed Size                  2178336 bytes
Variable Size             448791264 bytes
Database Buffers          167772160 bytes
Redo Buffers                7585792 bytes
数据库装载完毕。
SQL>
F:\app\Administrator\product\11.2.0\dbhome_1\BIN>nid target=sys/oracle
DBNEWID: Release 11.2.0.1.0 - Production on 星期二 1月 13 13:20:51 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
已连接数据库 CTW (DBID=1369339915)
已连接服务器版本 11.2.0
数据库中的控制文件数:
    F:\APP\ADMINISTRATOR\ORADATA\CTW\CONTROL01.CTL
    F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\CTW\CONTROL02.CTL

是否更改数据库 CTW 的数据库 ID? (Y/[N]) => Y

操作继续进行
将数据库 ID 从 1369339915 更改为 1384712435
    控制文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\CONTROL01.CTL - 已修改
    控制文件 F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\CTW\CONTROL02.CTL - 已修改

    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\SYSTEM01.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\SYSAUX01.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\UNDOTBS01.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\USERS01.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\PRODO1.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\PRODO2.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\PRODO3.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TT_INDEX01.DF - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TT_INDEX02.DF - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TEST.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\CESHI1.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TSPTIPTB1.DB - dbid 已更改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TEMP01.DB - dbid 已更改
    控制文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\CONTROL01.CTL - dbid 已更改
    控制文件 F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\CTW\CONTROL02.CTL - dbid
已更改
    实例关闭
数据库 CTW 的数据库 ID 已更改为 1384712435。
此数据库的所有以前的备份和归档重做日志均不可用。
数据库无法识别恢复区中以前的备份和归档日志。
数据库已关闭, 用 RESETLOGS 选项打开数据库。
已成功更改数据库 ID。
DBNEWID - 已成功完成。
F:\app\Administrator\product\11.2.0\dbhome_1\BIN>

启动数据库
C:\Users\Administrator>sqlplus "/as sysdba"
SQL*Plus: Release 12.1.0.2.0 Production on 星期二 1月 13 13:23:22 2015
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  626327552 bytes
Fixed Size                  2178336 bytes
Variable Size             448791264 bytes
Database Buffers          167772160 bytes
Redo Buffers                7585792 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs;

数据库已更改。

再次查看发现dbid已经修改
SQL> select dbid,name from v$database;

      DBID NAME
---------- ---------
1384712435 CTW
SQL>


2.利用nid修改db_name

SQL> select dbid,name from v$database;

      DBID NAME
---------- ---------
1384712435 CTW

把db_name 从ctw修改为nidctw

关闭数据库打开到mount状态
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area  626327552 bytes
Fixed Size                  2178336 bytes
Variable Size             448791264 bytes
Database Buffers          167772160 bytes
Redo Buffers                7585792 bytes
数据库装载完毕。
修改dbname为nidctw
F:\app\Administrator\product\11.2.0\dbhome_1\BIN>nid target=sys/oracle dbname=n
dctw setname=y
DBNEWID: Release 11.2.0.1.0 - Production on 星期二 1月 13 13:33:34 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
已连接数据库 CTW (DBID=1384712435)
已连接服务器版本 11.2.0
数据库中的控制文件数:
    F:\APP\ADMINISTRATOR\ORADATA\CTW\CONTROL01.CTL
    F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\CTW\CONTROL02.CTL
是否将数据库 CTW 的数据库名更改为 NIDCTW? (Y/[N]) => Y

操作继续进行
将数据库名从 CTW 更改为 NIDCTW
    控制文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\CONTROL01.CTL - 已修改
    控制文件 F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\CTW\CONTROL02.CTL - 已修改
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\SYSTEM01.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\SYSAUX01.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\UNDOTBS01.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\USERS01.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\PRODO1.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\PRODO2.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\PRODO3.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TT_INDEX01.DF - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TT_INDEX02.DF - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TEST.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\CESHI1.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TSPTIPTB1.DB - 已写入新名称
    数据文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\TEMP01.DB - 已写入新名称
    控制文件 F:\APP\ADMINISTRATOR\ORADATA\CTW\CONTROL01.CTL - 已写入新名称
    控制文件 F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\CTW\CONTROL02.CTL - 已写入新名称
    实例关闭

数据库名已更改为 NIDCTW。
修改参数文件并在重新启动前生成新的口令文件。
已成功更改数据库名。
DBNEWID - 已成功完成。
F:\app\Administrator\product\11.2.0\dbhome_1\BIN>

启动数据库

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  626327552 bytes
Fixed Size                  2178336 bytes
Variable Size             448791264 bytes
Database Buffers          167772160 bytes
Redo Buffers                7585792 bytes
ORA-01103: ?????????? ''NIDCTW'' ?? ''CTW''
启动报错原因是工具没有修改参数文件中的dbname 
修改参数文件的db_name
SQL> alter system set db_name=nidctw scope=spfile;
系统已更改。

重新启动数据库
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  626327552 bytes
Fixed Size                  2178336 bytes
Variable Size             448791264 bytes
Database Buffers          167772160 bytes
Redo Buffers                7585792 bytes
数据库装载完毕。
数据库已经打开。
SQL>

查询数据库名发现已经修改成功

SQL>  select dbid,name from v$database;

      DBID NAME
---------- ---------
1384712435 NIDCTW

修改数据库的名字还可以通过重建控制文件来实现修改


<think>好的,用户的问题是在Oracle RAC环境中如何修改DB_NAME。我需要根据提供的引用内容来整理步骤。首先,引用3提到了在RAC集群中修改DB_NAME的过程,但步骤可能不够详细。引用1引用2讨论了修改DB_UNIQUE_NAME时遇到的问题,特别是节点启动问题。需要确保在修改DB_NAME时,所有节点都能正常启动。 用户可能需要的步骤包括:检查当前参数、关闭数据库、修改参数文件、使用nid工具、更新集群配置等。同时需要注意参数如db_files的修改方法(引用4),但这里主要是DB_NAME。需要结合RAC环境,确保所有节点同步,并处理可能出现的错误,如实例无法启动的情况。还要提醒备份测试环境的重要性,避免生产环境风险。</think>### Oracle RAC环境修改DB_NAME操作指南 在Oracle RAC环境中修改数据库名称($DB_NAME$)需谨慎操作,以下是详细步骤: #### 1. **预检查与准备** - 备份数据库(RMAN全库备份+控制文件备份) - 检查当前$DB_NAME$$DB_UNIQUE_NAME$: ```sql SQL> show parameter name; ``` 确认输出包含以下关键参数: ```plaintext NAME TYPE VALUE ------------------------------------ ----------- -------------------------- db_name string old_dbname db_unique_name string old_dbname_adg ``` - 确保所有RAC节点处于正常运行状态 #### 2. **关闭数据库** ```sql SQL> shutdown immediate; ``` **注意**:需在所有实例执行关闭操作[^3] #### 3. **修改参数文件** - 修改$ORACLE_HOME/dbs/init.ora或SPFILE中的参数: ```sql *.db_name='new_dbname' ``` - **RAC特有步骤**:更新集群注册信息: ```sql srvctl modify database -db old_dbname -newdb new_dbname ``` #### 4. **使用DBNEWID工具** ```bash nid target=/ dbname=new_dbname ``` **关键响应选项**: ```plaintext Do you want to proceed? (Y/[N]) => Y ``` #### 5. **更新集群配置** - 删除原数据库资源: ```bash srvctl remove database -db old_dbname ``` - 创建新数据库资源: ```bash srvctl add database -db new_dbname -o $ORACLE_HOME srvctl add instance -db new_dbname -instance new_dbname1 -node racnode1 srvctl add instance -db new_dbname -instance new_dbname2 -node racnode2 ``` #### 6. **启动数据库验证** ```sql SQL> startup mount; SQL> alter database open; ``` 验证所有节点状态: ```bash srvctl status database -db new_dbname ``` #### 7. **后置处理** - 更新监听器配置(listener.ora) - 修改tnsnames.ora中的服务名 - 检查ASM磁盘组中的控制文件路径 ### 常见问题处理 1. **节点启动失败**:检查$ORACLE_SID$是否同步更新,确认ocrregister信息一致性[^2] 2. **控制文件报错**:使用备份的控制文件恢复 3. **服务注册异常**:执行`alter system register`强制注册 **注意**:生产环境建议先在测试环境验证操作流程,操作窗口需预留回退时间[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值