使用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确认一下
huang yong现在也在eBay?
恩啊
Hello, I’m Googlebot