Oracle工具之DBNEWID

DBNEWID是Oracle提供的一个用于修改数据库DBID和DBNAME的工具。

在引进该工具之前,如果我们想修改数据库的数据库名,必须重建控制文件。但即便如此,也无法修改该数据库的DBID。众所周知,DBID是一个数据库的唯一标识符。RMAN就是根据数据库的DBID来区分不同数据库的。

DBNEWID可解决这种问题,它提供了以下三种选择:

1> 只修改DBID

2> 只修改DBNAME

3> 同时修改DBID和DBNAME

注意:当一个数据库的DBID被修改后,它以前的备份和归档日志将不可用。并且在重新打开数据库时,需加上RESETLOGS选项,该选项将重新创建在线日志,并将它们的序列号重置为1。建议,修改完数据库的DBID后,对该库进行全备。

如果只是修改数据库的DBNAME,则以前的备份和归档日志不受影响。但是必须修改参数文件的db_name,否则,在重新打开数据库过程中,将报以下错误:ORA-01103: database name ‘ORCL‘ in control file is not ‘SZ‘。表明控制文件的DBNAME和参数文件中的不匹配,需修改参数文件。同时,也需修改密码文件。

DBNEWID的使用语法如下

nid TARGET = [username] / [password] [@service_name]
[REVERT = { YES | NO }
|DBNAME = new_db_name [SETNAME = { YES | NO }]]
[LOGFILE = logfile [APPEND = { YES | NO }] [HELP = { YES | NO }]]

其中,

TARGET输入用户名和密码,注意,该用户必须具有sysdba的权限。譬如target=sys/oracle,当然,如果我们是在操作系统本地操作的话,可用反斜杠连接,即target=/

REVERT指明一个失败的DBID操作是否需要回退。默认是NO。注意,如果数据库的DBID修改成功,该操作无法回退。该回退操作只针对失败的DBID修改操作。

DBNAME指定新的数据库名。

SETNAME默认是NO,则该数据库将同时修改DBID和DBNAME。如果指定为YES,则该数据库将只修改DBNAME

LOGFILE日志文件,记录操作信息,默认是覆盖上个日志文件。如果APPEND设为YES的话,则这次操作信息将被追加到上个日志文件中。APPEND默认是NO。

HELP用来提示DBNEWID的语法规则。默认为NO

下面,我们将演示如何修改DBID和DBNAME

一、关闭数据库并重启到mount状态

SQL> shutdown immediate    --必须是一致性关闭

SQL> startup mount

二、 修改DBID和DBNAME

[[email protected] ~]$ nid target=sys/oracle dbname=victor  --原来的dbname是orcl。

我们来看看输出

DBNEWID: Release 11.2.0.1.0 - Production on Thu Sep 25 05:00:34 2014

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

Connected to database ORCL (DBID=1386938297)

Connected to server version 11.2.0

Control Files in database:
    /u01/app/oracle/oradata/sz/control01.ctl
    /u01/app/oracle/flash_recovery_area/sz/control02.ctl

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

Proceeding with operation
Changing database ID from 1386938297 to 431720306
Changing database name from ORCL to VICTOR
    Control File /u01/app/oracle/oradata/sz/control01.ctl - modified
    Control File /u01/app/oracle/flash_recovery_area/sz/control02.ctl - modified
    Datafile /u01/app/oracle/oradata/sz/system01.db - dbid changed, wrote new name
    Datafile /u01/app/oracle/oradata/sz/sysaux01.db - dbid changed, wrote new name
    Datafile /u01/app/oracle/oradata/sz/undotbs01.db - dbid changed, wrote new name
    Datafile /u01/app/oracle/oradata/sz/users01.db - dbid changed, wrote new name
    Datafile /u01/app/oracle/oradata/sz/temp01.db - dbid changed, wrote new name
    Control File /u01/app/oracle/oradata/sz/control01.ctl - dbid changed, wrote new name
    Control File /u01/app/oracle/flash_recovery_area/sz/control02.ctl - dbid changed, wrote new name
    Instance shut down

Database name changed to VICTOR.
Modify parameter file and generate a new password file before restarting.
Database ID for database VICTOR changed to 431720306.
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.
Succesfully changed database name and ID.
DBNEWID - Completed succesfully.

输出最后提示修改成功。

注意:在发出nid命令后,DBNEWID首先会校验数据文件、控制文件的有效性。如果校验通过,则DBNEWID会提示是否继续执行该操作,如上面输出中的Change database ID and database name ORCL to VICTOR? (Y/[N])。如果指明了日志文件,则不会有此提示。接着,DBNEWID会修改每个数据文件的DBID,包括离线数据文件和只读数据文件。接着关闭数据库,然后退出。

在10.1及以后版本中,该操作也会记录在告警日志中。如

*** DBNEWID utility started ***
DBID will be changed from 1386938297 to new DBID of 431720306 for database ORCL
DBNAME will be changed from ORCL to new DBNAME of VICTOR
Starting datafile conversion
Datafile conversion complete
Database name changed to VICTOR.
Modify parameter file and generate a new password file before restarting.
Database ID for database VICTOR changed to 431720306.
All previous backups and archived redo logs for this database are unusable.
Database has been shutdown, open with RESETLOGS option.
Succesfully changed database name and ID.
*** DBNEWID utility finished succesfully ***

三、 修改参数文件

SQL> create pfile=‘/home/oracle/victor.pfile‘ from spfile;

[[email protected] trace]$ vim /home/oracle/victor.pfile

db_name=‘orcl‘  修改为 db_name=‘victor‘

四、重新启动数据库

SQL> create spfile from pfile=‘/home/oracle/victor.pfile‘;

SQL> startup mount

SQL> alter database open resetlogs;

SQL> show parameter name

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

可见,dbname修改成功。当然,实例名依旧是原来的orcl。

如果同样需要将实例名修改为victor,命令如下:

SQL> alter system set instance_name=‘victor‘ scope=spfile;

总结:该范例示范的是同时修改DBID和DBNAME。

1> 如果只是修改DBID,则上述第二步命令不用指定dbname参数,即$ nid target=sys/oracle即可。但重新开启数据库时,同样需要指定RESETLOGS子句。

2> 如何只是修改DBNAME,则上述第二步命令中需将setname指定为YES,即$ nid target=sys/oracle dbname=victor setname=yes。直接startup开库,不需指定RESETLOGS子句。

3> DBNEWID不会修改global database name。可通过以下命令修改:

SQL> alter database rename global_name to victor.being.com。其中being.com为域名。

时间: 2024-08-04 04:41:20

Oracle工具之DBNEWID的相关文章

Oracle工具之--ASM与文件系统及跨网络传输文件

Oracle工具之--ASM与文件系统及跨网络传输文件   Oracle DBMS_FILE_TRANSFER可以实现文件系统和ASM磁盘组之间实现文件传输及ASM磁盘组之间跨网络的传输. DBMS_FILE_TRANSFER:   The DBMS_FILE_TRANSFER package provides procedures to copy a binary file within a database or to transfer a binary file between datab

oracle工具类

查询表中有多少列 select count(1) from user_tab_columns where table_name=upper('M_ReturnPicture') //查询数据中某个用户所创建的表数量 SELECT table_name FROM all_tables WHERE owner = upper('rpt'); select * from all_tables where owner = upper('userecc') and (table_name like 'T_

使用Navicat for Oracle工具连接oracle

使用Navicat for Oracle工具连接oracle的 这是一款oracle的客户端的图形化管理和开发工具,这个产品对于许多的数据库都有支持.之前用过 Navicat for sqlserver,感觉很好用,所以下载了Oracle的和MySQL的工具. 上网查看了一下这个工具可以用于任何版本 8i 或以上的 Oracle 数据库服务器,并支持大部份 Oracle 最新版本的功能,包括目录.表空间.同义词.实体化视图.触发器.序列.类型等.下边的这张图是oracle版的,MySQL和Sql

MySQL 迁移 Oracle 工具SQL Developer

业务需求,需要将MySQL数据库内容迁移至Oracle数据库中,数据量在300g左右,为了方便,通过Oracle自己的工具SQLDeveloper迁移,步骤如下: 下载mysql-connector-java-5.1.24驱动,存放在C:\sqldeveloper\jlib目录下 配置mysql-connector第三方驱动 链接MySQL及Oracle数据库 创建MySQL移植资料库 创建ORACLE migration user create user migrater identified

Oracle工具——ADRCI

ADRCI工具是Oracle11g才推出的新工具,主要用来管理alert文件.trace文件.dump文件.健康监事报告等. 这一篇简单介绍ADRCI工具. 用过11g的人都会发现,11g中alert文件以及trace文件的存放位置都发生了变化.从原来的ORACLE_BASE/admin/INSTANCE_NAME目录变成了ORACLE_BASE/diag/rdbms/DBNAME/INSTANCE_NAME目录. Oracle之所以修改了这个跨越多个版本都没有修改过的参数设置,就是因为Orac

JDBC连接Oracle工具类

import java.sql.*;import java.util.ResourceBundle; /** * jdbc工具类,负责: * 1. 加载/注册数据库驱动程序 * 2. 获取数据库连接 * 3. 释放数据库资源(Connection, Statement, ResultSet) */public class JdbcUtil { private static final String DRIVER = getValue("jdbc.driver"); private st

windows环境下安装连接远程oracle工具PL/SQL Developer 11.0

官网下载所需的3个软件包(为了连接11g数据库) 1:oracle client(oracle客户端) http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/112010-win64soft-086667-zhs.html 下载win64_11gR2_client.zip具体安装方法可参考百度 2:PL/SQL Developer 11.0 http://files.allroundautomatio

SAP R3 Oracle工具 Golden32安装教程

一个32位多线程的应用程序,具有多种功能,类似于SQL,包括变量提示和参数传递脚本显示等,能编写和运行程序,使用非常简单,速度快,界面好. Golden32是操作Oracle的好帮手! 安装好打开后,提示 Database连到哪一个. 查一下采购申请单表,有如下示例数据.

Oracle工具sql

查询处于锁表中的表 SELECT      l.session_id SID,      l.locked_mode,      l.oracle_username,      l.os_user_name,      s.machine,      s.terminal,      o.object_name,      s.logon_time,      s.serial#   FROM      v$locked_object l,      all_objects o,      v$