首页  >  文章  >  数据库  >  oracle工具之nid命令的使用

oracle工具之nid命令的使用

WBOY
WBOY原创
2016-06-07 17:37:211070浏览

当我们手动copy了整个数据库,并通过重建控制文件给数据库指定了新的dbname,但是却不能给数据库分配新的dbid.对于以上问题我们可以通过nid命令来对数据库分配一

   当我们手动copy了整个数据库,并通过重建控制文件给数据库指定了新的dbname,但是却不能给数据库分配新的dbid.对于以上问题我们可以通过nid命令来对数据库分配一个全新的dbid。同时需要注意rman也是通过dbid来区分数据库。


一 命令解释

[oracle@source ~]$ nid  help=yes


DBNEWID: Release 11.2.0.2.0 - Production on Thu Dec 5 00:09:50 2013


Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Keyword     Description                    (Default)

----------------------------------------------------

TARGET      Username/Password              (NONE)    指定连接数据库的用户名和密码

DBNAME      New database name              (NONE)  DBNAME=new_db_name 改变数据库的名字  

LOGFILE     Output Log                     (NONE) LOGFILE=logfile指定输出消息到指定的日志文件,默认nid覆盖之前的日子文件

REVERT      Revert failed change           NO  指定yes表明更改dbid失败时能够恢复之前的状态

SETNAME     Set a new database name only   NO  指定yes表明仅仅更改数据库db_name

APPEND      Append to output log           NO  指定yes标识输出追加到已经存在的日志文件

HELP        Displays these messages        NO  指定yes显示帮助信息


注意:可以同时更改数据库的dbid和db_name,也可以仅改变数据库的db_name、抑或仅更改数据库的dbid。语法分别如下:

改变dbid和db_name : nid target=sys/dhhzdhhz  dbname=crm_test (也可以target=/)

仅改变db_name:  nid target=sys/dhhzdhhz dbname=crm_test  setname=yes (也可以target=/)

仅更改dbid: nid target=sys/dhhzdhhz (也可以target=/)


二 使用nid的注意事项


1 确保有能够对数据库进行完全恢复的备份。

2 确保执行更改dbid操作时数据库处于mounted状态且mounted之前数据库是经过shutdown immediate关闭的。

3 使用nid更改数据库的dbid后,数据库需要alter database open resetlogs启动,启动之后须对数据库进行一次全备份,因为之前的备份和归档已经不能再使用了。

4 使用nid更改数据库dbname后,需更改初始化参数文件中的DB_NAME参数并重建密码文件。

5 使用nid不能更改全局数据库名。

6 确保所有数据文件处于online状态且不需要恢复。

7 尽量确保oracle没有离线的数据文件和只读表空间,如果有使其正常化。


三 举两个例子


eg1:仅更改数据库dbid


SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.


Total System Global Area 1252663296 bytes

Fixed Size                  2226072 bytes

Variable Size             922749032 bytes

Database Buffers          318767104 bytes

Redo Buffers                8921088 bytes

Database mounted.

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@source ~]$ nid target=sys


DBNEWID:版本 11.2.0.2.0 - 于 2013 年 12 月 4 日星期三 23:39:11 发布


版权所有 (c ) 1982 年、2009 年,Oracle 和/或其附属公司。  保留所有权利。


密码:

已连接到数据库 CRM (DBID=3599153036)


已连接到服务器版本 11.2.0


控制文件数据库:

   /oracle/CRM/control03.ctl


更改数据库 CRM 的数据库 ID? (Y/[N]) => y


继续操作

将数据库 ID 从 3599153036 更改为 3641774948

   控制文件 /oracle/CRM/control03.ctl - 已修改

   数据文件 /oracle/CRM/system01.db - dbid 已更改

   数据文件 /oracle/CRM/sysaux01​​.db - dbid 已更改

   数据文件 /oracle/CRM/zx.db - dbid 已更改

   数据文件 /oracle/CRM/users01.db - dbid 已更改

   数据文件 /oracle/CRM/pos.db - dbid 已更改

数据文件 /oracle/CRM/erp.db - dbid 已更改

   数据文件 /oracle/CRM/user01.db - dbid 已更改

   数据文件 / oracle/CRM/undotbs03.db - dbid 已更改

   数据文件 /oracle/CRM/crm.db - dbid 已更改

   数据文件 /oracle/ CRM/jxc.db - dbid 已更改

   数据文件 /oracle/CRM/temp01.db - dbid 已更改

   控制文件 /oracle/CRM /control03.ctl - dbid 已更改

   实例关闭


数据库 CRM 的数据库 ID 更改为3641774948.

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

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

成功更改数据库 ID。

DBNEWID - 成功完成。


[oracle@source ~]$ sqlplus / as sysdba


SQL*Plus:版本 11.2。 0.2.0 于 2013 年 12 月 4 日星期三 23:47:21 投入使用


版权所有 (c) 1982, 2010, Oracle。  保留所有权利。


已连接到空闲实例。


SQL>启动挂载;

ORACLE 实例已启动。


总系统全局区域 1252663296 字节

固定大小                  2226072 字节

可变大小             922749032 字节

数据库缓冲区         318767104 字节

重做缓冲区                8921088 字节

已安装数据库。



SQL>更改数据库打开重置日志;


数据库已更改。


SQL> select dbid,name from v$database;


     DBID NAME

----- ---- ---------

3641774948 CRM



eg2 :仅更改数据库db_name


oracle@source ~]$ sqlplus / as sysdba


SQL*Plus:于 2013 年 12 月 5 日星期四 00:11:03 发布 11.2.0.2.0 生产


版权所有 (c) 1982、2010,Oracle。  保留所有权利。



连接到:

Oracle Database 11g 企业版版本 11.2.0.2.0 - 64 位生产

具有分区、OLAP、数据挖掘和实际应用程序测试选项


SQL>从 v$database 选择 open_mode;


OPEN_MODE

--------- -----------

读写


SQL> shutdown 立即;

数据库已关闭。

数据库已卸载。

ORACLE 实例关闭。

SQL>启动挂载;

ORACLE 实例已启动。


总系统全局区域 1252663296 字节

固定大小                  2226072 字节

可变大小             905971816 字节

数据库缓冲区          335544320 字节

重做缓冲区                8921088 字节

数据库已安装。

SQL>退出

与 Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64 位生产版断开

使用分区、OLAP、数据挖掘和真实应用程序测试选项

oracle@source ~]$ nid target=sys dbname=CRM_TEST setname=YES


DBNEWID:版本 11.2.0.2.0 - 于 2013 年 12 月 5 日星期四 00:24:58 发布


版权所有 (c) 1982, 2009 年,Oracle 和/或其附属公司。  保留所有权利。


密码:

已连接到数据库 CRM (DBID=3641774948)


已连接到服务器版本 11.2.0


控制文件数据库:

   /oracle/CRM/control03.ctl


将数据库 CRM 的数据库名称更改为CRM_测试? (Y/[N]) => y


继续操作

将数据库名称从 CRM 更改为 CRM_TEST

   控制文件 /oracle/CRM/control03.ctl - 修改

   数据文件 /oracle/CRM/system01.db - 写入新名称

   数据文件 /oracle/CRM/sysaux01​​.db - 写入新名称

   数据文件 /oracle/CRM/zx.db - 写入新名称

   数据文件 /oracle/CRM/users01.db - 写入新名称

   数据文件 /oracle/CRM/pos.db - 写入新名称

   数据文件 /oracle/CRM/erp.db - 写入新名称

   数据文件 /oracle/CRM/user01.db - 写入新名称

   数据文件 /oracle/CRM/undotbs03.db - 写入新名称

   数据文件 /oracle/CRM/crm.db - 写入新名称

   数据文件 /oracle/CRM/jxc.db - 写入新名称

   数据文件 /oracle/CRM/temp01.db - 写入新名称

   控制文件 /oracle/CRM/control03.ctl - 写入新名称

   实例关闭


数据库名称更改为 CRM_TEST。

重启前修改参数文件并生成新的密码文件。

数据库更改成功名称。

DBNEWID - 成功完成。


[oracle@source ~]$ sqlplus / as sysdba


SQL*Plus:于 2013 年 12 月 5 日星期四 00:25:33 发布 11.2.0.2.0 生产


版权所有 (c) 1982、2010,Oracle。  保留所有权利。


已连接到空闲实例。


SQL>启动 nomount;

ORACLE 实例已启动。


总系统全局区域 1252663296 字节

固定大小                  2226072 字节

可变大小             905971816 字节

数据库缓冲区          335544320 字节

重做缓冲区                8921088 字节


SQL>; alter system set db_name=CRM_TEST range=spfile;


系统已更改。


[oracle@source ~]$orapwd file="$ORACLE_HOME/dbs/orapw$ORACLE_SID" 密码=dhhzdhhz Force=y


[oracle@source dbs]$ sqlplus / as sysdba


SQL*Plus:于 2000 年 12 月 5 日星期四发布 11.2.0.2.0 生产版:34:40 2013


版权所有 (c) 1982、2010,Oracle。  保留所有权利。



连接到:

Oracle Database 11g 企业版版本 11.2.0.2.0 - 64 位生产

具有分区、OLAP、数据挖掘和实际应用程序测试选项


SQL>启动强制打开;

ORACLE 实例已启动。


总系统全局区域 1252663296 字节

固定大小                 2226072 字节

可变大小             905971816 字节

数据库缓冲区          335544320 字节

重做缓冲区                8921088 字节

数据库已安装。

数据库已打开。

SQL> select dbid,name from v$database;


     DBID NAME

----- ---- ---------

3641774948 CRM_TEST


本文出自 “myblog” 博客,请务必保留此出处

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn