官网:你可能手工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,这两个参数是在数据库第     一次创建时指定的。通过如下示例修改

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

2、nid命令


[oracle@oracle1 ~]$ nid help=y

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

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

Keyword Description (Default)
----------------------------------------------------
TARGET Username/Password (NONE)
DBNAME New database name (NONE)
LOGFILE Output Log (NONE)
REVERT Revert failed change NO
SETNAME Set a new database name only NO
APPEND Append to output log NO
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命令
nid target=sys/password                                         # 此方式是仅仅修改dbid
nid target=/ dbname=new_dbname [setname=yes] # / 表明连接到当前环境的sid,且使用操作系统认证
nid target=sys/password dbname=new_dbname [setname=yes] # setname=yes 仅仅修改数据库名字,如果省略,则两者同时修改
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 状态
--查看当前数据库名
SQL> show parameter name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name string
db_file_name_convert string
db_name string oracle1
db_unique_name string oracle1
global_names boolean FALSE
instance_name string oracle1
lock_name_space string
log_file_name_convert string
processor_group_name string
service_names string oracle1

--启动数据库到mount 状态
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

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

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

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

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

Connected to database ORACLE1 (DBID=)

Connected to server version 11.2.

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

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

Proceeding with operation
Changing database ID from to #DBID 变化
Changing database name from ORACLE1 to ORCL #DBNAME 变化
Control File /u01/app/oracle/oradata/oracle1/control01.ctl - modified #修改控制文件
Control File /u01/app/oracle/fast_recovery_area/oracle1/control02.ctl - modified
Datafile /u01/app/oracle/oradata/oracle1/system01.db - dbid changed, wrote new name #修改数据文件DBID/DBNAME
Datafile /u01/app/oracle/oradata/oracle1/sysaux01.db - dbid changed, wrote new name
Datafile /u01/app/oracle/oradata/oracle1/undotbs01.db - dbid changed, wrote new name
Datafile /u01/app/oracle/oradata/oracle1/users01.db - dbid changed, wrote new name
Datafile /u01/app/oracle/oradata/oracle1/example01.db - dbid changed, wrote new name
Datafile /u01/app/oracle/oradata/oracle1/t01.db - dbid changed, wrote new name
Datafile /u01/app/oracle/oradata/oracle1/t16.db - dbid changed, wrote new name
Datafile /u01/app/oracle/oradata/oracle1/temp01.db - dbid changed, wrote new name
Control File /u01/app/oracle/oradata/oracle1/control01.ctl - dbid changed, wrote new name #修改控制文件DBID/DBNAME
Control File /u01/app/oracle/fast_recovery_area/oracle1/control02.ctl - dbid changed, wrote new name
Instance shut down #关闭实例

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

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

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

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

Connected to an idle instance.

SQL> create pfile from spfile;

File created.

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

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

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

Connected to an idle instance.

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

File created.
SQL> startup
ORACLE instance started.

Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted.
ORA-: must use RESETLOGS or NORESETLOGS option for database open

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

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

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name string
db_file_name_convert string
db_name string orcl
db_unique_name string orcl
global_names boolean FALSE
instance_name string orcl
lock_name_space string
log_file_name_convert string
processor_group_name string
service_names string orcl

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

DBID NAME OPEN_MODE
---------- --------- --------------------
ORCL READ WRITE
SQL> set line pages
SQL> col value for a80
SQL> col name for a30
SQL> select * from v$diag_info;

INST_ID NAME VALUE
---------- ------------------------------ --------------------------------------------------------------------------------
Diag Enabled TRUE
ADR Base /u01/app/oracle
ADR Home /u01/app/oracle/diag/rdbms/orcl/orcl
Diag Trace /u01/app/oracle/diag/rdbms/orcl/orcl/trace
Diag Alert /u01/app/oracle/diag/rdbms/orcl/orcl/alert
Diag Incident /u01/app/oracle/diag/rdbms/orcl/orcl/incident
Diag Cdump /u01/app/oracle/diag/rdbms/orcl/orcl/cdump
Health Monitor /u01/app/oracle/diag/rdbms/orcl/orcl/hm
Default Trace File /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_102730.trc
Active Problem Count
Active Incident Count

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

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

GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
NO CURRENT                # Sequence 重置为1
YES UNUSED                 # 在线重做日志重建,置于UNUSED状态。
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. SSH反向代理转发至内网msf

    前言 买了个便宜的 vps , 在上面装 msf 也装不上,于是想着把端口映射到内网来. 正文 拓扑如下: 首先在内网主机 B ssh -fCNR 7281:localhost:5000 root@C ...

  2. toLocaleTimeString()方法在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为“时间字符串”存在区别

    这两天修改一个bug,发现一个问题:  toLocaleTimeString()方法在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为“时间字符串”存在区别.方法原 ...

  3. Android画廊效果

    Android画廊效果 前言:Gallery是一个内部元素控件,可以水平滚动,并且可以把当前选择的子元素定位在它中心的布局组件:画廊Gallery一般用来显示可左右移动图片的列表(具体请看实例). 效 ...

  4. css预处理器(sass)

    学过CSS的人都知道,它不是一种编程语言.你可以用它开发网页样式,但是没法用它编程.也就是说,CSS基本上是设计师的工具,不是程序员的工具.在程序员眼里,CSS是一件很麻烦的东西.它没有变量,也没有条 ...

  5. Software Testing Techniques LAB 02: Selenium

    1. Installing 1. Install firefox 38.5.1 2. Install SeleniumIDE    After installing, I set the view o ...

  6. 关闭TCP中135、139、445、593、1025 等端口的操作方法 (转)(记录下)

    操作要领:封闭端口,杜绝网络病毒对这些端口的访问权,以保障计算机安全,减少病毒对上网速度的影响. 近日发现有些人感染了新的网络蠕虫病毒,该病毒使用冲击波病毒专杀工具无法杀除,请各位尽快升级计算机上的杀 ...

  7. 如何在 Azure 虚拟机里配置条带化

    什么是条带化(striping) 条带 (strip) 是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上的方法.简单的说,条带是一种将多个磁盘驱动器合并为一个卷的方法. 许 ...

  8. SQL函数应用-DATEPART()

    作用:DATEPART() 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. 语法格式:DATEPART(datepart,date) 参数说明: datepart 是指定应返回的日 ...

  9. SQL点点滴滴_公用表表达式(CTE)递归的生成帮助数据

    本文的作者辛苦了,版权问题特声明本文出处:http://www.cnblogs.com/wy123/p/5960825.html 工作有时候会需要一些帮助数据,必须需要连续的数字,连续间隔的时间点,连 ...

  10. zabbix监控 linux/windows 主机tcp连接状态

    更新内容:1).增加了对windows主机的tcp连接状态的监控2).修改linux主机的监控配置,使linux与windwos主机能够使用相同的模板tcp的连接状态对于监控服务器,尤其是Web服务器 ...