Oracle工具之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: Release 11.2.0.2.0 - Production on Wed Dec 4 23:39:11 2013

 

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

 

Password:

Connected to database CRM (DBID=3599153036)

 

Connected to server version 11.2.0

 

Control Files in database:

/oracle/CRM/control03.ctl

 

Change database ID of database CRM? (Y/[N]) => y

 

Proceeding with operation

Changing database ID from 3599153036 to 3641774948

Control File /oracle/CRM/control03.ctl - modified

Datafile /oracle/CRM/system01.db - dbid changed

Datafile /oracle/CRM/sysaux01.db - dbid changed

Datafile /oracle/CRM/zx.db - dbid changed

Datafile /oracle/CRM/users01.db - dbid changed

Datafile /oracle/CRM/pos.db - dbid changed

Datafile /oracle/CRM/erp.db - dbid changed

Datafile /oracle/CRM/user01.db - dbid changed

Datafile /oracle/CRM/undotbs03.db - dbid changed

Datafile /oracle/CRM/crm.db - dbid changed

Datafile /oracle/CRM/jxc.db - dbid changed

Datafile /oracle/CRM/temp01.db - dbid changed

Control File /oracle/CRM/control03.ctl - dbid changed

Instance shut down

 

Database ID for database CRM changed to 3641774948.

All previous backups and archived redo logs for this database are unusable.

Database has been shutdown, open database with RESETLOGS option.

Succesfully changed database ID.

DBNEWID - Completed succesfully.

 

[oracle@source ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.2.0 Production on Wed Dec 4 23:47:21 2013

 

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

 

Connected to an idle instance.

 

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> alter database open resetlogs;

 

Database altered.

 

SQL> select dbid,name from v$database;

 

DBID NAME

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

3641774948 CRM

 

 

eg2 :仅更改数据库db_name

 

oracle@source ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.2.0 Production on Thu Dec 5 00:11:03 2013

 

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

 

 

Connected to:

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

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

 

SQL> select open_mode from v$database;

 

OPEN_MODE

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

READ WRITE

 

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 905971816 bytes

Database Buffers 335544320 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 dbname=CRM_TEST setname=YES

 

DBNEWID: Release 11.2.0.2.0 - Production on Thu Dec 5 00:24:58 2013

 

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

 

Password:

Connected to database CRM (DBID=3641774948)

 

Connected to server version 11.2.0

 

Control Files in database:

/oracle/CRM/control03.ctl

 

Change database name of database CRM to CRM_TEST? (Y/[N]) => y

 

Proceeding with operation

Changing database name from CRM to CRM_TEST

Control File /oracle/CRM/control03.ctl - modified

Datafile /oracle/CRM/system01.db - wrote new name

Datafile /oracle/CRM/sysaux01.db - wrote new name

Datafile /oracle/CRM/zx.db - wrote new name

Datafile /oracle/CRM/users01.db - wrote new name

Datafile /oracle/CRM/pos.db - wrote new name

Datafile /oracle/CRM/erp.db - wrote new name

Datafile /oracle/CRM/user01.db - wrote new name

Datafile /oracle/CRM/undotbs03.db - wrote new name

Datafile /oracle/CRM/crm.db - wrote new name

Datafile /oracle/CRM/jxc.db - wrote new name

Datafile /oracle/CRM/temp01.db - wrote new name

Control File /oracle/CRM/control03.ctl - wrote new name

Instance shut down

 

Database name changed to CRM_TEST.

Modify parameter file and generate a new password file before restarting.

Succesfully changed database name.

DBNEWID - Completed succesfully.

 

[oracle@source ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.2.0 Production on Thu Dec 5 00:25:33 2013

 

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

 

Connected to an idle instance.

 

SQL> startup nomount;

ORACLE instance started.

 

Total System Global Area 1252663296 bytes

Fixed Size 2226072 bytes

Variable Size 905971816 bytes

Database Buffers 335544320 bytes

Redo Buffers 8921088 bytes

 

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

 

System altered.

 

[oracle@source ~]$orapwd file="$ORACLE_HOME/dbs/orapw$ORACLE_SID" password=dhhzdhhz force=y

 

[oracle@source dbs]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.2.0 Production on Thu Dec 5 00:34:40 2013

 

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

 

 

Connected to:

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

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

 

SQL> startup force open;

ORACLE instance started.

 

Total System Global Area 1252663296 bytes

Fixed Size 2226072 bytes

Variable Size 905971816 bytes

Database Buffers 335544320 bytes

Redo Buffers 8921088 bytes

Database mounted.

Database opened.

SQL> select dbid,name from v$database;

 

DBID NAME

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

3641774948 CRM_TEST

相关内容

    暂无相关文章