暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

使用Oracle nid命令更改数据库名称

原创 听见风的声音 2023-07-28
487

dba在部署应用或者数据库迁移的时候,常常需要更改数据库的名称或者数据库id。Oracle提供了一个命令来完成这个操作。

1 使用nid命令更改数据库名称

nid命令位于Oracle_home/bin目录下,在将此目录设置为操作系统环境变量PATH路径时可以直接使用。使用nid命令的前提是数据文件,控制文件没有异常,且数据库处于归档模式下。使用nid命令连接数据库更改数据库id或者数据库名称时,数据库需要启动至mount模式下。
如只更改数据库id,则只需要在nid命令后面加一个target参数,如同时需要更改数据库名称,需要再加上一个dbname参数,参数的值是数据库更改后的名称。

[oracle@dbserver ~]$ nid target=sys dbname=testdb DBNEWID: Release 19.0.0.0.0 - Production on Mon Jun 26 16:21:06 2023 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. ### 输入sys密码 Password: ###连接至数据库后nid命令自动发现数据库的dbid和控制文件 Connected to database ORCL (DBID=1668353783) Connected to server version 19.3.0 Control Files in database: /opt/oracle/oradata/ORCL/control01.ctl /opt/oracle/oradata/ORCL/control02.ctl ### 在下面提示后输入Y确认更改数据库id和名称 Change database ID and database name ORCL to TESTDB? (Y/[N]) => y Proceeding with operation ### 显示更改前后的dbid及数据库名称 Changing database ID from 1668353783 to 2923884663 Changing database name from ORCL to TESTDB #### 调整控制文件 Control File /opt/oracle/oradata/ORCL/control01.ctl - modified Control File /opt/oracle/oradata/ORCL/control02.ctl - modified #### 调整数据文件 Datafile /opt/oracle/oradata/ORCL/system01.db - dbid changed, wrote new name Datafile /opt/oracle/oradata/ORCL/sysaux01.db - dbid changed, wrote new name Datafile /opt/oracle/oradata/ORCL/undotbs01.db - dbid changed, wrote new name Datafile /opt/oracle/oradata/ORCL/users01.db - dbid changed, wrote new name Datafile /opt/oracle/oradata/ORCL/temp01.db - dbid changed, wrote new name ### dbid更改后,写入新的数据库名称至控制文件 Control File /opt/oracle/oradata/ORCL/control01.ctl - dbid changed, wrote new name Control File /opt/oracle/oradata/ORCL/control02.ctl - dbid changed, wrote new name ### 关闭实例 Instance shut down Database name changed to TESTDB. ### 数据库id和名称更改后,需要调整参数文件,如果使用password文件,需要重新生成。 Modify parameter file and generate a new password file before restarting. Database ID for database TESTDB changed to 2923884663. ### 以前的备份和归档日志文件都已经不可用。需要使用RESETLOGS重启数据库, All previous backups and archived redo logs for this database are unusable. Database has been shutdown, open database with RESETLOGS option. Succesfully changed database name and ID. DBNEWID - Completed succesfully.
复制

2 调整参数文件

数据库的名称更改后,设置一下环境变量ORACLE_SID为TESTDB,更改参数为文件的名称,原来的参数文件名称是 spfileORCL.ora,需要更改为spfileTESTDB.ora。

[oracle@dbserver ~]$ export ORACLE_SID=TESTDB; [oracle@dbserver ~]$ cd $ORACLE_HOME/dbs [oracle@dbserver dbs]$ ls c-1668353783-20230626-00 hc_ORCLCDB.dat hc_ORCL.dat init.ora lkORCL orapwORCL snapcf_ORCL.f spfileORCL.ora [oracle@dbserver dbs]$ mv spfileORCL.ora spfileTESTDB.ora
复制

然后将数据库启动至nomount模式下,更改数据库名称。

alter system set db_name='TESTDB' scope=spfile; alter system set db_unique_name='TESTDB' scope=spfile;
复制

3 重新启动数据库

ORACLE instance started. Total System Global Area 3707763120 bytes Fixed Size 8903088 bytes Variable Size 654311424 bytes Database Buffers 2617245696 bytes Redo Buffers 7872512 bytes In-Memory Area 419430400 bytes Database mounted. --数据库不能打开,提示必须使用RESETLOGS or NORESETLOGS选项 ORA-01589: must use RESETLOGS or NORESETLOGS option for database open --使用RESETLOGS选项打开数据库 SQL> alter database open RESETLOGS; Database altered. --检查数据库实例名称 SQL> select instance_name, status from v$instance; INSTANCE_NAME STATUS ---------------- ------------ TESTDB OPEN --检查数据库名称 SQL> select NAME,DB_UNIQUE_NAME from v$database; NAME DB_UNIQUE_NAME --------- ------------------------------ TESTDB TESTDB、
复制
最后修改时间:2023-07-28 10:01:28
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

星星之火
暂无图片
9月前
评论
暂无图片 0
这个世界根本不存在“不会做”、“不能做”,只有“不想做”和“不敢做”,当你失去所有依靠的时候,你自然就什么都会了。
9月前
暂无图片 点赞
评论