使用DBNEWID修改DBNAME和DBID

本文介绍在Oracle数据库中如何使用DBNEWID工具修改数据库标识(DBID)和数据库名称(DBNAME),解决DataGuard环境下数据库注册冲突问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Oracle数据库中,dbname和dbid是可以在创建数据库后修改的。一般在什么情况下去修改他们呢?我们知道在Data Guard physical standby DB下,主库和备库的DBID是一致的,当撤销Data Guard环境之后需要使用其中一个备库RMAN Catalog注册主库目标数据库的时会出现一个问题,因为RMAN认DBID,由于DBID相同,所以引发冲突这时候就会注册失败,可以通过修改DBID解决这个问题。


[oracle@testdb ~]$ sqlplus / AS sysdba

SQL*Plus: Release 10.2.0.1.0 - Production ON Wed Jan 18 11:02:03 2012

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


Connected TO:
Oracle DATABASE 10g Enterprise Edition Release 10.2.0.1.0 - Production
WITH the Partitioning, OLAP AND DATA Mining options

SQL> SELECT dbid FROM v$database;

      DBID
----------
2556212653

SQL>
以上2556212653就是dbid


DBNEWID is a database utility that can change the internal database identifier (DBID)
and the database name (DBNAME) for an operational database.
Prior to the introduction of the DBNEWID utility, you could manually create a copy of
a database and give it a new database name (DBNAME) by re-creating the control file.
However, you could not give the database a new identifier (DBID). The DBID is an
internal, unique identifier for a database. Because Recovery Manager (RMAN)
distinguishes databases by DBID, you could not register a seed database and a
manually copied database together in the same RMAN repository. The DBNEWID
utility solves this problem by allowing you to change any of the following:
■ Only the DBID of a database
■ Only the DBNAME of a database
■ Both the DBNAME and DBID of a database


Changing the DBID and Database Name
当前dbname和dbid

SQL> SELECT open_mode,dbid,name FROM v$database;

OPEN_MODE        DBID NAME
---------- ---------- ---------
MOUNTED    2556212653 TESTDB

SQL> exit
Disconnected FROM Oracle DATABASE 10g Enterprise Edition Release 10.2.0.1.0 - Production
WITH the Partitioning, OLAP AND DATA Mining options
[oracle@testdb ~]$

修改dbname和dbid

[oracle@testdb ~]$ nid target=/ dbname=ZWC

DBNEWID: Release 10.2.0.1.0 - Production ON Wed Jan 18 11:40:26 2012

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

Connected TO DATABASE TESTDB (DBID=2556212653)

Connected TO server version 10.2.0

Control Files IN DATABASE:
    /u01/app/oracle/oradata/testdb/control01.ctl
    /u01/app/oracle/oradata/testdb/control02.ctl
    /u01/app/oracle/oradata/testdb/control03.ctl

CHANGE DATABASE ID AND DATABASE name TESTDB TO ZWC? (Y/[N]) => Y

Proceeding WITH operation
Changing DATABASE ID FROM 2556212653 TO 528908138
Changing DATABASE name FROM TESTDB TO ZWC
    Control File /u01/app/oracle/oradata/testdb/control01.ctl - modified
    Control File /u01/app/oracle/oradata/testdb/control02.ctl - modified
    Control File /u01/app/oracle/oradata/testdb/control03.ctl - modified
    Datafile /u01/app/oracle/oradata/testdb/system01.dbf - dbid changed, wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/undotbs01.dbf - dbid changed, wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/sysaux01.dbf - dbid changed, wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/users01.dbf - dbid changed, wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/example01.dbf - dbid changed, wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/temp01.dbf - dbid changed, wrote NEW name
    Control File /u01/app/oracle/oradata/testdb/control01.ctl - dbid changed, wrote NEW name
    Control File /u01/app/oracle/oradata/testdb/control02.ctl - dbid changed, wrote NEW name
    Control File /u01/app/oracle/oradata/testdb/control03.ctl - dbid changed, wrote NEW name
    Instance shut down

DATABASE name changed TO ZWC.
MODIFY parameter file AND generate a NEW password file BEFORE restarting.
DATABASE ID FOR DATABASE ZWC changed TO 528908138.
ALL previous backups AND archived redo logs FOR this DATABASE are unusable.
DATABASE has been shutdown, OPEN DATABASE WITH RESETLOGS OPTION.
Succesfully changed DATABASE name AND ID.
DBNEWID - Completed succesfully.
修改pfile文件

SQL> CREATE pfile='/u01/app/tmp.ora' FROM spfile;

File created.

SQL>
[oracle@testdb app]$ cat tmp.ora |grep db_name
*.db_name='ZWC'
[oracle@testdb app]$
SQL> CREATE spfile FROM pfile='/u01/app/tmp.ora';

File created.

SQL>


启动数据库验证

SQL> startup mount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed SIZE                  1218992 bytes
Variable SIZE              92276304 bytes
DATABASE Buffers          188743680 bytes
Redo Buffers                2973696 bytes
DATABASE mounted.
SQL> ALTER DATABASE OPEN resetlogs;

DATABASE altered.

SQL> SELECT open_mode,dbid,name FROM v$database;

OPEN_MODE        DBID NAME
---------- ---------- ---------
READ WRITE  528908138 ZWC

SQL>

Changing Only the Database ID
当前dbname和dbid
SQL> SELECT open_mode,dbid,name FROM v$database;

OPEN_MODE        DBID NAME
---------- ---------- ---------
READ WRITE  528908138 ZWC

SQL>

修改dbid
SQL> shutdown immediate
DATABASE closed.
DATABASE dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed SIZE                  1218992 bytes
Variable SIZE              92276304 bytes
DATABASE Buffers          188743680 bytes
Redo Buffers                2973696 bytes
DATABASE mounted.
SQL> exit
Disconnected FROM Oracle DATABASE 10g Enterprise Edition Release 10.2.0.1.0 - Production
WITH the Partitioning, OLAP AND DATA Mining options
[oracle@testdb ~]$
[oracle@testdb ~]$ nid target=/

DBNEWID: Release 10.2.0.1.0 - Production ON Wed Jan 18 12:31:13 2012

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

Connected TO DATABASE ZWC (DBID=528908138)

Connected TO server version 10.2.0

Control Files IN DATABASE:
    /u01/app/oracle/oradata/testdb/control01.ctl
    /u01/app/oracle/oradata/testdb/control02.ctl
    /u01/app/oracle/oradata/testdb/control03.ctl

CHANGE DATABASE ID OF DATABASE ZWC? (Y/[N]) => Y

Proceeding WITH operation
Changing DATABASE ID FROM 528908138 TO 528872785
    Control File /u01/app/oracle/oradata/testdb/control01.ctl - modified
    Control File /u01/app/oracle/oradata/testdb/control02.ctl - modified
    Control File /u01/app/oracle/oradata/testdb/control03.ctl - modified
    Datafile /u01/app/oracle/oradata/testdb/system01.dbf - dbid changed
    Datafile /u01/app/oracle/oradata/testdb/undotbs01.dbf - dbid changed
    Datafile /u01/app/oracle/oradata/testdb/sysaux01.dbf - dbid changed
    Datafile /u01/app/oracle/oradata/testdb/users01.dbf - dbid changed
    Datafile /u01/app/oracle/oradata/testdb/example01.dbf - dbid changed
    Datafile /u01/app/oracle/oradata/testdb/temp01.dbf - dbid changed
    Control File /u01/app/oracle/oradata/testdb/control01.ctl - dbid changed
    Control File /u01/app/oracle/oradata/testdb/control02.ctl - dbid changed
    Control File /u01/app/oracle/oradata/testdb/control03.ctl - dbid changed
    Instance shut down

DATABASE ID FOR DATABASE ZWC changed TO 528872785.
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@testdb ~]$
[oracle@testdb ~]$ sqlplus / AS sysdba

SQL*Plus: Release 10.2.0.1.0 - Production ON Wed Jan 18 12:32:24 2012

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

Connected TO an idle instance.

SQL> startup mount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed SIZE                  1218992 bytes
Variable SIZE              92276304 bytes
DATABASE Buffers          188743680 bytes
Redo Buffers                2973696 bytes
DATABASE mounted.
SQL> ALTER DATABASE OPEN resetlogs;

DATABASE altered.

修改后的dbid
SQL> SELECT open_mode,dbid,name FROM v$database;

OPEN_MODE        DBID NAME
---------- ---------- ---------
READ WRITE  528872785 ZWC

Changing Only the Database Name
当前dbname

SQL> SELECT open_mode,dbid,name FROM v$database;

OPEN_MODE        DBID NAME
---------- ---------- ---------
READ WRITE  528872785 ZWC

SQL>

修改dbname

SQL> shutdown immediate
DATABASE closed.
DATABASE dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed SIZE                  1218992 bytes
Variable SIZE              92276304 bytes
DATABASE Buffers          188743680 bytes
Redo Buffers                2973696 bytes
DATABASE mounted.
SQL> exit
Disconnected FROM Oracle DATABASE 10g Enterprise Edition Release 10.2.0.1.0 - Production
WITH the Partitioning, OLAP AND DATA Mining options
[oracle@testdb ~]$
[oracle@testdb ~]$ nid target=/ dbname=ZHONG setname=yes

DBNEWID: Release 10.2.0.1.0 - Production ON Wed Jan 18 12:43:31 2012

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

Connected TO DATABASE ZWC (DBID=528872785)

Connected TO server version 10.2.0

Control Files IN DATABASE:
    /u01/app/oracle/oradata/testdb/control01.ctl
    /u01/app/oracle/oradata/testdb/control02.ctl
    /u01/app/oracle/oradata/testdb/control03.ctl

CHANGE DATABASE name OF DATABASE ZWC TO ZHONG? (Y/[N]) => Y

Proceeding WITH operation
Changing DATABASE name FROM ZWC TO ZHONG
    Control File /u01/app/oracle/oradata/testdb/control01.ctl - modified
    Control File /u01/app/oracle/oradata/testdb/control02.ctl - modified
    Control File /u01/app/oracle/oradata/testdb/control03.ctl - modified
    Datafile /u01/app/oracle/oradata/testdb/system01.dbf - wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/undotbs01.dbf - wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/sysaux01.dbf - wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/users01.dbf - wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/example01.dbf - wrote NEW name
    Datafile /u01/app/oracle/oradata/testdb/temp01.dbf - wrote NEW name
    Control File /u01/app/oracle/oradata/testdb/control01.ctl - wrote NEW name
    Control File /u01/app/oracle/oradata/testdb/control02.ctl - wrote NEW name
    Control File /u01/app/oracle/oradata/testdb/control03.ctl - wrote NEW name
    Instance shut down

DATABASE name changed TO ZHONG.
MODIFY parameter file AND generate a NEW password file BEFORE restarting.
Succesfully changed DATABASE name.
DBNEWID - Completed succesfully.

[oracle@testdb ~]$
SQL> CREATE pfile='/u01/app/tmp.ora' FROM spfile;

File created.
SQL> !cat /u01/app/tmp.ora|grep db_name
*.db_name='ZHONG'

SQL>
SQL> CREATE spfile FROM pfile='/u01/app/tmp.ora';

File created.

修改后的dbname

SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed SIZE                  1218992 bytes
Variable SIZE              92276304 bytes
DATABASE Buffers          188743680 bytes
Redo Buffers                2973696 bytes
DATABASE mounted.
DATABASE opened.
SQL> SELECT open_mode,dbid,name FROM v$database;

OPEN_MODE        DBID NAME
---------- ---------- ---------
READ WRITE  528872785 ZHONG







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值