天天看点

nid 修改数据库的名字

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:\Documents and Settings\Administrator>nid target=sys/liu123 dbname=otclt

DBNEWID: Release 10.2.0.1.0 - Production on 星期二 10月 30 15:44:33 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接数据库 ORCL (DBID=1292164344)

已连接服务器版本 10.1.0

数据库中的控制文件数:

    D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL01.CTL

    D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL02.CTL

    D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL03.CTL

是否将数据库 ID 和数据库名 ORCL 更改为 OTCLT? (Y/[N]) => Y

操作继续进行

将数据库 ID 从 1292164344 更改为 2981374306

将数据库名从 ORCL 更改为 OTCLT

    控制文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL01.CTL - 已修改

    控制文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL02.CTL - 已修改

    控制文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL03.CTL - 已修改

    数据文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF - dbid 已更改

已写入新名称

    数据文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF - dbid 已更改

    数据文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF - dbid 已更改

    数据文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF - dbid 已更改,

写入新名称

    数据文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF - dbid 已更改

    数据文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\TEMP01.DBF - dbid 已更改,

    控制文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL01.CTL - dbid 已更改

    控制文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL02.CTL - dbid 已更改

    控制文件 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL03.CTL - dbid 已更改

    实例关闭

数据库名已更改为 OTCLT。

修改参数文件并在重新启动前生成新的口令文件。

数据库 OTCLT 的数据库 ID 已更改为 2981374306。

此数据库的所有以前的备份和归档重做日志均不可用。

数据库无法识别恢复区中以前的备份和归档日志。

数据库已关闭, 用 RESETLOGS 选项打开数据库。

已成功更改数据库名和 ID。

DBNEWID - 已成功完成。

C:\Documents and Settings\Administrator>

5.Shutdown database

ORA-01109: database not open

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

ORA-01991: invalid password file 'e:\oracle\Ora9iR2\DATABASE\PWDeyglen.ORA'

SQL> CREATE SPFILE='E:\Oracle\Ora9iR2\database\SPFILEEYGLEN.ORA' FROM

 PFILE='E:\Oracle\admin\eyglen\pfile\init.ora';

File created.

8.重建口令文件

C:\>orapwd file=E:\Oracle\Ora9iR2\database\PWDeyglen.ORA password=oracle entries=5

9.shutdown数据库

如果不使用spfile,则可以跳至10

10.Startup mount,resetlogs打开

11.修改后的参数

NAME                                          TYPE                  VALUE

db_name                                 string                  eyglen

global_names                          boolean              FALSE

instance_name                        string                 eyglen

log_file_name_convert             string

oracle_trace_facility_name       string              oracled

service_names                          string             eyglen

12.对数据库做个全备份