原文链接:
http://www.eygle.com/faq/Use.Nid.to.Change.Your.dbname.htm
Nid是Oracle从9iR2开始提供的工具,可以用来更改数据库名称,而无需通过之前重建控制文件等繁琐方式.
需要说明的是,虽然这个工具来自9iR2,但是仍然可以被用于Oracle8i.
先看一下帮助:
>
> C:>nid -help
> DBNEWID: Release 10.1.0.2.0 - Production
> Copyright (c) 2001, 2004, Oracle. All rights reserved.
>
> 关键字 说明 (默认值)
> ----------------------------------------------------
> TARGET 用户名/口令 (无)
> DBNAME 新的数据库名 (无)
> LOGFILE 输出日志 (无)
> REVERT 还原失败的更改 否
> SETNAME 仅设置新的数据库名 否
> APPEND 附加至输出日志 否
> HELP 显示这些消息 否
>
>
我们通过范例来看一下用法:
1.数据库当前设置
>
>
> SQL> select * from v$version;
>
> BANNER
> ----------------------------------------------------------------
> Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
> PL/SQL Release 9.2.0.1.0 - Production
> CORE 9.2.0.1.0 Production
> TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
> NLSRTL Version 9.2.0.1.0 - Production
>
> SQL> show parameter name
>
> NAME TYPE VALUE
> ------------------------------------ ----------- ------------------------------
> db_file_name_convert string
> db_name string eyglev
> global_names boolean FALSE
> instance_name string eyglev
> lock_name_space string
> log_file_name_convert string
> oracle_trace_collection_name string
> oracle_trace_facility_name string oracled
> plsql_native_make_file_name string
> service_names string eyglev
>
2.Shutdown数据库
>
> SQL> connect sys/orasys as sysdba
> Connected.
> SQL> shutdown immediate
> Database closed.
> Database dismounted.
> ORACLE instance shut down.
>
>
3.Startup mount
> SQL> startup mount
> ORACLE instance started.
>
> Total System Global Area 135338868 bytes
> Fixed Size 453492 bytes
> Variable Size 109051904 bytes
> Database Buffers 25165824 bytes
> Redo Buffers 667648 bytes
> Database mounted.
>
4. 使用NID更改
>
>
> SQL> host
> Microsoft Windows 2000 [Version 5.00.2195]
> (C) 版权所有 1985-2000 Microsoft Corp.
>
> C:>nid target=sys/orasys dbname=eyglen
> DBNEWID: Release 9.2.0.1.0 - Production
> Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
>
> Connected to database EYGLEV (DBID=677189177)
>
> Control Files in database:
> E:\ORACLE\ORADATA\EYGLEN\CONTROL01.CTL
> E:\ORACLE\ORADATA\EYGLEN\CONTROL02.CTL
> E:\ORACLE\ORADATA\EYGLEN\CONTROL03.CTL
>
> Change database ID and database name EYGLEV to EYGLEN? (Y/[N]) => Y
>
> Proceeding with operation
> Changing database ID from 677189177 to 3955758099
> Changing database name from EYGLEV to EYGLEN
> Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL01.CTL - modified
> Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL02.CTL - modified
> Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL03.CTL - modified
> Datafile E:\ORACLE\ORADATA\EYGLEN\SYSTEM01.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\UNDOTBS01.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\CWMLITE01.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\DRSYS01.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\INDX01.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\ODM01.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\TOOLS01.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\USERS01.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\XDB01.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\EYGLE.DBF - dbid changed, wrote new name
> Datafile E:\ORACLE\ORADATA\EYGLEN\TEMP01.DBF - dbid changed, wrote new name
> Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL01.CTL - dbid changed, wrote new name
> Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL02.CTL - dbid changed, wrote new name
> Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL03.CTL - dbid changed, wrote new name
>
> Database name changed to EYGLEN.
> Modify parameter file and generate a new password file before restarting.
> Database ID for database EYGLEN changed to 3955758099.
> All previous backups and archived redo logs for this database are unusable.
> Shut down database and open with RESETLOGS option.
> Succesfully changed database name and ID.
> DBNEWID - Completed succesfully.
>
5.Shutdown database
> SQL> shutdown immediate
> ORA-01109: database not open
>
>
> Database dismounted.
> ORACLE instance shut down.
>
6.修改初始化参数文件、spfile文件(init.ora/spfile)
> ###########################################
> instance_name=eyglen
> #instance_name=eyglev
>
> ###########################################
> db_domain=""
> db_name=eyglen
> # db_name=eyglev
> ###########################################
>
7.重建spfile文件
如果你没有使用spfile,当然无需重建,跳至8
>
>
> SQL> startup pfile=E:\Oracle\admin\eyglen\pfile\init.ora
> ORACLE instance started.
>
> Total System Global Area 135338868 bytes
> Fixed Size 453492 bytes
> Variable Size 109051904 bytes
> Database Buffers 25165824 bytes
> Redo Buffers 667648 bytes
> ORA-01991: invalid password file 'e:\oracle\Ora9iR2\DATABASE\PWDeyglen.ORA'
>
>
> SQL> CREATE SPFILE='E:\Oracle\Ora9iR2\database\SPFILEEYGLEN.ORA' FROM
> 2 PFILE='E:\Oracle\admin\eyglen\pfile\init.ora';
>
> File created.
>
8.重建口令文件
> SQL> host
> Microsoft Windows 2000 [Version 5.00.2195]
> (C) 版权所有 1985-2000 Microsoft Corp.
>
> C:>orapwd file=E:\Oracle\Ora9iR2\database\PWDeyglen.ORA password=oracle entries=5
>
9.shutdown数据库
如果不使用spfile,则可以跳至10
> SQL> shutdown immediate
> ORA-01109: database not open
>
>
> Database dismounted.
> ORACLE instance shut down.
10.Startup mount,resetlogs打开
>
> SQL> startup mount
> ORACLE instance started.
>
> Total System Global Area 135338868 bytes
> Fixed Size 453492 bytes
> Variable Size 109051904 bytes
> Database Buffers 25165824 bytes
> Redo Buffers 667648 bytes
> Database mounted.
> SQL> alter database open resetlogs
> 2 /
>
> Database altered.
>
> SQL>
>
11.修改后的参数
>
> SQL> show parameter name
>
> NAME TYPE VALUE
> ------------------------------------ ----------- ------------------------------
> db_file_name_convert string
> db_name string eyglen
> global_names boolean FALSE
> instance_name string eyglen
> lock_name_space string
> log_file_name_convert string
> oracle_trace_collection_name string
> oracle_trace_facility_name string oracled
> plsql_native_make_file_name string
> service_names string eyglen
>
12.对数据库做个全备份
附:使用nid更改817的数据库
1. 更改前
> > SVRMGR> startup mount > 已启动 ORACLE 实例。 > 系统全局区域合计有 61970460个字节 > Fixed Size 75804个字节 > Variable Size 17645568个字节 > Database Buffers 44171264个字节 > Redo Buffers 77824个字节 > 已装入数据库。 > SVRMGR> show parameter name > NAME TYPE VALUE > ----------------------------------- ------- ------------------------------ > db_file_name_convert 字符串 > db_name 字符串 vilen > global_names 布尔值 TRUE > instance_name 字符串 vilen > lock_name_space 字符串 > log_file_name_convert 字符串 > oracle_trace_collection_name 字符串 > oracle_trace_facility_name 字符串 oracled > service_names 字符串 vilen > SVRMGR> >
2. 修改
>
> C:>nid target=sys/orasys@vilen dbname=vilene
> DBNEWID: Release 9.2.0.1.0 - Production
> Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
>
> Connected to database VILEN (DBID=1535443189)
>
> Control Files in database:
> C:\ORACLE\ORADATA\VILEN\CONTROL01.CTL
> C:\ORACLE\ORADATA\VILEN\CONTROL02.CTL
> C:\ORACLE\ORADATA\VILEN\CONTROL03.CTL
>
> Change database ID and database name VILEN to VILENE? (Y/[N]) => Y
>
> Proceeding with operation
> Changing database ID from 1535443189 to 681857412
> Changing database name from VILEN to VILENE
> Control File C:\ORACLE\ORADATA\VILEN\CONTROL01.CTL - modified
> Control File C:\ORACLE\ORADATA\VILEN\CONTROL02.CTL - modified
> Control File C:\ORACLE\ORADATA\VILEN\CONTROL03.CTL - modified
> Datafile C:\ORACLE\ORADATA\VILEN\SYSTEM01.DBF - dbid changed, wrote new name
> Datafile C:\ORACLE\ORADATA\VILEN\RBS01.DBF - dbid changed, wrote new name
> Datafile C:\ORACLE\ORADATA\VILEN\USERS01.DBF - dbid changed, wrote new name
> Datafile C:\ORACLE\ORADATA\VILEN\TEMP01.DBF - dbid changed, wrote new name
> Datafile C:\ORACLE\ORADATA\VILEN\TOOLS01.DBF - dbid changed, wrote new name
> Datafile C:\ORACLE\ORADATA\VILEN\INDX01.DBF - dbid changed, wrote new name
> Datafile C:\ORACLE\ORADATA\VILEN\EQSP01.DBF - dbid changed, wrote new name
> Datafile C:\ORACLE\ORADATA\VILEN\PERFSTAT.DBF - dbid changed, wrote new name
> Control File C:\ORACLE\ORADATA\VILEN\CONTROL01.CTL - dbid changed, wrote new name
> Control File C:\ORACLE\ORADATA\VILEN\CONTROL02.CTL - dbid changed, wrote new name
> Control File C:\ORACLE\ORADATA\VILEN\CONTROL03.CTL - dbid changed, wrote new name
>
> Database name changed to VILENE.
> Modify parameter file and generate a new password file before restarting.
> Database ID for database VILENE changed to 681857412.
> All previous backups and archived redo logs for this database are unusable.
> Shut down database and open with RESETLOGS option.
> Succesfully changed database name and ID.
> DBNEWID - Completed succesfully.
>
3. 关闭数据库
> SVRMGR> shutdown immediate
> ORA-01109: 数据库未打开
> 已卸下数据库。
> 已关闭 ORACLE 实例。
4. 修改参数文件
> db_name = "vilene"
> #db_name = "vilen"
>
> instance_name = vilene
> #instance_name = vilen
5. 重建口令文件
> C:\oracle\database>orapwd file=PWDvilen.ORA password=oracle entries=5
>
> C:\oracle\database>
>
6. mount数据库
> > SVRMGR> startup mount > ORACLE instance started. > Total System Global Area 61970460 bytes > Fixed Size 75804 bytes > Variable Size 17645568 bytes > Database Buffers 44171264 bytes > Redo Buffers 77824 bytes > Database mounted. >
7. 打开数据库
> SVRMGR> alter database open resetlogs
> 2> /
> Statement processed.
>
8. 修改后的参数
> > SVRMGR> show parameter name > NAME TYPE VALUE > ----------------------------------- ------- ------------------------------ > db_file_name_convert string > db_name string vilene > global_names boolean TRUE > instance_name string vilene > lock_name_space string > log_file_name_convert string > oracle_trace_collection_name string > oracle_trace_facility_name string oracled > service_names string vilen >