Home > oracle > 使用NID修改dbname避免重新build standby databse

使用NID修改dbname避免重新build standby databse

December 11th, 2006

NID是oracle提供的用来修改数据库DBNAME和DBID的工具,oracle metalink 文档 224266.1 上有详细的使用方法

eygle也写过一篇文章介绍如何使用这个工具: Use Nid to Change dbname-NID的用法

文章中提到了一种缺省模式下DBNAME和DBID同时修改的模式,除此之外NID还有其他两种模式:

1. 只修改DBID

2. 只修改DBNAME

其中只修改DBNAME是不需要resetlogs的,Huang Yong提出来我们是否可以用这一点做到修改primary的db_name而不使standby database失效(如果resetlog, standby database需要重新rebuild)
我做了试验,发现是可行的,不过现在还没有找到oracle官方文档支持

试验步骤如下:

1. 建立一个standby database

2. 在primary database上用NID only change DBNAME (metalink文档上有)

  • SHUTDOWN IMMEDIATE of the database
  • STARTUP MOUNT
  • Open one session and run NID with sysdba privileges
    • % nid TARGET= / DBNAME=test_db2 SETNAME=Y
    • - the value of DBNAME is the new dbname of the database
    • - SETNAME must be set to Y. The default is N and causes the DBID to be changed also.
  • shutdown IMMEDIATE of the database
  • Set the DB_NAME initialization parameter in the initialization parameter file to the new database name
  • Create a new password file
  • Startup of the database(without resetlogs)

3. 此时standby database是可以继续apply log的,但是standby的db_name仍然是原先的db_name,如果需要修改standby的db_name,

需要重新生成standby control file, 同时修改init.ora中的db_name参数,重新启动standby数据库

同时我们还发现standby数据库数据文件头中的db name并没有被修改,在activate standby的时候才会被修改为新的db name.

目前还没有想到这样做有什么risk, 也许需要开个tar和oracle确认一下

Eagle Fan oracle

  1. liuyi
    December 31st, 2006 at 14:25 | #1

    huang yong现在也在eBay?

  2. December 31st, 2006 at 20:46 | #2

    恩啊

  3. December 9th, 2007 at 17:21 | #3

    Hello, I’m Googlebot

  1. No trackbacks yet.