dbid


1. 简述

在 oracle 9i 之前,修改数据库实例比较麻烦,需要重建 oracle 的控制文件以及需要 reset redolog 。从oracle 9i R2 版本开始,oracle 提供了 nid 系统命令,可以通过它来更改db_name和dbid,这样就避免重建控制文件了。使得修改oracle的数据库名和实例名更加简单。

nid 工具可以只用来更改数据库名(db_name),或者只更改数据库的id(dbid),或者两个同时更改。

Oracle 依据内部算法生成DBID , 并作为数据库的唯一标识。 在数据文件、日志文件、备份集中都写有DBID信息。相同的DBID表示是同一套数据库。

DBNAME是用户设置的内容,分布在密码文件、参数文件和数据文件中。

如果修改了DBID , Online Redo Log 需要进行Resetlogs操作,原有的归档和备份都将失效无法用于恢复修改DBID后的数据库。因此修改完DBID后,需要马上进行备份。

2. 操作步骤说明

如果配置了DBconsole,需要删除DBconsole对象。之后完全关闭,再启动到mount状态。 nid 命令支持修改dbid 和 dbname两个值。

但是在操作之前,需要明确是只需要修改dbid 还是同时修改dbid和dbname. 命令不同, 涉及到的数据库相关的文件也不相同。 下面是nid命令的影响范围:

序号涉及文件NID操作范围NID是否处理
1 Password File DBNAME
2 Parameter File DBNAME
3 Data File DBNAME,DBID
4 Online Redo Log DBID
5 ArchiveLog DBID
6 Backup set DBID
7 Control File DBNAME,DBID
8 NET File DBNAME
9 DBConsole DBNAME,DBID

了解不同的修改内容涉及的文件后,我们会知道操作时需要手工处理哪些文件。

比如使用了DBConsole,密码文件,修改DBNAME后,需要重建。如果修改了DBID,需要以resetlogs方式打开数据库。

整体操作步骤:

序号操作内容操作类型
1 关闭数据库并启动到mount状态  
2 修改dbid/dbname  
3 修改密码文件 修改dbid
4 重建参数文件、密码文件、调整Net文件、DBConsole 修改dbname
5 open resetlog 修改dbid

3. 操作命令

  • 修改DBID

    nid target=user/password@tnsname
    
  • 修改dbname

    nid target=user/password@tnsname dbname=newdbname setname=true
    
  • 修改DBID和DBNAME

    nid target=user/password@tnsname dbname=newdbname
    
posted @ 2025-09-17 23:46  halberd.lee  阅读(24)  评论(0)    收藏  举报