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
===================
天行健,君子以自强不息
地势坤,君子以厚德载物
===================

浙公网安备 33010602011771号