一、查看DBID

(1)使用rman查看

$ rman target /Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jun 12 03:20:19 2015Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.connected to target database: DBTEST (DBID=1275017193)RMAN>

(2)使用sqlplus查看

SQL> select dbid,name,open_mode from v$database;   #查看数据库的dbidDBID           NAME           OPEN_MODE
-----------     -------        ---------------
1553428630        SHP            READ WRITE

(3)dump文件查看

#dump日志文件
SQL> alter system dump logfile ‘/u01/app/oracle/oradata/dbtest/redo01.log‘;#dump数据文件
SQL> alter system dump datafile ‘/u01/app/oracle/oradata/dbtest/users01.dbf‘ block min 1 block max 4;#dump归档日志
SQL> alter system dump  logfile ‘/home/oracle/arch/1_11_882154347.dbf‘;然后查看dump文件的内容
查看oracle 数据库的DBID

二、使用NID修改DBNAME和DBID

nid详解

我们知道,在数据库内部,数据库的DBNAME和DBID是数据库标识符,其中,DBID更是数据库的唯一标识符,如果要重新调整数据库的名字,一般是要重建控制文件,为数据库赋予新的名称 (DBNAME);
但是,更改实例的内部数据库标识符 (DBID) 是不可能的,这样对于恢复管理器 (RMAN)来说,由于是通过 DBID来区分数据库的,因此无法在同一个RMAN存储库中同时注册种子数据库和重建之后的数据库。
对此,Oracle专门提供的数据库名字修改工具NID(DBNEWID),解决了这个问题。
NID(DBNEWID)实用程序是在Oracle 10g中引入的,是一个数据库实用程序,位于 $ORACLE_HOME/bin 目录中,可以更改操作数据库的内部数据库标识符 (DBID) 和数据库名称 (DBNAME)。

NID用途:
只修改数据库的DBID(无法指定值修改);
只修改数据库的DBNAME;
同时修改数据库的DBNAME和DBID(无法指定值修改);

注意:

  1. 如果仅调整DBNAME,调整之后,数据库是不需要使用RESETLOGS选项就可以正常打开,数据库备份和存档日志都不会失效。调整DBNAME的影响是: 需要调整初始化参数文件中的db_name参数;需要重新创建 Oracle密码文件.
  2. 如果仅调整数据库的DBID,由于更改数据库的DBID是一个全局的操作,一旦数据库的DBID发生改变,对应该数据库的所有备份和存档日志将不再可用,所以在更改数据库DBID之后,必须使用RESETLOGS选项打开数据库,那么数据库会将联机重做日志的序列重置为1,因此,建议在调整数据库的DBID之后应立即对整个数据库进行备份。

NID 实用程序的参数:

[oracle@dkf ~]$ nid -helpDBNEWID: Release 19.0.0.0.0 - Production on Thu Dec 22 17:45:01 2022Copyright (c) 1982, 2019, 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[oracle@dkfdg ~]$ 翻译如下:
DBNEWID:发布11.2.0.4.0-2023年3月20日星期一16:46:15制作版权所有(c)19822011,Oracle和/或其附属公司。保留所有权利。关键字       描述                 (默认)
----------------------------------------------------
TARGET    用户名/密码                  (无)
DBNAME    新数据库名称              (无)
LOGFILE   输出日志                 (无)
REVERT    还原失败更改               否
SETNAME   仅设置新数据库名称          否
APPEND    附加到输出日志             否
HELP      显示这些消息               否
  • 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

在19c数据库上使用nid修改数据库DBID和DBNAME参数:

建议调整之前对数据库进行全量备份
建议在调整DBNAE和DBID前对数据库进行全备,全备备份脚本示例:

[oracle@dkf ~]$cat /oracle/ods_backup/bak0.sh
#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=dkf006
export DATE=`date +%F`
export BACK_DIR='/u01/app/rmanbak'
mkdir -p $BACK_DIR/$DATE
//u01/app/oracle/product/19.3.0/dbhome_1/bin/rman log=$BACK_DIR/$DATE/rman_backup_$DATE.log target / <<EOF
run{ CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE autobackup format for device type disk to '$BACK_DIR/$DATE/CONTROLFILE.%F'; ALLOCATE CHANNEL disk1 DEVICE TYPE DISK FORMAT '$BACK_DIR/$DATE/full_%d_%T_%s.bak'; ALLOCATE CHANNEL disk2 DEVICE TYPE DISK FORMAT '$BACK_DIR/$DATE/full_%d_%T_%s.bak'; ALLOCATE CHANNEL disk3 DEVICE TYPE DISK FORMAT '$BACK_DIR/$DATE/full_%d_%T_%s.bak'; SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; BACKUP  DATABASE SKIP INACCESSIBLE FILESPERSET 10 PLUS ARCHIVELOG FILESPERSET 20 DELETE ALL INPUT; SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; RELEASE channel disk1; RELEASE channel disk2; RELEASE channel disk3;
}
EOF
exit

1、只调整数据库的DBID

1、查询数据库的信息

SQL> select dbid, name from v$database;
DBID        NAME
---------- ---------
2651711443 dkf006

2、正常关闭数据库,并将数据库启动到mount状态

SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT

3、直接调用NID工具,连接数据库,不需要指定DBNAME

[oracle@dkf ~]$ nid target=sys/oracleDBNEWID: Release 19.0.0.0.0 - Production on Thu Dec 22 17:29:24 2022Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.Connected to database DKF006 (DBID=2651711443)Connected to server version 19.3.0Control Files in database:+DATA/DKF006/CONTROLFILE/current.261.1101088595Change database ID of database DKF006? (Y/[N]) => YProceeding with operation
Changing database ID from 2651711443 to 2674719348Control File +DATA/DKF006/CONTROLFILE/current.261.1101088595 - modifiedDatafile +DATA/DKF006/DATAFILE/system.257.110108848 - dbid changedDatafile +DATA/DKF006/DATAFILE/sysaux.258.110108852 - dbid changedDatafile +DATA/DKF006/DATAFILE/undotbs1.259.110108853 - dbid changedDatafile +DATA/DKF006/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.266.110108879 - dbid changedDatafile +DATA/DKF006/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.267.110108879 - dbid changedDatafile +DATA/DKF006/DATAFILE/users.260.110108853 - dbid changedDatafile +DATA/DKF006/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.268.110108879 - dbid changedDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/DATAFILE/system.272.110108943 - dbid changedDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/DATAFILE/sysaux.273.110108943 - dbid changedDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/DATAFILE/undotbs1.271.110108943 - dbid changedDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/DATAFILE/users.275.110108945 - dbid changedDatafile +DATA/DKF006/DATAFILE/test.280.110739837 - dbid changedDatafile +DATA/DKF006/TEMPFILE/temp.265.110108860 - dbid changedDatafile +DATA/DKF006/DBCED86261CB7148E0550A002762E1A4/TEMPFILE/temp.269.110108882 - dbid changedDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/TEMPFILE/temp.274.110108943 - dbid changedControl File +DATA/DKF006/CONTROLFILE/current.261.1101088595 - dbid changedInstance shut downDatabase ID for database DKF006 changed to 2674719348.
All previous backups and archived redo logs for this database are unusable.
Database has been shutdown, open database with RESETLOGS option.
Succesfully changed database ID.
DBNEWID - Completed succesfully.

4、 操作成功,打开数据库,会提示数据库需要用resetlogs打开:

SQL> startup
ORACLE instance started.Total System Global Area 1241510080 bytes
Fixed Size                  9134272 bytes
Variable Size             402653184 bytes
Database Buffers          822083584 bytes
Redo Buffers                7639040 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database openSQL>

5、使用resetlogs打开数据库:

SQL> alter database open RESETLOGS;Database altered.SQL>

2、只调整数据库的DBNAME

1、查询数据库的信息

SQL> select dbid, name from v$database;
DBID      NAME
---------- ---------
2651711443 dkf006

2、正常关闭数据库,并将数据库启动到mount状态

SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT

3、使用 DBNEWID (NID) 工具更改数据库的DBNAME

[oracle@dkf ~]$ nid TARGET=sys/oracle DBNAME=dkf007 SETNAME=YES DBNEWID: Release 19.0.0.0.0 - Production on Thu Dec 22 18:16:10 2022Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.Connected to database DKF006 (DBID=2674719348)Connected to server version 19.3.0Control Files in database:+DATA/DKF006/CONTROLFILE/current.261.1101088595Change database name of database DKF006 to DKF007? (Y/[N]) => YProceeding with operation
Changing database name from DKF006 to DKF007Control File +DATA/DKF006/CONTROLFILE/current.261.1101088595 - modifiedDatafile +DATA/DKF006/DATAFILE/system.257.110108848 - wrote new nameDatafile +DATA/DKF006/DATAFILE/sysaux.258.110108852 - wrote new nameDatafile +DATA/DKF006/DATAFILE/undotbs1.259.110108853 - wrote new nameDatafile +DATA/DKF006/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.266.110108879 - wrote new nameDatafile +DATA/DKF006/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.267.110108879 - wrote new nameDatafile +DATA/DKF006/DATAFILE/users.260.110108853 - wrote new nameDatafile +DATA/DKF006/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.268.110108879 - wrote new nameDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/DATAFILE/system.272.110108943 - wrote new nameDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/DATAFILE/sysaux.273.110108943 - wrote new nameDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/DATAFILE/undotbs1.271.110108943 - wrote new nameDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/DATAFILE/users.275.110108945 - wrote new nameDatafile +DATA/DKF006/DATAFILE/test.280.110739837 - wrote new nameDatafile +DATA/DKF006/TEMPFILE/temp.265.110108860 - wrote new nameDatafile +DATA/DKF006/DBCED86261CB7148E0550A002762E1A4/TEMPFILE/temp.269.110108882 - wrote new nameDatafile +DATA/DKF006/DBCEFC8A3ACE81CBE0550A002762E1A4/TEMPFILE/temp.274.110108943 - wrote new nameControl File +DATA/DKF006/CONTROLFILE/current.261.1101088595 - wrote new nameInstance shut downDatabase name changed to DKF007.
Modify parameter file and generate a new password file before restarting.
Succesfully changed database name.
DBNEWID - Completed succesfully.

DBNEWID 在尝试对文件进行 I/O 之前在控制文件(不是数据文件)的头中执行验证。如果验证成功,则 DBNEWID 会提示确认,更改控制文件中的数据库名称,然后退出,DBNEWID 成功完成后,数据库会自动进行关闭。

4、更新pfile文件并创建密码文件(如有必要)
此实用程序不会更改 pfile 中的数据库名称,因此请手动更改 pfile 中的数据库名称 (DB_NAME) 并创建密码文件(如有必要)。

如果操作失败,要恢复更改,请再次运行 DBNEWID 实用程序,指定 REVERT 关键字。

[oracle@dkfdg ~]$ nid TARGET=sys/oracle  REVERT=YES LOGFILE=rollback.log

3、同时更改数据库的DBNAME和DBID

1、查询数据库的信息

SQL> select dbid, name from v$database;
DBID      NAME
---------- ---------
2651711443 dkf006

2、正常关闭数据库,并将数据库启动到mount状态

SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT

3、使用 DBNEWID (NID) 工具更改数据库的DBNAME和DBID
注意:DBNEWID 实用程序在尝试对文件进行 I/O 之前在数据文件和控制文件的标头中执行验证。如果验证成功,则 DBNEWID 会提示确认操作(除非您指定日志文件,在这种情况下它不会提示),更改所有数据文件中的 DBID,数据库会进行关闭,然后退出。

$ nid TARGET=sys/password DBNAME=dkf007 LOGFILE =change_dbname.log

4、更新spfile文件并创建密码文件(如有必要)
此实用程序不会更改 spfile 中的数据库名称,因此请手动更改 spfile 中的数据库名称 (DB_NAME) 并创建密码文件(如有必要)。

三、Oracle 设置指定DBID

在一些特殊的情况下,我们可能需要修改数据库的DBID,有时候可能仅仅是修改控制文件的。
从Oracle10g开始,Oracle在DBMS_BACKUP_RESTORE包中增加了几个PROCEDURE用来完成这个工作。

查询源数据库的DBID

用rman登陆数据库或者select dbid from v$database;。

源DBID=392820279。

登陆到目标数据库,查看DBID

[oracle@MICHAEL ~]$ rman target /Recovery Manager: Release 10.2.0.1.0 - Production on Tue Apr 14 00:27:31 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.connected to target database: MICHAEL (DBID=393099115)RMAN>或:[oracle@MICHAEL ~]$ sqlplus  /  as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Tue Apr 14 00:33:28 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> select dbid from v$database;DBID----------393099115

使用DBMS_BACKUP_RESTORE设置DBID

如果你遇到数据库DBMS_BACKUP_RESTORE不存在的情况:

SQL> DESC DBMS_BACKUP_RESTORE
ERROR:
ORA-04043: 对象 DBMS_BACKUP_RESTORE 不存在

可以通过运行 $ORACLE_HOME/rdbms/admin/dbmsbkrs.sql 来创建!

相关参数设置:

SQL> exec dbms_backup_restore.nidbegin(‘michael’,‘MICHAEL’,‘392820279’,393099115,0,0,10)

Param 1:目标数据库的实例名,即dbname对应的VALUE。

Param 2:为更改后的实例名,必须大写。

Param 3:为更改后的DBID。

Param 4:为原来的DBID。

1、连接数据库

[oracle@MICHAEL ~]$ sqlplus "/ as sysdba"

2、修改DBID

SQL> show parameter db_nameNAME        TYPE        VALUE
-------- ----------- ------------
db_name    string      michaelSQL> exec dbms_backup_restore.nidbegin('michael','MICHAEL','392820279', '393099115',0,0,10)
PL/SQL procedure successfully completed.

此时查看发现DBID还是原来的,并未修改。

SQL> select dbid from v$database;DBID
----------
393099115

接下来执行下面步骤来使修改生效:

SQL> variable a number;
SQL> variable b number;
SQL> variable c number;SQL> exec dbms_backup_restore.nidprocessdf(0,0,:a,:b,:c);
PL/SQL procedure successfully completed.SQL> print :aA
----------
0SQL> print :bB
----------
1SQL> print :cC
----------
1SQL> exec dbms_backup_restore.nidprocesscf(:a,:b);
PL/SQL procedure successfully completed.SQL> print :aA
----------
1SQL> print :bB
----------
1SQL> exec dbms_backup_restore.nidend;
PL/SQL procedure successfully completed.

3、验证修改结果

SQL> select dbid from v$database;DBID
----------
392820279

oracle数据库之DBNAME和DBID相关推荐

  1. Oracle使用NID调整数据库的DBNAME和DBID

    我们知道,在数据库内部,数据库的DBNAME和DBID是数据库标识符,其中,DBID更是数据库的唯一标识符,如果要重新调整数据库的名字,一般是要重建控制文件,为数据库赋予新的名称 (DBNAME): ...

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

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

  3. 修改oracle数据库的名字

    最近闲来无事,决定修改一下数据库的名字,记得曾经学过通过重建控制文件来修改数据库的名字,网上找了下也可以通过oracle自带的nid修改数据库的名字,不过这个方法有些麻烦,并且修改的数据库名字不能带& ...

  4. 使用nid修改dbname和dbid

    系统 rh5.8 oracle 10.2.0.5 使用nid实验之前要明白dbname和dbid以及sid的关系 在使用dbca建库的时候,有一步要填dbname和sid,一般情况下填完dbname后 ...

  5. 修改oracle数据库的名称

    修改oracle数据库的名称 修改oracle数据库的名称需要同时在控制文件和参数文件中进行修改.修改控制文件中数据库的名称使用操作系统命令nid,修改参数文件中数据库的名称使用alter syste ...

  6. 怎么给oracle数据库建库,完全Oracle安装建库手册

    Oracle12C R2 for Centos 7 背景介绍 安装配置这东西吧,真没啥可写的,但是你说不写详细点吧,真的好多学员搞不懂,所以呢,熊熊思前想后,打算把自己从头到尾怎么安装的,完全写一下, ...

  7. Oracle数据库联邦,使用联邦数据库将oracle表迁移到DB2(9.7)中的脚本说明

    由于兄弟项目组要测试,需要将oracle中的表迁移到db2中,操作步骤如下: #1 在windows数据库中建联邦数据库服务器\用户映射 connect to sample CREATE WRAPPE ...

  8. Oracle 数据库常用操作语句大全

    原文:Oracle 数据库常用操作语句大全 一.Oracle数据库操作 1.创建数据库      create database databasename 2.删除数据库      drop data ...

  9. python - DBUtils 连接池减少oracle数据库的连接数

    问题: 接到需求,告知项目的oracle连接次数过多,对系统造成太过大的负担,要求减少oracle数据库的连接次数 分析: 仔细分析代码以后,发现产生问题的原因,在于之前要求提升oracle监控的监控 ...

最新文章

  1. TFRecord tf.train.Feature
  2. 【组队学习】【32期】动手学数据分析
  3. PyTorch入门与代码模板
  4. pandas使用iloc函数将dataframe的所有数据行反序(reverse the order of rows in dataframe)
  5. 低潮过后,未来医疗可穿戴市场将如何发展?
  6. oracle绑定变量赋值,Oracle教程之绑定变量
  7. 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)...
  8. 记一次批量处理数据库中的敏感信息
  9. linux0.11文件分析
  10. delete hive_Hive高级调优
  11. UVAPOJ离散概率与数学期望入门练习[4]
  12. 电磁波传播相位是否会变化_民众纷纷转向网上购物,却又担心包裹信件是否会传播病毒?!...
  13. 动环监控调试线_电力综合监控系统解决方案-【斯必得智慧物联】
  14. MySQL课设小问题_MySQL必会的50个常见面试练习题
  15. Github 开源趋势榜 TOP 1:英伟达升级发布二代 StyleGAN!
  16. CentOS 逻辑卷扩容
  17. Windows Mysql报错:Access denied for user ‘root‘ @ localhost useing password no 或者 yes 解决
  18. 专利学习笔记7:说明书附图尺寸
  19. 千兆以太网交叉线_什么是交叉以太网电缆? 比较交叉与跳线
  20. 简明扼要:numpy.random.seed()用法

热门文章

  1. xr的软件适配是被放弃了吗_什么是放弃软件?
  2. Ubuntu系统使用输入法只能输入英文不能输入中文解决方法
  3. 第五人格8月8日服务器维护几小时,第五人格6月8日无法登陆是怎么回事
  4. MiniGUI 体系结构之四 图形抽象层和输入抽象层及 Native Engine 的实现(一)
  5. html网页颜色代码表(必备)
  6. excel想把B列、C列的内容插入到A列里面怎么操作
  7. 操作系统--课堂问答笔记02--习题答案
  8. rsync与 Inotify概述
  9. 第一次助教总结——通信3班
  10. Unity——腾讯IM即时通讯SDK接入