DBID是数据库的唯一标识符,在一些特殊场合会涉及到DBID的相关内容,本篇文章的目的是演示将DB_NAME的值从ORCL1修改为ORCL。

一.查看当前的环境。
[oracle@rhel2 ~]$ echo $ORACLE_SID
orcl1
[oracle@rhel2 ~]$ sql

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Nov 21 12:41:26 2011

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

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> show parameter db_name

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
db_name         string  ORCL1
SQL> show parameter service_name

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
service_names        string  ORCL1
SQL> show parameter instance_name

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
instance_name        string  orcl1
SQL> select dbid,name from v$database;

DBID NAME
---------- ---------
1152218060 ORCL1

SQL> !
[oracle@rhel2 ~]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 21-NOV-2011 12:42:06

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                20-NOV-2011 23:28:15
Uptime                    0 days 13 hr. 13 min. 50 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel2)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "ORCL1_XPT" has 1 instance(s).
  Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl1" has 1 instance(s).
  Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl1", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@rhel2 ~]$ exit
exit

二.启动数据库到MOUNT模式。
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  369098752 bytes
Fixed Size      2020864 bytes
Variable Size    113248768 bytes
Database Buffers   251658240 bytes
Redo Buffers      2170880 bytes
Database mounted.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

三.使用NID工具将DB_NAME从orcl1修改为orcl。
[oracle@rhel2 ~]$ nid target=sys/oracle dbname=orcl

DBNEWID: Release 10.2.0.1.0 - Production on Mon Nov 21 12:43:13 2011

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

Connected to database ORCL1 (DBID=1152218060)

Connected to server version 10.2.0

Control Files in database:
    /u01/app/oracle/oradata/orcl/control01.ctl
    /u01/app/oracle/oradata/orcl/control02.ctl
    /u01/app/oracle/oradata/orcl/control03.ctl

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

Proceeding with operation
Changing database ID from 1152218060 to 1295536737
Changing database name from ORCL1 to ORCL
    Control File /u01/app/oracle/oradata/orcl/control01.ctl - modified
    Control File /u01/app/oracle/oradata/orcl/control02.ctl - modified
    Control File /u01/app/oracle/oradata/orcl/control03.ctl - modified
    Datafile /u02/system01.dbf - dbid changed, wrote new name
    Datafile /u02/sysaux01.dbf - dbid changed, wrote new name
    Datafile /u02/users01.dbf - dbid changed, wrote new name
    Datafile /u02/undotbs01.dbf - dbid changed, wrote new name
    Datafile /u02/temp01.dbf - dbid changed, wrote new name
    Control File /u01/app/oracle/oradata/orcl/control01.ctl - dbid changed, wrote new name
    Control File /u01/app/oracle/oradata/orcl/control02.ctl - dbid changed, wrote new name
    Control File /u01/app/oracle/oradata/orcl/control03.ctl - dbid changed, wrote new name
    Instance shut down

Database name changed to ORCL.
Modify parameter file and generate a new password file before restarting.
Database ID for database ORCL changed to 1295536737.
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.

四.新建密码文件。
[oracle@rhel2 dbs]$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle entries=5

五.修改参数文件中的DB_NAME参数值。
由于nid修改了控制文件和数据文件中的DB_NAME值,所以将参数文件中的DB_NAME修改来和控制文件、数据文件相同,修改为ORCL。
[oracle@rhel2 ~]$ echo $ORACLE_SID
orcl1
[oracle@rhel2 ~]$ sql

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Nov 21 12:43:33 2011

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  369098752 bytes
Fixed Size      2020864 bytes
Variable Size    113248768 bytes
Database Buffers   251658240 bytes
Redo Buffers      2170880 bytes
SQL> show parameter db_name

NAME         TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_name         string
ORCL1
SQL> alter system set db_name=orcl scope=spfile;

System altered.

SQL> shutdown immediate
ORA-01507: database not mounted

ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  369098752 bytes
Fixed Size      2020864 bytes
Variable Size    113248768 bytes
Database Buffers   251658240 bytes
Redo Buffers      2170880 bytes
Database mounted.

确定DB_NAME修改之后,数据库打开必须以RESETLOGS的方式打开。
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open resetlogs;

Database altered.

注意:以resetlogs模式打开数据库之后需要立即执行全库备份。

六.查看修改后的环境。

修改后的数据库DB_NAME和Service_name都会自动发生变化,instance_name不会发生变化。
SQL> show parameter db_name

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
db_name         string  ORCL
SQL> show parameter service

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
service_names        string  ORCL
SQL> show parameter instance_name

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
instance_name        string  orcl1

DBID和数据库名称都发生了变化。
SQL> select dbid,name from v$database;

DBID NAME
---------- ---------
1295536737 ORCL

SQL> !
监听状态中,Service的名称自动变成了ORCL,这是由Service_name控制的,Instance没有发生变化,这是由instance_name控制的。
[oracle@rhel2 ~]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 21-NOV-2011 12:45:06

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                20-NOV-2011 23:28:15
Uptime                    0 days 13 hr. 16 min. 50 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel2)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "ORCL" has 1 instance(s).
  Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "ORCL_XPT" has 1 instance(s).
  Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl1", status READY, has 1 handler(s) for this service...
The command completed successfully

从以上的例子还可以看出,环境变量ORACLE_SID也没有发生变化,这只是用于找到参数文件而已。

重建控制文件不会导致DBID和数据库名称发生变化。例子如下:
SQL> select dbid,name from v$database;

DBID NAME
---------- ---------
1295536737 ORCL

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  369098752 bytes
Fixed Size      2020864 bytes
Variable Size    117443072 bytes
Database Buffers   247463936 bytes
Redo Buffers      2170880 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u02/redo01.log'  SIZE 50M,
  GROUP 2 '/u02/redo02.log'  SIZE 50M,
  GROUP 3 '/u02/redo03.log'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/u02/system01.dbf',
  '/u02/sysaux01.dbf',
  '/u02/users01.dbf',
  '/u02/undotbs01.dbf'
CHARACTER SET ZHS16GBK
;

Control file created.

SQL> alter database open;

Database altered.

SQL> select dbid ,name from v$database;

DBID NAME
---------- ---------
1295536737 ORCL

Oracle NID工具修改数据库DBID和数据库名称相关推荐

  1. 使用nid工具修改db_name和DBID

    #########原来的################## SQL> select dbid from v$database; DBID ---------- 1490502756 SQL&g ...

  2. 修改 oracle dbid,更改数据库DBID

    当克隆一个数据库到另外一台机器上,具有相同的数据库名称或者如果一个新的数据库名称是通过重建的控制文件, 那么需要改变DBBID,特别是如果是新的数据库在相同的rman catalog是注册. 尤其是如 ...

  3. 使用nid的修改数据库名

    Use Nid to Change dbname-NID的用法 Nid是Oracle从9iR2开始提供的工具,可以用来更改数据库名称,而无需通过之前重建控制文件等繁琐方式. 需要说明的是,虽然这个工具 ...

  4. Oracle10表数据编辑器,Oracle ORACLE 快速批量导入文本数据到数据库(sqlldr工具)方法与分析 (Windows CMD 方式)...

    Oracle ORACLE 快速批量导入文本数据到数据库(sqlldr工具)方法与分析 (Windows CMD 方式) 在实际生产环境中,常会碰到将一些如通过通讯接口传过来的数据(文本文件 txt) ...

  5. Oracle数据库:oracle启动,oracle客户端工具plsql安装教程和使用方法

    Oracle数据库:oracle启动,oracle客户端工具plsql安装教程和使用方法 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的 ...

  6. oracle数据库怎么更改表名,oracle如何修改表名_数据库

    Oracle建表语句是什么_数据库 Oracle建表语句是CREATE TABLE tablename(column_name datatype).其中tablename是要创建的表名,column_ ...

  7. oracle数据库超大表名更改,oracle如何修改表名_数据库,oracle,修改表名

    Oracle建表语句是什么_数据库 Oracle建表语句是CREATE TABLE tablename(column_name datatype).其中tablename是要创建的表名,column_ ...

  8. 使用nid命令修改 db name 及 dbid

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

  9. oracle为什么不用指定数据库,两个数据库怎么保持数据正确显示

    当前位置:我的异常网» Oracle管理 » 两个数据库怎么保持数据正确显示 两个数据库怎么保持数据正确显示 www.myexceptions.net  网友分享于:2015-08-26  浏览:23 ...

最新文章

  1. python3 python2 字符串与hex互转区别
  2. 《Debug Hacks》和调试技巧
  3. 2的幂次方表示(信息学奥赛一本通-T1208)
  4. python数据抓取课程_Python爬虫入门教程 22-100 CSDN学院课程数据抓取
  5. 【CSS】解决图片和盒子底部产生的缝隙问题
  6. Proxy pattern-代理模式
  7. BIO、NIO、AIO差别
  8. C语言如何制作dIL文件,C语言学习笔记———指针
  9. Redis进程异常退出排查
  10. 达内JAVA云笔记_达内云笔记项目完整代码+注释
  11. 计算机学院三下乡,重庆理工大学计算机学院”三下乡“教师情牵故乡
  12. vnc远程控制软件下载,四款神级能够下载的vnc远程控制软件
  13. GSM、PLMN区、msc区、位置区、基站区、小区、TAC、CI 名词解析
  14. Java JDK8/JAVA8以及后版本收费后还能用吗
  15. c语言开发的cli,Package - cyy-cli
  16. Python——时间与时间戳之间的转换
  17. office如何从非第一页开始插入页码
  18. 微信小程序中判断用户是否已关注公众号的两种实现
  19. weblogic修改密码
  20. Eclipse中如何查看使用的JDK版本?

热门文章

  1. 初接触设计模式--简单工厂(二)
  2. 阻塞与非阻塞 异步 与同步
  3. java判断字符串是否为乱码
  4. CentOS7添加Nginx为系统服务
  5. 万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)
  6. WCF简单教程(4) 数据契约
  7. SQL Server差异备份的备份/还原原理
  8. Extjs4.x (MVC)Controller中refs以及Ext.ComponentQuery解析
  9. 分割字符串函数strtok
  10. 关于C语言goto的使用