使用nid的修改数据库名

Use Nid to Change dbname-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:\>nid target=sys/orasys dbname=ZAKI

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 ORCL to ZAKI? (Y/[N]) => Y

Proceeding with operation
Changing database ID from 677189177 to 3955758099
Changing database name from ORCL to ZAKI
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=ZAKI

#instance_name=ORCL

###########################################
db_domain=""
db_name=ZAKI
# db_name=ORCL
###########################################

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\PWDzaki.ORA'
SQL> CREATE SPFILE='E:\Oracle\Ora9iR2\database\SPFILEZAKI.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\PWDzaki.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

--windows环境下可以通过ORADIM来删除和重建实例

12.对数据库做个全备份

至此,数据库称成功修改,由于dbid发生了变化,数据库已不能使用以前的备份和归档日志,应立即备份数据库,后面会继续研究10g后版本在db_name变化下使用之前的数据备份进行数据恢复的问题

 参考原文:http://www.eygle.com/faq/Use.Nid.to.Change.Your.dbname.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值