官网:你可能手工copy一个数据库,并通过重建控制文件的方式指定了新的dbname,但是你却不能够修改dbid,dbid是一个数据库‘内部的’‘唯一标示’。因为Rman 通过dbid来区分数据库,所以你不能同时把Seed Database和Copied Database 同时放在同一个Rman Repository中,DBNEWID工具就可以解决此类问题。

1、修改dbid及dbname的影响


a、修改dbid

    等同于创建一个新的数据库,不同的是数据已经存在于数据文件。
    修改之后所有之前的备份与归档日志将不可用,因为dbid已经变更,与当前dbid不一致。
    修改之后需要使用open resetlogs打开数据库,这将会重建在线日志文件,并重置其Sequence为1.
    因此修改dbid后,你必须马上为数据库创建一份全备。

b、只修改dbname

    只修改dbname,不修改dbid,无需使用open resetlogs打开数据库。所以之前的备份和归档仍然可用。
    但是仍需要修改参数文件中的dbname、密码文件来对应新的数据库名
    如果需要恢复原先的控制文件,则需要使用原先的参数文件和密码文件。

c、同时修改dbid及dbname

    如果同时修改,则是上述两种情形的综合,修改完毕后需要open resetlogs以及修改pfile/spifle,密码文件,全备数据库。

d、关于global_names

    如果你正在一个分布式数据库系统中使用Oracle数据库,那么每个数据库都会有一个唯一的全局数据库名,DBNEWID工具不会修改
    全局库名,只能通过Alter Database 命令去修改。全局数据库名由两部分组成:db_name和db_domain,这两个参数是在数据库第     一次创建时指定的。通过如下示例修改

  1. ALTER DATABASE RENAME GLOBAL_NAME TO sales.us.example.com

2、nid命令


  1. [oracle@oracle1 ~]$ nid help=y

  2. DBNEWID: Release 11.2.0.4. - Production on Sun Feb ::

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

  4. Keyword Description (Default)
  5. ----------------------------------------------------
  6. TARGET Username/Password (NONE)
  7. DBNAME New database name (NONE)
  8. LOGFILE Output Log (NONE)
  9. REVERT Revert failed change NO
  10. SETNAME Set a new database name only NO
  11. APPEND Append to output log NO
  12. HELP Displays these messages NO
    在执行nid命令时,该程序会校验当前数据库所有数据文件以及控制文件的头部信息,校验成功后提示是否要修改。
    如果使用了输出到日志文件logfile则不会出现修改提示。
    接下来nid将使用新的dbid(或者dbname)逐个修改控制文件,数据文件(包括只读文件,正常脱机文件)的头部。
    修改成功后自动关闭数据库并退出。
    注:对于只读文件,正常脱机文件本文未作测试。其次应确保数据库处于归档状态,可正常归档以及不存在需要recover的数据文件。

3、修改步骤


  a、全备数据库,如果是热备(rman or os)应确保所有的归档日志以及联机日志可用
  b、删除dbconsole([ID 863800.1]有此要求,如用到dbconsole,应考虑按此操作)
  c、启动需要修改的数据库到mount状态(startup mount)
  d、如果使用spfile文件启动数据库,备份spfile文件到pfile用于后续修改db_name
  e、发布nid命令
  1. nid target=sys/password # 此方式是仅仅修改dbid
  2. nid target=/ dbname=new_dbname [setname=yes] # / 表明连接到当前环境的sid,且使用操作系统认证
  3. nid target=sys/password dbname=new_dbname [setname=yes] # setname=yes 仅仅修改数据库名字,如果省略,则两者同时修改
  4. nid target=sys/pwdd@conn_string dbname=new_dbname [setname=yes] # 使用连接串连接到远程主机并修改</span>
  f、修改Oracle 参数文件 pfile(使用先前从spfile备份的)中的参数db_name,如果仅仅修改dbid,跳过此步骤
  g、使用新的参数文件pfile启动到mount状态(如果修改了dbname,如果仅仅是dbid,则直接使用原来的pfile或spfile启动) 
  h、使用open resetlogs方式打开数据库(修改非dbid,直接打开即可)
  i、重建当前数据库的 Oralce 密码文件及将pfile文件转换成spfile文件
  j、修改相应的监听器的配值,包括listener.ora以及tnsnames.ora
  k、修改全局dbname,如果有用到的话。ALTER DATABASE RENAME GLOBAL_NAME TO <newname>.<domain>;
  l、重建dbconsole      $ emca -config dbcontrol db -repos recreate
  m、全备数据库

4、演示修改dbname


 a. 启动到 Mount 状态
  1. --查看当前数据库名
  2. SQL> show parameter name

  3. NAME TYPE VALUE
  4. ------------------------------------ ----------- ------------------------------
  5. cell_offloadgroup_name string
  6. db_file_name_convert string
  7. db_name string oracle1
  8. db_unique_name string oracle1
  9. global_names boolean FALSE
  10. instance_name string oracle1
  11. lock_name_space string
  12. log_file_name_convert string
  13. processor_group_name string
  14. service_names string oracle1

  15. --启动数据库到mount 状态
  16. SQL> shutdown immediate;
  17. Database closed.
  18. Database dismounted.
  19. ORACLE instance shut down.
  20. SQL> startup mount;
  21. ORACLE instance started.

  22. Total System Global Area 409194496 bytes
  23. Fixed Size 2253744 bytes
  24. Variable Size 314575952 bytes
  25. Database Buffers 88080384 bytes
  26. Redo Buffers 4284416 bytes
  27. Database mounted.
  28. SQL> select dbid,name,open_mode from v$database;

  29. DBID NAME OPEN_MODE
  30. ---------- --------- --------------------
  31. 617378827 ORACLE1 MOUNTED 
b. nid 修改 DBNAME
  1. [oracle@oracle1 ~]$ nid target=/ dbname=orcl

  2. DBNEWID: Release 11.2.0.4. - Production on Sun Feb ::

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

  4. Connected to database ORACLE1 (DBID=)

  5. Connected to server version 11.2.

  6. Control Files in database:
  7. /u01/app/oracle/oradata/oracle1/control01.ctl
  8. /u01/app/oracle/fast_recovery_area/oracle1/control02.ctl

  9. Change database ID and database name ORACLE1 to ORCL? (Y/[N]) => y

  10. Proceeding with operation
  11. Changing database ID from to #DBID 变化
  12. Changing database name from ORACLE1 to ORCL #DBNAME 变化
  13. Control File /u01/app/oracle/oradata/oracle1/control01.ctl - modified #修改控制文件
  14. Control File /u01/app/oracle/fast_recovery_area/oracle1/control02.ctl - modified
  15. Datafile /u01/app/oracle/oradata/oracle1/system01.db - dbid changed, wrote new name #修改数据文件DBID/DBNAME
  16. Datafile /u01/app/oracle/oradata/oracle1/sysaux01.db - dbid changed, wrote new name
  17. Datafile /u01/app/oracle/oradata/oracle1/undotbs01.db - dbid changed, wrote new name
  18. Datafile /u01/app/oracle/oradata/oracle1/users01.db - dbid changed, wrote new name
  19. Datafile /u01/app/oracle/oradata/oracle1/example01.db - dbid changed, wrote new name
  20. Datafile /u01/app/oracle/oradata/oracle1/t01.db - dbid changed, wrote new name
  21. Datafile /u01/app/oracle/oradata/oracle1/t16.db - dbid changed, wrote new name
  22. Datafile /u01/app/oracle/oradata/oracle1/temp01.db - dbid changed, wrote new name
  23. Control File /u01/app/oracle/oradata/oracle1/control01.ctl - dbid changed, wrote new name #修改控制文件DBID/DBNAME
  24. Control File /u01/app/oracle/fast_recovery_area/oracle1/control02.ctl - dbid changed, wrote new name
  25. Instance shut down #关闭实例

  26. Database name changed to ORCL. #数据库名已变更为orcl
  27. Modify parameter file and generate a new password file before restarting. #重启前请 修改参数文件,创建新密码文件
  28. Database ID for database ORCL changed to . #DBID 已变更为
  29. All previous backups and archived redo logs for this database are unusable. #所有之前的 备份 和 归档 全部失效
  30. Database is not aware of previous backups and archived logs in Recovery Area. #数据库在恢复区未识别到之前备份和归档
  31. Database has been shutdown, open database with RESETLOGS option. #数据库已关闭,请以Resetlogs方式打开
  32. Succesfully changed database name and ID. #变更完成
  33. DBNEWID - Completed succesfully.
c. 创建密码文件,修改参数文件 并启动数据库
  1. [oracle@oracle1 ~]$ cd $ORACLE_HOME/dbs
  2. [oracle@oracle1 dbs]$ orapwd help=y
  3. Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>

  4. where
  5. file - name of password file (required),
  6. password - password for SYS will be prompted if not specified at command line,
  7. entries - maximum number of distinct DBA (optional),
  8. force - whether to overwrite existing file (optional),
  9. ignorecase - passwords are case-insensitive (optional),
  10. nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).
  11.  
  12. There must be no spaces around the equal-to (=) character.
  13. [oracle@oracle1 dbs]$ orapwd file=orapworcl password=oracle
  14. [oracle@oracle1 dbs]$ sqlplus / as sysdba

  15. SQL*Plus: Release 11.2.0.4. Production on Sun Feb ::

  16. Copyright (c) , , Oracle. All rights reserved.

  17. Connected to an idle instance.

  18. SQL> create pfile from spfile;

  19. File created.

  20. SQL> quit
  21. Disconnected
  22. [oracle@oracle1 dbs]$ ls initoracle1.ora
  23. initoracle1.ora
  24. [oracle@oracle1 dbs]$ mv initoracle1.ora initorcl.ora
  25. [oracle@oracle1 dbs]$ vi initorcl.ora #修改 pfile 中的db_name
  26. *.db_name='orcl' # 修该 Pfile 文件中的db_name
  27. [oracle@oracle1 dbs]$ sqlplus / as sysdba

  28. SQL*Plus: Release 11.2.0.4. Production on Sun Feb ::

  29. Copyright (c) , , Oracle. All rights reserved.

  30. Connected to an idle instance.

  31. SQL> create spfile from pfile; # 通过pfile 创建 spfile,然后通过spfile 启动

  32. File created.
  33. SQL> startup
  34. ORACLE instance started.

  35. Total System Global Area bytes
  36. Fixed Size bytes
  37. Variable Size bytes
  38. Database Buffers bytes
  39. Redo Buffers bytes
  40. Database mounted.
  41. ORA-: must use RESETLOGS or NORESETLOGS option for database open

  42. SQL> alter database open RESETLOGS; #以 RestLogs 方式打开数据库

  43. Database altered.
  44. SQL> show parameter name #数据库名已变更

  45. NAME TYPE VALUE
  46. ------------------------------------ ----------- ------------------------------
  47. cell_offloadgroup_name string
  48. db_file_name_convert string
  49. db_name string orcl
  50. db_unique_name string orcl
  51. global_names boolean FALSE
  52. instance_name string orcl
  53. lock_name_space string
  54. log_file_name_convert string
  55. processor_group_name string
  56. service_names string orcl

  57. SQL> select dbid,name,open_mode from v$database;

  58. DBID NAME OPEN_MODE
  59. ---------- --------- --------------------
  60. ORCL READ WRITE
  61. SQL> set line pages
  62. SQL> col value for a80
  63. SQL> col name for a30
  64. SQL> select * from v$diag_info;

  65. INST_ID NAME VALUE
  66. ---------- ------------------------------ --------------------------------------------------------------------------------
  67. Diag Enabled TRUE
  68. ADR Base /u01/app/oracle
  69. ADR Home /u01/app/oracle/diag/rdbms/orcl/orcl
  70. Diag Trace /u01/app/oracle/diag/rdbms/orcl/orcl/trace
  71. Diag Alert /u01/app/oracle/diag/rdbms/orcl/orcl/alert
  72. Diag Incident /u01/app/oracle/diag/rdbms/orcl/orcl/incident
  73. Diag Cdump /u01/app/oracle/diag/rdbms/orcl/orcl/cdump
  74. Health Monitor /u01/app/oracle/diag/rdbms/orcl/orcl/hm
  75. Default Trace File /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_102730.trc
  76. Active Problem Count
  77. Active Incident Count

  78. rows selected.
  79. # ADR 在新的位置,其他的数据文件等位置都不变,之前的ADR,参数文件,密码文件 不会自动删除,需手工删除。
  80. # 如果配置了静态监听,则需要修改监听文件指向新的数据库
  81. # 如果配置了TNS 文件,同样需要修改
  82. # 如果需要使用dbconsole,需重建

  83. SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS FROM V$LOG;

  84. GROUP# SEQUENCE# ARC STATUS
  85. ---------- ---------- --- ----------------
  86. NO CURRENT                # Sequence 重置为1
  87. YES UNUSED                 # 在线重做日志重建,置于UNUSED状态。
  88. YES UNUSED
参考:
 
 
 

8. DBNEWID 工具(使用nid命令修改db name及dbid)的更多相关文章

  1. 使用DBNEWID Utility 修改oracle数据库的 db name 和 dbid

    使用DBNEWID Utility 工具可以同时修改数据库名.DBID,也可以只修改其中一项 官方参考: https://docs.oracle.com/cd/E11882_01/server.112 ...

  2. redis cluster集群管理工具redis-trib.rb命令小结-运维笔记

    redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单.便捷.实用的操作工具.redis-trib.rb ...

  3. Delphi 调用netsh命令修改IP地址

    Delphi 调用netsh命令修改IP地址 先介绍一下Netsh命令的使用方法: 在这里跟大家介绍几个简单的指令 1.Show IP 1.1Cmd Mode 直接在cmd下面输入 netsh int ...

  4. linux:终端常用命令 + vi命令修改文件及保存 方法

    首先介绍一下Ubuntu下各个目录的一般作用: /  这就是根目录,一台电脑有且只有一个根目录,所有的文件都是从这里开始的.举个例子:当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录 ...

  5. Cordova - Windows版本图形界面管理工具,告别命令行输入方式!

    Cordova本身提供的是命令行管理工具,并没有提供图形界面管理工具,虽然命令行管理工具可以完成所有Cordova管理,但是对于我这种懒蛋,可真不希望每次都输入命令,而且我更担心一旦输错一个字符,命令 ...

  6. AIX用chsec命令修改快捷修改配置文件

    前言 AIX的所有配置设置通过一个命令来进行更改配置文件中的键-值对,以达到修改配置的目的.如:group/user/limits/passwd等等 命令格式 chsec [-f file] [-s ...

  7. Linux命令:修改文件权限命令chmod、chgrp、chown详解

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权 限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而 ...

  8. Windows系统自带工具的 cmd 命令

    目标 与计算机高手无关,只是为了减少鼠标点击的次数,提高效率. 适用范围 Windows XP,Windows 7,Window 8 (在Windows 7 下验证通过.) 使用方法 在 “运行“ 对 ...

  9. Oracle 10g -- 修改DB的编码

    修改DB的原因是:因为我的DB不支持中文,所以每当我向数据库表中插入一条数据的时候,中文就都变了类似于“?(是反问号)”的乱码,为了能顺利插入成功,故做了此次修改; 系统:windows XP 英文版 ...

随机推荐

  1. Java 之常用API(一)

    常用API  1 API概述  2 Scanner类与String类  3 StringBuilder类 NO.one API概述 1.1 API概述 API(Application Programm ...

  2. unzipping/Users/xq/.gradle/wrapper /dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zi

    unzipping/Users/xq/.gradle/wrapper /dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zi ...

  3. CSS的下拉菜单被挡住,修改Z-INDEX也不成功

    CSS的下拉菜单被挡住,修改Z-INDEX也不成功 做了一个鼠标放上去就出现的下拉菜单,但是这个下拉的内容被挡住了. Z-INDEX 是设置不同块的层次的,我修改了问题还是有. 后来发现是必须要把该便 ...

  4. try catch 一点小记录

    这两天做了新的需求,做完之后 在测试环境下 完美通关.之后部署到了预发布环境,然而怎么尝试都不通过.刚开始看到 预发布的一个配置文件错了.发邮件改了下,但是依然流程跑不通.之后 一步步在测试环境看代码 ...

  5. spring boot(3)-Rest风格接口

    Rest接口 虽然现在还有很多人在用jsp,但是其实这种动态页面早已过时,现在前端流行的是静态HTML+ rest接口(json格式).当然,如果是单台服务器,用动态还是静态页面可能没什么很大区别,但 ...

  6. spring事务的理解

    特性 一致性:业务处理要么都成功,要么都失败,不能部分成功不分失败 原子性:业务操作是由多个动作完成,这些动作不可分割,要么都执行,要么都不执行 隔离性:事务间之间要做隔离,不要互相影响 持久性:操作 ...

  7. laravel model relationship

    laravel支持多种模型之间的relation,对应着模型间的one2one, one2many,many2many,hasManyThrough,Polymorphic, many2many po ...

  8. Ionic微信开发之环境配置

    在开发微信版的H5页面时,如果需要正常调用微信公众号的开放接口(测试或者发布情况),根据官方要求需要保证网页域名和后端维护的一致.因此,进行真服测试就显得很有必要.WebStorm提供了实时远程部署的 ...

  9. ORACLE 数据找回

    -- 找回一个小时前的数据 select * from sys_system_dictionary as of timestamp sysdate - 1/24order by id AS OF TI ...

  10. 掷骰子游戏窗体实现--Java初级小项目

    掷骰子 **多线程&&观察者模式 题目要求:<掷骰子>窗体小游戏,在该游戏中,玩家初始拥有1000的金钱,每次输入押大还是押小,以及下注金额,随机3个骰子的点数,如果3个骰 ...