当前位置:  数据库>oracle

使用nid命令修改 db name 及 dbid

    来源: 互联网  发布时间:2017-05-20

    本文导语: 工作中不可避免地碰到需要修改dbname以及dbid的情形,如将数据库恢复到同一台机器的情形是其中之一。但dbname以及dbid是用于标识数据库的重要标志之一,尤其是dbid,具有唯一性,因此对其修改应慎重处理。本文描述了修改dbname...

工作中不可避免地碰到需要修改dbname以及dbid的情形,如将数据库恢复到同一台机器的情形是其中之一。但dbname以及dbid是用于标识数据库的重要标志之一,尤其是dbid,具有唯一性,因此对其修改应慎重处理。本文描述了修改dbname以及dbid的步骤并给出示例。

1、修改dbid及dbname的影响

a、修改dbid

等同于创建一个新的数据库,不同的是数据已经存在于数据文件。这是由dbid的唯一性决定的。

修改之后所有之前的备份与归档日志将不可用,因为在恢复时会检测dbid,由于不匹配,则所有备份无效。

修改之后需要使用open resetlogs打开数据库,一个新的incarnation会被创建,且sequence被置为1。

修改之后且成功open的情形下,建议一致性关闭数据库,重启并做一个完整的备份。

b、修改dbname

修改之后,无需使用open resetlogs打开数据库。(注dbname不具有唯一性,global name则具有唯一性)。

修改之后,所有的备份即归档日志依旧可用。

修改之后,需要修改pfile/spfile中对应的db_name参数以及重建相应的Oracle密码文件。

如果需要使用旧的控制文件恢复数据库,应当使用修改之前的pfile/spfile以及密码文件启动数据库再进行恢复。

c、同时修改dbid及dbname

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

2、nid命令

robin@SZDB:~> nid

DBNEWID: Release 10.2.0.3.0 - Production on Thu Apr 24 16:34:28 2013

Copyright (c) 1982, 2005, Oracle.  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] #使用连接串连接到远程主机并修改

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 .;

l、重建dbconsole      $ emca -config dbcontrol db -repos recreate

m、全备数据库


    
 
 

您可能感兴趣的文章:

  • c/c++预处理命令预#,##使用介绍
  • 使用ps命令,如何使用系统命令根据进程名称获取进程和子进程的ID?除了ps,还有其它系统命令的办法吗?谢谢。
  • linux下free命令显示的内存使用情况分析
  • 在Linux下使用ftp命令,被提示命令没有找到
  • linux下不使用sudo命令执行docker的操作步骤
  • 怎样在命令行使用ftp命令?
  • linux下objdump命令用法介绍及如何使用objdump命令进行反汇编
  • linux命令行下使用curl命令查看自己机器的外网ip
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • tar命令的-r和--delete子命令该如何使用啊?
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 在LINUX中使用C调用系统命令,怎么取得系统命令的输出?
  • linux top命令详解以及top命令的各项使用技巧详细说明
  • 在windows的命令提示符下使用linux的命令,听说安装一个软件即可?在线等。立刻给分
  • mongoDB 2.6.5下载,安装及mongoDB基本使用命令介绍
  • 请教:使用system(命令)或者exec(命令)启动一个进程执行命令,如何判断这个命令是否启动成功或正在运行?
  • mongoDB 3.2.9 官方下载、安装及mongoDB基本使用命令详细介绍
  • 性能测试中应该用top命令统计cpu使用情况还是ps命令?
  • ftp协议介绍及ftp常用的上传下载等操作命令使用方法
  • 请问在unix下,如何察看以前使用者的使用命令
  • mongodb 数据库常用命令使用实例
  • 我初学NETTERM的使用,在哪里可以找到所有(或常用的)命令的使用方法呢?还是需要在什么书上可以找到?
  • 使用SSH修改linux密码的问题
  • 如何在使用命令行去修改系统脚本?
  • 关于使用SHELL修改文件的
  • 大家修改内核时使用哪个编辑器?
  • 请问如何在一个文件系统修改源码管理并使用多个卷(存储设备)
  • ORACEL使用脚本来修改表结构
  • ORACLE 修改表结构 之ALTER CONSTAINTS的使用
  • 请问如何使用系统命令修改系统参数
  • 有没有方法可以使用脚本批量修改bash环境变量
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我要向一个文本写入my name is ="cyg",使用sed "27i my name is="cyg"" aaa > bbb 出现错误,但我必须在cyg上加双引号,该如何做。
  • find -name使用
  • 使用jQuery时Form表单元素ID和name命名大忌
  • 我的linux使用普通用户登陆后,不显示用户名,而显示I have no name@localhost#
  • 弱问dev_get及dev_get_by_name的使用
  • mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限
  • php开源软件 iis7站长之家
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • 在div中使用css让文字底部对齐的方法
  • asp程序使用的access在Linux下如何使用!
  • Python namedtuple(命名元组)使用实例
  • 新装的Linux使用root用户不能使用FTP?
  • MySQL Workbench的下载安装与使用教程
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,