查看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