查看nid帮助:

C:\Users\yafeishi>nid -help
DBNEWID: Release 10.2.0.3.0 - Production on 星期三 9月 5 11:30:11 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
关键字      说明                    (默认值)
----------------------------------------------------
TARGET      用户名/口令              (无)
DBNAME      新的数据库名             (无)
LOGFILE     输出日志                     (无)
REVERT      还原失败的更改            否
SETNAME     仅设置新的数据库名        否            ----可以只更改dbname,不更改dbid
APPEND      附加至输出日志            否
HELP        显示这些消息              否

下面通过实验说明nid的使用。

1.查看数据库版本:

SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

2.查看更改前的dbname和dbid:

  SQL> select dbid,name from v$database;

      DBID NAME
---------- ---------
1311433681 ORCL

3.关闭数据库:

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

4.启动数据库到mount状态:

SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 1258291200 bytes
Fixed Size                  1292156 bytes
Variable Size             360712324 bytes
Database Buffers          889192448 bytes
Redo Buffers                7094272 bytes
数据库装载完毕。

5.使用nid更改:

SQL> host
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\yafeishi>nid target=sys/dang dbname=yafeishi
DBNEWID: Release 10.2.0.3.0 - Production on 星期三 9月 5 11:50:33 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
已连接数据库 ORCL (DBID=1311433681)
已连接服务器版本 10.2.0
数据库中的控制文件数:
    E:\ORACLE\PRODUCT\ORADATA\ORCL\CONTROL01.CTL
    E:\ORACLE\PRODUCT\ORADATA\ORCL\CONTROL02.CTL
    E:\ORACLE\PRODUCT\ORADATA\ORCL\CONTROL03.CTL
是否将数据库 ID 和数据库名 ORCL 更改为 YAFEISHI? (Y/[N]) => y
操作继续进行
将数据库 ID 从 1311433681 更改为 671018571
将数据库名从 ORCL 更改为 YAFEISHI
    控制文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\CONTROL01.CTL - 已修改
    控制文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\CONTROL02.CTL - 已修改
    控制文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\CONTROL03.CTL - 已修改
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\SYSTEM01.DBF - dbid 已更改, 已写入新
名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\UNDOTBS01.DBF - dbid 已更改, 已写入
新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\SYSAUX01.DBF - dbid 已更改, 已写入新
名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\USERS01.DBF - dbid 已更改, 已写入新
名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_CEN__7VF3997
0_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_DANG_DAT_7VF39FW
F_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_CUS__7VF39J9
O_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_CUS__7VF39L2
7_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_IMPO_7VF39MV
T_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_CEN__7ZNGBSX
M_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_CEN__7ZNGD41
R_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_CEN__7ZNGFBQ
L_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_CEN__7ZNGFS2
1_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_CEN__80SFDX3
2_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS_TEST_83RXVJ9
2_.DBF - dbid 已更改, 已写入新名称
    数据文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\TEMP01.DBF - dbid 已更改, 已写入新名

    控制文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\CONTROL01.CTL - dbid 已更改, 已写入
新名称
    控制文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\CONTROL02.CTL - dbid 已更改, 已写入
新名称
    控制文件 E:\ORACLE\PRODUCT\ORADATA\ORCL\CONTROL03.CTL - dbid 已更改, 已写入
新名称
    实例关闭
数据库名已更改为 YAFEISHI。
修改参数文件并在重新启动前生成新的口令文件。
数据库 YAFEISHI 的数据库 ID 已更改为 671018571。
此数据库的所有以前的备份和归档重做日志均不可用。
数据库无法识别恢复区中以前的备份和归档日志。
数据库已关闭, 用 RESETLOGS 选项打开数据库。
已成功更改数据库名和 ID。
DBNEWID - 已成功完成。

6.修改初始化文件和spfile:

*.db_name='yafeishi'

SQL> startup pfile=c:\pfileorcl.ora
ORACLE 例程已经启动。
Total System Global Area 1258291200 bytes
Fixed Size                  1292156 bytes
Variable Size             360712324 bytes
Database Buffers          889192448 bytes
Redo Buffers                7094272 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> create spfile from pfile='c:\pfileorcl.ora';
文件已创建。

7.resetlogs方式打开数据库:

SQL> alter database open resetlogs;
数据库已更改。

8.查看当前dbname和dbid:
SQL> select dbid,name from v$database;
      DBID NAME
---------- ---------
671018571 YAFEISHI

9.查看db_name 和 instance_name :

SQL> show parameter name

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_file_name_convert                 string    

db_name                              string      yafeishi

db_unique_name                       string      yafeishi

global_names                         boolean     FALSE

instance_name                        string      orcl

lock_name_space                      string    

log_file_name_convert                string    

service_names                        string      yafeishi

可以发现,nid只是修改了dbname,而不更改instance_name。


如果想db_name 和 instance_name一致,则进行修改:

SQL> alter system set instance_name=yafeishi scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1258291200 bytes
Fixed Size                  1292156 bytes
Variable Size             360712324 bytes
Database Buffers          889192448 bytes
Redo Buffers                7094272 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------------
instance_name                        string      YAFEISHI

官方说明可以看这:http://docs.oracle.com/cd/B10500_01/server.920/a96652/ch14.htm

ps: 在更改之前和之后一定要做个全库备份。切记。


相对之前的 修改实例名 ,这个倒是简单了很多。


--EOF

原文地址:http://blog.yafeishi.net/2012/09/nid-change-dbname-dbid.html