我们知道,在数据库内部,数据库的DBNAME和DBID是数据库标识符,其中,DBID更是数据库的唯一标识符,如果要重新调整数据库的名字,一般是要重建控制文件,为数据库赋予新的名称 (DBNAME);
但是,更改实例的内部数据库标识符 (DBID) 是不可能的,这样对于恢复管理器 (RMAN)来说,由于是通过 DBID来区分数据库的,因此无法在同一个RMAN存储库中同时注册种子数据库和重建之后的数据库。
对此,Oracle专门提供的数据库名字修改工具NID(DBNEWID),解决了这个问题。
NID(DBNEWID)实用程序是在Oracle 10g中引入的,是一个数据库实用程序,位于 $ORACLE_HOME/bin 目录中,可以更改操作数据库的内部数据库标识符 (DBID) 和数据库名称 (DBNAME)。
NID用途:
只修改数据库的DBID;
只修改数据库的DBNAME;
同时修改数据库的DBNAME和DBID;
注意:
- 如果仅调整DBNAME,调整之后,数据库是不需要使用RESETLOGS选项就可以正常打开,数据库备份和存档日志都不会失效。调整DBNAME的影响是: 需要调整初始化参数文件中的db_name参数;需要重新创建 Oracle密码文件.
- 如果仅调整数据库的DBID,由于更改数据库的DBID是一个全局的操作,一旦数据库的DBID发生改变,对应该数据库的所有备份和存档日志将不再可用,所以在更改 数据库DBID之后,必须使用RESETLOGS选项打开数据库,那么数据库会将联机重做日志的序列重置为1,因此,建议在调整数据库的DBID之后应立即对整个数据库进行备份。
NID 实用程序的参数:
[oracle@dkfdg ~]$ nid -help
DBNEWID: Release 19.0.0.0.0 - Production on Thu Dec 22 17:45:01 2022
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Keyword Description (Default)
----------------------------------------------------
TARGET Username/Password (NONE)
DBNAME New database name (NONE)
LOGFILE Output Log (NONE)
REVERT Revert failed change NO
SETNAME Set a new database name only NO
APPEND Append to output log NO
HELP Displays these messages NO
[oracle@dkfdg ~]$
. TARGET输入用户名和密码,注意,该用户必须具有sysdba的权限。譬如target=sys/oracle,当然,如果我们是在操作系统本地操作的话,可用反斜杠连接,即target=/
. REVERT指明一个失败的DBID操作是否需要回退。默认是NO。注意,如果数据库的DBID修改成功,该操作无法回退。该回退操作只针对失败的DBID修改操作。
. DBNAME指定新的数据库名。
. SETNAME默认是NO,则该数据库将同时修改DBID和DBNAME。如果指定为YES,则该数据库将只修改DBNAME
. LOGFILE日志文件,记录操作信息,默认是覆盖上个日志文件。如果APPEND设为YES的话,则这次操作信息将被追加到上个日志文件中。APPEND默认是NO。
. HELP用来提示DBNEWID的语法规则。默认为NO
如下在19c数据库上使用nid进行数据库DBID和DBNAME参数的调整:
- 建议调整之前对数据库进行全量备份
建议在调整DBNAE和DBID前对数据库进行全备&