开发者社区> 长烟慢慢> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

nid 修改数据库的名字

简介: Nid是Oracle从9iR2开始提供的工具,可以用来更改数据库名称,而无需通过之前重建控制文件等繁琐方式。 需要说明的是,虽然这个工具来自9iR2,但是仍然可以被用于Oracle8i.
+关注继续查看

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

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
 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>
唉。。我测试的时候这步出错了,因为环境变量没改,我当时想到这一点了,但是去我的电脑-属性-环境变量  里面找了,没有。。把注册表那给忘了。。所以往下的测试就都失败了。。。。没办法了,我把原来的数据库给删了,然后重建了数据库。。。悲剧吧。。不过我觉得应该可以改成的。。转念又一想,真心没必要。。不改了。。
问题是重建了数据库,连不上sqlplus 了 。报错:ORA-12560: TNS: 协议适配器错误的问题
造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,

启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务

面板,启动oracleserviceXXXX,XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SI

D设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建

,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下

输set oracle_sid=XXXX,XXXX就是你的database SID(这样做关了windows的命令行,再开一个就得重新设置,所以一般得设置到我的电脑-属性-高级-环境变量-用户变量(我电脑里系统变量设置了不管用,用户变量设置后就好了)).
经过以上步骤,就可以解决问题。

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修改数据库的DBID
oracle在恢复中常用到dbid,dbid的作用是什么,它和db_name是不是一一对应关系?
653 0
数据结构------线段树2:单点修改与区间询问
上一次我们讲到线段树的概念和建树,今天,我们来讲线段树的单点修改与区间询问。 1.单点修改 单点修改会改变它所在子树的节点,当你修改了叶节点后,一定要更新其祖先的值。 code: void up(int p){ s[p] = s[p * 2] + s[p * 2 + 1]; }//向上更新...
805 0
数据库基本概念
数据库基本概念 一、 数据库相关概念 1、两种硬件扩展方式    a、垂直扩展:针对一台计算机    b、水平扩展:多台普通计算机     2、数据库相关概念    数据库服务器(本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端)--简称数据库(运维角度)    数据库管理管理系统.
1546 0
数据库事物四大特性-ACID
事务的:原子性、一致性、分离性、持久性   事物(transaction)是由一些列操作序列构成的执行单元,这些单元要么都做,要么不做,是一个不可分割的工作单元。数据库事物的四个基本性质(ACID)1.原子性(Atomicity)  指的是事物中包含的所有操作要么全做,要么全不做(all or none)。
771 0
内存对齐与ANSI C中struct型数据的内存布局 【转】
转自:http://blog.chinaunix.net/uid-25909619-id-3032209.html 当在C中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将如何在内存中放置这些字段?ANSI C对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密。
824 0
如何修改数据库时区
如何修改数据库时区 转自:http://space.itpub.net/175005/viewspace-618100 首先确认会话时区是否正确,会话时区可能和数据库时区不一致SQL> SELECT SESSIONTIMEZONE FROM DUAL; SESSIONTIMEZONE-----...
702 0
+关注
长烟慢慢
系统架构师
814
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载