DBNEWID工具的使用
- DBNEWID工具介绍:
- 手动创建一个数据库的拷贝时,在重建控制文件时可以指定一个新的DBNAME,但是不能修改DBID.DBID是内部唯一标示一个数据库的标示符;RMAN是使用DBID区分数据库的,所以就不能把这两个数据库注册到同一个RMAN的资源库中了;
- DBNEWID工具可以:
- 只修改DBID(无法控制修改为多少);
- 只修改DBNAME;
- 同时修改DBID和DBNAME;
- 如果修改了DBID,之前所有的备份,归档日志都会失效,而且打开数据库时需要指定RESETLOGS参数;
- 强烈建议在修改DBID之前对数据库进行备份;
- 使用DBNEWID工具不会影响global_name,它只能通过ALTER DATABASE语法进行修改,由DB_NAME和域组成:ALTER DATABASE RENAME GLOBAL_NAME TO db_name.db_domain;
- DBNEWID工具也不会修改INSTANCE_NAME,但是会修改DB_NAME,DB_UNIQUE_NAME和SERVICE_NAMES;
- DBNEWID的语法:nid key=value;
- TARGET=user/pwd@tns_name:登陆目标数据库;
- DBNAME=newname:指定要修改的新的数据库的名称,如果不指定此参数,则只修改DBID;
- SETNAME=YES/NO:默认为NO,如果指定为YES,表示值修改数据库名称;
- REVERT=YES/NO:默认为NO,如果为YES,表示如果失败了回退到之前的状态;
- LOGFILE=log_file:指定日志文件;
- APPEND=YES/NO:指定是追加日志还是覆盖日志;
- 例子:
- 只修改DBID:nid target=user/pwd@tns_name logfile=nid.log;
- 只修改DBNAME:nid target=user/pwd@tns_name dbname=newname setname=yes logfile=nid.log;
- 同时修改DBID和DBNAME:nid target=user/pwd@tns_name dbname=newname logfile=nid.log;
- 发生错误回退到之前的状态:nid target=user/pwd@tns_name revert=yes logfile=nid.log
- 修改DBID和DBNAME:
- 对数据库做一次全备;
- 配置好监听(静态注册数据库)和网络名,如果是在本机操作则不需要此步骤;
- 查看当前的DBID和DBNAME:SELECT dbid, name FROM v$database;
- 正常关闭数据库,并启动到mount状态;
- 调用nid工具,使用sysdba登陆:nid target=sys/oracle dbname=OMR,修改完成后数据库处于shutdown状态;
- 修改spfile文件中的DB_NAME参数(如果只修改DBID的话,不用这个步骤);
- 重置密码文件(如果只修改DBID或者没有修改ORACLE_SID的话,不用这个步骤,因为密码文件只跟ORACLE_SID有关):
- 启动数据库到mount状态,然后以resetlogs方式打开数据库:ALTER DATABASE OPEN RESETLOGS;(如果只是修改了DB_NAME的话,不用这个步骤,之前的日志还可以使用)
- 查看新的DBID和DB_NAME;